SDKAppID and SDKSecretKey, then proceed to the next section.


SDKAppID and SDKSecretKey in the console overview panel. You will need both to run the Demo.
SDKSecretKey secure, do not disclose it!


// 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: the SDKAppID you obtained abovesenderUserID: the userID of the sender (user1)senderUserSig: the UserSig generated for the senderreceiverUserID: the userID of the recipient// 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: Enter your sdkAppID here.private let senderUserID = "" // TODO: Enter your userID here (sender).private let senderUserSig = "" // TODO: Enter your UserSig here.private let receiverUserID = "" // TODO: Enter 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 provide a valid UserSig."return}// Login 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}}}}

Was this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback