SDKAppID 及 SDKSecretKey 并直接跳转到下一节。


SDKAppID、SDKSecretKey,后续运行 Demo 时需要用到这两个信息。



// API location: AtomicXCore/LoginStore/// Login////// - Parameter sdkAppID: SDK application ID./// - Parameter userID: User ID./// - Parameter userSig: User signature./// - Parameter completion: Completion callback.public func login(sdkAppID: Int32, userID: String, userSig: String, completion: AtomicXCore.CompletionClosure?)
LoginStore.shared.login(sdkAppID: sdkAppID, userID: userID, userSig: userSig) { result inswitch result {case .success:print("Login success, userID: \\(userID)")case .failure(let error):print("Login failed: \\(error.code), \\(error.message)")}}
sdkAppID,上文获取的 sdkAppID。senderUserID,发送消息者的 userID(也就是上文的 user1)。senderUserSig,上文获取到的,发送消息者的 userSig。receiverUserID,接受消息者的 userID。// ContentView.swiftimport SwiftUIstruct ContentView: View {var body: some View {// Load ChatPage in ContentViewChatPage()}}// ChatPage.swiftimport AtomicXimport AtomicXCoreimport SwiftUIpublic struct ChatPage: View {@StateObject private var themeState = ThemeState.shared@State private var isLoggedIn = false@State private var isLoggingIn = true@State private var loginError: String? = nilprivate let sdkAppID: Int32 = 1234567890 // TODO: Fill in the sdkAppID here.private let senderUserID = "" // TODO: Fill in your userID here, you are the sender.private let senderUserSig = "" // TODO: Fill in your generated userSig here.private let receiverUserID = "" // TODO: Fill in the receiver's userID here.private var conversationID: String {// C2C conversationID: "c2c_\\(userID)", Group conversationID: "group_\\(groupID)""c2c_\\(receiverUserID)"}public var body: some View {Group {if isLoggedIn {chatContentView} else if isLoggingIn {ProgressView("Logging in...")} else {VStack(spacing: 12) {Image(systemName: "exclamationmark.triangle").font(.system(size: 40)).foregroundColor(.orange)Text(loginError ?? "Login failed").foregroundColor(.secondary)}}}.environmentObject(themeState).onAppear {login()}}// MARK: - Chat Contentprivate var chatContentView: some View {VStack(spacing: 0) {navigationBarViewDivider().background(.gray)VStack(spacing: 0) {// Add MessageList to this page.MessageList(conversationID: conversationID,onUserClick: { userID inprint("onUserClick: \\(userID)")})// Add MessageInput to this page.MessageInput(conversationID: conversationID)}.ignoresSafeArea(.keyboard)}}// MARK: - Navigation Barprivate var navigationBarView: some View {HStack {Image(systemName: "person.circle.fill").font(.system(size: 32)).foregroundColor(.gray)Text(conversationID).font(.system(size: 17, weight: .semibold)).foregroundColor(themeState.colors.textColorPrimary)Spacer()}.padding(.horizontal, 16).frame(height: 44)}// MARK: - Loginprivate func login() {guard !senderUserSig.isEmpty else {isLoggingIn = falseloginError = "userSig is empty. Please fill in a valid userSig."return}// Login is required when ChatPage appears.LoginStore.shared.login(sdkAppID: sdkAppID, userID: senderUserID, userSig: senderUserSig) { result inswitch result {case .success:print("Login success, userID: \\(senderUserID)")isLoggedIn = trueisLoggingIn = falsecase .failure(let error):print("Login failed: \\(error.code), \\(error.message)")loginError = "Login failed: \\(error.code), \\(error.message)"isLoggingIn = false}}}}

文档反馈