Smooch is the best way to have personal, rich conversations with people on your website or customers on any device

Overview

Smooch

Pod Version Platform License Carthage compatible

Smooch is the best way to have personal, rich conversations with people on your website or customers on any device. Our features, integrations and developer-friendly APIs empower companies to connect with their customers in a whole new way.

The Smooch iOS SDK will add in-app messaging to your iOS app. Customers will be able to talk to you from your app, while you manage conversations using your favorite business apps.

  • Maximize development productivity with a single codebase across platforms and add more channels anytime.
  • Build better relationships with messaging that feels and looks native to your app.
  • Delight your customers with the most engaging conversational experience using rich messaging.
  • Sync conversations across every device and channel your customers use.
  • Bring every conversation into your existing business apps. No new tool to learn. See all integrations.

Sign up and get an app id: https://app.smooch.io/signup.

CocoaPods:

pod "Smooch"
pod update

Carthage:

binary "https://raw.githubusercontent.com/smooch/smooch-ios/master/Smooch.json"
carthage update

Obj-C:

[Smooch initWithSettings:[SKTSettings settingsWithIntegrationId:@"YOUR_INTEGRATION_ID"] completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
        // Your code after init is complete
    }];
[Smooch show];

Swift:

Smooch.initWith(SKTSettings(integrationId: "YOUR_INTEGRATION_ID")) { (error: Error?, userInfo: [AnyHashable : Any]?) in
            // Your code after init is complete
        }
Smooch.show()

Our Docs and full install guide.

Also, check out Smooch Help Kit for even more features!

Comments
  • 10.1.1 IOS Smooch - Login hangs

    10.1.1 IOS Smooch - Login hangs

    Can someone see why Smooch login:jwt is sooo slow. It sometimes never returns for us.

    It appears like maybe a hosting problem?

    PROD_SMOOCH_INTEGRATION_ID_IOS=5d542d0f49ae740011c86XXXXXXXXXXXXX

    opened by billnbell 22
  • Provided credentials were invalid

    Provided credentials were invalid

    I am trying to login a userID with JWT. I am getting this log. Provided credentials were invalid. Either your app id, JWT, or both are incorrect.

    How to debug this?

    Here is my iOS swift4 code for initSmooch()

      `func initSmooch(userID:String, guest_name:String){
        
        if (UserDefaultsManager().getFirebaseConfiguration()){
            
            print("useSmoochProd \(String(describing: self.jamesAppSettings?.homeSupportConfig?.useSmoochProd))")
            
            if(self.jamesAppSettings?.homeSupportConfig?.useSmoochProd)!{
                smoochSettings = SKTSettings(appId: AppUtils.smooch_app_id_live)
            }else{
                smoochSettings = SKTSettings(appId: AppUtils.smooch_app_id_staging)
            }
        }
        
        Smooch.initWith(smoochSettings!) { (error: Error?, userInfo: [AnyHashable : Any]?) in
            
            // Your code after init is complete
            print("initWith", "called");
            
            if(error != nil){
                print("error smooch init", error!.localizedDescription); // error smooch init Bad status code : 401 unauthorized
            }
            
            self.smoochLogIn(userID:userID, guest_name:guest_name)
        }
    }`
    

    I am getting this too here Provided credentials were invalid. Either your app id, JWT, or both are incorrect.

    here is my smoochLogin() code

      `func smoochLogIn(userID:String, guest_name:String){
        var jwt:String = "";
        
        if(self.jamesAppSettings?.homeSupportConfig?.useSmoochProd)!{
            jwt = JWT.encode(claims: ["scope": "app"], algorithm: .hs256(AppUtils.smooch_key_id_live.data(using: .utf8)!))
        }else{
            jwt = JWT.encode(claims: ["scope": "app"], algorithm: .hs256(AppUtils.smooch_key_id_staging.data(using: .utf8)!))
        }
        
        Smooch.login(userID, jwt: jwt) { ( error:Error? , userInfo:[AnyHashable : Any]?) in
    
            // Your code after login is complete
            
            let fullNameArr = guest_name.characters.split{$0 == " "}.map(String.init)
            
            if(fullNameArr.count > 1){
                
                SKTUser.current()?.firstName = fullNameArr[0]
                SKTUser.current()?.lastName = fullNameArr[1]
                
            }else{
                
                SKTUser.current()?.firstName = fullNameArr[0]
                SKTUser.current()?.lastName = fullNameArr[0]
                
                let fullNameArr = guest_name.characters.split{$0 == "-"}.map(String.init)
                
                if(fullNameArr.count > 1){
                    
                    SKTUser.current()?.firstName = fullNameArr[0]
                    SKTUser.current()?.lastName = fullNameArr[1]
                }
            }
        }
    }`
    

    I am using the following JWT lib for swift https://github.com/kylef/JSONWebToken.swift

    opened by qadirsuh 21
  • Using SupportKit (2.10.1) with Xcode 7 causes lots and lots of warnings

    Using SupportKit (2.10.1) with Xcode 7 causes lots and lots of warnings

    SupportKit added through CocoaPods.

    Xcode 7 shows hundreds of warnings similar to the following two:

    warning: Could not resolve external type c:objc(cs)NSDate
    while processing /Users/ekurutepe/Development/myapp-ios/Pods/SupportKit/SupportKit.framework/SupportKit(SKTMessage.o):
    
    warning: /var/folders/wx/0_hjrq2j6px2mwqb2yln07v00000gn/C/org.llvm.clang.Mike/ModuleCache/1FPYCAC9U2QBN/UIKit-2LM3EQU7VVY4O.pcm: No such file or directory
    while processing /Users/ekurutepe/Development/myapp-ios/Pods/SupportKit/SupportKit.framework/SupportKit(SKTSwipeView.o):
    
    opened by ekurutepe 20
  • Latest Smooch SDK causes crash on launch for iOS 9.3.5

    Latest Smooch SDK causes crash on launch for iOS 9.3.5

    I'm submitting a ...

    • [x] bug report

    What is the current behavior? Builds using Smooch iOS SDK 6.10.X via Cocoapods causes a dylib crash on launch for devices running iOS 9.3.5. This bug does not happen when the app is built directly to the device either as a debug or release target; Only via distribution (TestFlight, App Store) does the app crash immediately at launch due to this dylib error.

    Recompiling the app with 6.8.1 does not cause the same crash. I did not test a build using 6.9.X.

    Please provide the steps to reproduce and, if possible, a minimal demo of the problem. Ideally a sample project Due to being unable to reproduce this via Xcode I didn't have the time to make a demo and upload it via testflight for a full battery of version tests.

    What is the expected behavior? Including Smooch via Cocoapods should not crash on iOS 9.3.5.

    Other information (e.g. detailed explanation, stack traces, related issues, suggestions how to fix, links for us to have context, eg. Stack Overflow, etc) Here is a partial crash log. I can provide more upon request.

    Date/Time:           2018-10-12 11:05:45.45 -0300
    
    Launch Time:         2018-10-12 11:05:42.42 -0300
    
    OS Version:          iOS 9.3.5 (13G36)
    
    Report Version:      104
    
    
    
    Exception Type:  EXC_BREAKPOINT (SIGTRAP)
    
    Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe
    
    Triggered by Thread:  0
    
    
    
    Filtered syslog:
    
    None found
    
    
    
    Dyld Error Message:
    
    Dyld Message: Library not loaded: @rpath/Smooch.framework/Smooch
    
      Referenced from: /var/containers/Bundle/Application/03C66C4A-E5D5-47DB-9074-B7AD34825552/MyApp.app/MyApp
    
      Reason: image not found
    
      Dyld Version: 390.7
    
    opened by warpling 19
  • Smooch 6.10.2 App crash In smooch [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[4]

    Smooch 6.10.2 App crash In smooch [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[4]

    Fatal Exception: NSInvalidArgumentException *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[4] This crash is happening inside smooch.

    We are doing following task with smooch in App delegate class:-

    1. setup smooch
    2. logout smooch
    3. login smooch

    In production its crashing with no proper info is coming to crashlytics log, please giv e some in-sight about this issue why this happening.

    Thanks in advance

    opened by UditHD 17
  • Can Smooch initialize with different apptoken on One App ?

    Can Smooch initialize with different apptoken on One App ?

    Hi guys.. i have question about Smooch. My company have 3 off different apptoken that representing their partner, and they want the app to be able to chat to this different apptoken in 1 iOS or android app I already provided a list view to the partner itself, and when i click on one of the partner it able to initialize the Smooch with this first partner. Then when i click the other partner, it gv me an error that smooch already initialize even if i send different apptoken. Then i am trying to create an array of Smooch Class , but i realize that i cant create variable of Smooch itself

    Example :

    var smooch = Smooch.init(withSettings:xxx) --> this cause an error if that Smooch.init is a void function.

    they also want to the app able to get push notification from different message coming from different partner that already initialize.

    but then before i go further, is it possible to Smooch to handle that ? or at least am i able to initialize Smooch with different apptoken on one App ?

    opened by abadikaka 15
  • Crash when receiving smooch notifications with Smooch Chat window open.

    Crash when receiving smooch notifications with Smooch Chat window open.

    scenario: in a flow hitting a button in chat triggers additional messages, we're seeing a consistent crash for one of our internal users when the new messages come in. Other users seem to be unaffected. this is with v5.4.0.

    not much in the stacktrace, other than the below:

    Jan 10 10:04:44 Maxwells-iPhone Openfolio(CoreFoundation)[3244] <Notice>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SKTConversationActivity actions]: unrecognized selector sent to instance 0x170865b40'

    opened by andrewloyola 14
  • Primary app view not loading when tapping on a new push notification message

    Primary app view not loading when tapping on a new push notification message

    I'm initializing SupportKit at the end of AppDelegate, right after I've initialized all my view controllers and the main window.

    When I put the app in the background, then send a message (using the Messages functionality) to my iOS device, I receive a push notification, and upon tapping on it, my app opens from the background and SupportKit opens and shows the messages, just like it's supposed to.

    This is where things get funky, if I close SupportKit, I can see that my app has not loaded and all that's left behind is a white background. I can still use the SupportKit gesture, but my main app is now left in an unusable state.

    Any ideas on this, or if you've ran in to the same issue yourselves?

    Note: This might only be happening on iOS 8, as all my test devices are unfortunately running it.

    opened by Dids 14
  • unread doesn't work

    unread doesn't work

    I'm on the version 5.6.1 of your SDK, and when the user open the chat (the number of unread become 0), but when we kill the app and re-open it, the number of unread message is 1...

    Same behavior with markAllAsRead(), it doesn't work...

    Can you fix it asap please?

    opened by rvi 13
  • badge number not increasing nor decreasing after put on test flight

    badge number not increasing nor decreasing after put on test flight

    hi guys.. yesterday i sccesfully get the notif background foreground and the badge number working perfect. then i move it to testflight, use other certificate put new one also in smooch but suddenly the app badge number not increasing nor decreasing, only can receive notif background and foreground . What's wrong with it ? is it cert issues or code ?

    thanks

    • smooch version 5.5.2
    opened by abadikaka 12
  • too much gap between smooch chat uitextfield and keyboard when i focus on uitext field

    too much gap between smooch chat uitextfield and keyboard when i focus on uitext field

    screen shot 2016-02-29 at 1 51 44 am Hi,

    i am using smooch slack integration. i am facing issue in ui part. there is uitextfield to write message and click send. as soon as i focus inside uitextfield to write something , keyboard comes up but there is much gap between the message uitextfield and the keyboard. see my attachement.

    screen shot 2016-02-29 at 1 45 42 am

    opened by NEITISH 11
  • Smooch`-[SKTRemoteOperationScheduler execute]:  deadlock.

    Smooch`-[SKTRemoteOperationScheduler execute]: deadlock.

    Using v11 and v12 seems to cause the same deadlock at the app start in SKTRemoteOperationScheduler. I'm encountering deadlocks caused by -[SKTRemoteOperationScheduler execute] call. From what I can tell right now it only happens in the simulator and it was happening for quite a while but never really bothered to report it. Seeing this still happens with v12 maybe its time to actually report it :)

    So, long story short, this call seems to block the mainthread which obviously is not perfect and completely freezes the app.

    I'm submitting a ...

    • [ √] bug report

    Current Behaviour

    • Deadlock.

    Expected Behavior

    • No deadlock.

    Environment Please let us know the following details about the environment in which you encountered this issue, as well as any other relevant information.

    • v12.0.0
    • iOS 16.1
    • Xcode 14.1
    • Simulator
    • Integration type: Cocoapods
    opened by andyzaharia 0
  • Missing localized strings

    Missing localized strings

    It seems there are some missing strings in the list provided in the documentation. For example, "My Conversations" and "New conversation" are not there. Although I can override "My Conversations" by adding that key manually I cannot do the same with "New conversation" or it simply doesn't work.

    opened by nikolas-theodosis 2
  • Page clutter

    Page clutter

    After popping up the keyboard, enter text, click Send, and then quickly slide down or up the page, and find that the page is messed up. After a while, the page can be normal.

    opened by yaofen 0
  • Metadata field on conversation is not updating

    Metadata field on conversation is not updating

    I'm using Smooch SDK to integrate with my Ios App with Swift, when I update the field metadata on the conversersation and call method getConversations again the list I receive is not updated. I also checked on the API and the metadata was updated.

    On the Android implementation with Smooch Core SDK the metadata is updated every time I update my conversation.

    • SDK version - 11.0.0
    • OS version - IOS 15.2
    • Device type - Iphone SE 2
    • Integration type Cocoapods
    opened by guilhermemontanher 0
  • Can not cancel sending video when it's loading

    Can not cancel sending video when it's loading

    For support questions, please visit our help page.

    This repository's issues are reserved for bug reports only.

    I'm submitting a ...

    • [ ] bug report

    Current Behaviour What is the current behavior?

    https://user-images.githubusercontent.com/76471917/185284829-b8e64433-9207-463a-a00f-1adfc7693b07.mp4

    Expected Behavior What is the expected behavior? Disable cancel button or can tap on cancel button when loading video

    Steps to Reproduce Please include steps to reproduce the issue, if possible. If you're unable to reproduce the issue, let us know where you encountered the issue. If the issue is difficult to reproduce, try to outline vague reproduction steps as best you can. Often, a video showing the issue can help us too.

    1. Tap on item menu
    2. Tap on the Photo & Video Library
    3. Choose a video from library
    4. Tap on Choose button
    5. While loading video, tap on Cancel button -> Nothing happened

    Sample Project or Code Snippet Please provide a runnable Sample Project that contains code to reproduce the issue you're experiencing. If this isn't possible, please instead include a code snippet of your initialization code, as well as the code required to reproduce the issue as text. (Please do not send screenshots of code).

    Environment Please let us know the following details about the environment in which you encountered this issue, as well as any other relevant information.

    • SDK version 10.1.3

    • OS version 15.6

    • Device type iPhone SE

    • Integration type (Cocoapods, Carthage, Manual) Manual

      Additional Information Please feel free to add any additional context, symbolicated stack traces, related issues, or suggestions here.

    opened by Thientnu97 0
  • Failing to create second conversation

    Failing to create second conversation

    For support questions, please visit our help page.

    This repository's issues are reserved for bug reports only.

    I'm submitting a ...

    • [X] bug report
    • [ ] support request => Please do not submit support request here, see note at the top of this template.

    Current Behaviour With one existing conversation, I am unable to start a second one.

    Calling the createConversation API method will result in a 400 bad request error. Tapping New conversation in the bottom of conversation list screen will result in a <SMOOCH::ERROR> failed to create conversation

    Expected Behavior I expect to be able to start a new conversation as a separate ticket.

    Steps to Reproduce

    1. Integrate Smooch SDK.
    2. Start a conversation
    3. Close it
    4. Try to start next one

    Sample Project or Code Snippet I am currently using this API call in Swift to initiate the conversation. Worked nicely with the first conversation, does not with the second one.

    Smooch.createConversation(
        withName: "Support request",
        description: nil,
        iconUrl: nil,
        avatarUrl: nil,
        metadata: [:],
        message: nil,
        completionHandler: smoochCompletionHandler
    )
    

    Environment Please let us know the following details about the environment in which you encountered this issue, as well as any other relevant information.

    SDK version: 10.1.3 OS Version: iOS 15.4 Device Type: Simulator Integration Type: Cocoapods

    Additional Information Please feel free to add any additional context, symbolicated stack traces, related issues, or suggestions here.

    opened by alarkirikal 1
Releases(12.0.0)
  • 12.0.0(Nov 1, 2022)

  • 11.0.0(Jun 27, 2022)

    11.0.0

    This major version contains a number of bug fixes and improvements including:

    • Improved APIs related to setting up a conversation delegate. The delegate should now be set by using the setConversationDelegate method on the Smooch class. It is no longer possible to set a delegate by directly modifying a SKTConversation object.

    • Fixed an issue that caused the unreadCountDidChange delegate method to not be called in a multi-conversation setting.

    • Fixed an issue that caused a "Done" button to incorrectly display in the navigation bar on smaller devices.

    • Fixed an observer-related crash that could occur infrequently when switching between conversations on slow connections.

    • Migrated to updated API documentation tooling.

    Source code(tar.gz)
    Source code(zip)
    Smooch.BCSymbolMaps.zip(192.16 KB)
    Smooch.dSYMs.zip(7.89 MB)
    Smooch.xcframework.zip(22.32 MB)
  • 10.1.3(Mar 30, 2022)

  • 10.1.2(Dec 15, 2021)

    10.1.2

    This patch version contains a number of bug fixes and improvements including:

    • Added support for Swift Package Manager.

    • Fixed an issue where a crash could occur during login/logout.

    • Fixed an issue where a user's location may fail to be sent.

    • Fixed an issue where attempting to send an attachment could cause a crash on iPad.

    • Fixed an issue where the typing indicator was not being shown.

    Source code(tar.gz)
    Source code(zip)
    Smooch.dSYMs.zip(8.77 MB)
    Smooch.xcframework.zip(23.02 MB)
  • 10.1.1(May 4, 2021)

  • 10.1.0(Nov 16, 2021)

    10.1.0

    This minor version contains bug fixes and enhancements including:

    • Better Message Delivery tracking - enabling integrators to know when a message arrives on the device.

    • We now return the participant's userExternalId when fetching the conversation information

    • Added customizations for Dark Mode.

    • Fixed a bug with the composer for multi-line replies.

    • Fixed a minor bug for the attachment button when using UISceneDelegate.

    • Fixed a bug with the seen indicator not refreshing.

    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(10.77 MB)
    Smooch.xcframework.zip(11.44 MB)
  • 10.0.0(Nov 16, 2021)

    10.0.0

    This major version contains support for XCFramework, and a number of bug fixes and improvements including:

    • Xcode 12 Support

    • Added ability to change the colour of text in a carousel.

    • Hide/Disable keyboard.

    • Fixed a bug for taking quick photos in iOS 14.

    • “Messages” is displayed for conversations that do not have a name assigned.

    • Added the ability to send “avatarUrl” when creating a conversation.

    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(10.72 MB)
    Smooch.xcframework.zip(11.39 MB)
  • 9.0.0(Sep 24, 2020)

    9.0.0

    This major version enhances the support for Multi-Conversations and introduces a new conversation list UI. We have also included updates to our conversation screen UI to show the conversation icon, conversation name and description. You can also configure your app to allow users to create multiple conversations from our conversation list screen. We've fixed a bug relating to JWT expiry which invokes an auth delegate required to refresh the JWT and reattempt connection.

    Behavior Changes

    Loading a Conversation

    You can now load a conversation specified by the ID and present the conversation screen.

    [Smooch showConversationWithId:@"your conversationId"];
    

    You can now load a conversation specified by the ID and present the conversation screen with prefilled text in the message input.

    [Smooch showConversationWithId:@"your conversationId" andStartingText:@"your starting text"];
    

    You can now load a conversation specified by the ID and present the conversation screen using the given view controller as presenting view controller.

    [Smooch showConversationWithId:@"your conversationId" fromViewController:[[YourViewController alloc] init]];
    

    You can now load a conversation specified by the ID and present the conversation screen with prefilled text in the message input using the given view controller as presenting view controller.

    [Smooch showConversationWithId:@"your conversationId" fromViewController:[[YourViewController alloc] init] andStartingText:@"your starting text"];
    

    Creating a Conversation View

    You can now create and return a Smooch conversation view controller loading the conversation specified by the ID.

    [Smooch newConversationViewControllerWithId:@"your conversationId" completionHandler:^(NSError * _Nullable error, UIViewController * _Nullable viewController) {
       if (error) {
           // handle error
        else {
           // handle success
       }
    }];
    

    You can now create and return a Smooch conversation view controller with prefilled text in the message input specified by the ID.

    [Smooch newConversationViewControllerWithId:@"your conversationId" startingText:@"your starting text" completionHandler:^(NSError * _Nullable error, UIViewController * _Nullable viewController) {
       if (error) {
           // handle error
       } else {
           // handle success
       }
    }];
    
    

    Conversation List

    You can now present the Smooch conversation list screen.

    [Smooch showConversationList];
    

    You can now present the Smooch conversation list screen without the create conversation button.

     [Smooch showConversationListWithoutCreateConversationButton];
    

    You can now dismiss the Smooch conversation list screen if shown.

     [Smooch closeConversationList];
    

    You can now present the Smooch conversation list screen, using the given view controller as presenting view controller.

    [Smooch showConversationListFromViewController:[[YourViewController alloc] init]];
    

    You can now present the Smooch conversation list screen without the create conversation button, using the given view controller as presenting view controller.

    [Smooch showConversationListFromViewControllerWithoutCreateConversationButton:[[YourViewController alloc] init]];
    

    You can create the conversation list view controller.

    [Smooch newConversationListViewController];
    

    You can now create the conversation list view controller without the create conversation button.

    [Smooch newConversationListViewControllerWithoutCreateConversationButton];
    

    You can now set the conversation list delegate to receive updates.

    [Smooch setConversationListDelegate:self];
    

    Creating a Conversation

    You can now create a conversation for the current user with optional displayName, description, iconUrl, metadata and send a message of type text.

    [Smooch createConversationWithName:@"displayName" description:@"description" iconUrl:@"iconUrl" metadata:@{@"metadataKey": @"metadataValue"} message:@[[[SKTMessage alloc] initWithText:@"message"]] completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
        if (error) {
            // handle error
        } else {
            // handle success
        }
    }];
    

    Updating a Conversation

    You can now update a conversation for the current user with optional displayName, description, iconUrl and metadata.

    [Smooch updateConversationById:@"your conversationId" withName:@"displayName" description:@"description" iconUrl:@"iconUrl" metadata:@{@"metadataKey": @"metadataValue"} completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
        if (error) {
            // handle error
        } else {
            // handle success
        }
    }];
    

    Loading Conversations

    You can now load a list of the next 10 conversations from the server.

    [self.conversationController getMoreConversations:^(NSError * error) {
        if (error) {
         // handle error
        } else {
         // handle success
        }
    }];
    
    

    You can now support pagination with this boolean, representing if the server has more conversations to load for the user.

    [self.conversationController hasMoreConversations];
    

    API Changes (Breaking)

    • Updated the following SKTUser properties.
    • userId is now externalId
    • properties is now metadata
    • appUserId is now userId
    • Updated the following SKTConversation properties.
    • appUserId is now userId
    • appMakerLastRead is now businessLastRead
    • appMaker is now business
    • Updated the following SKTParticipant property for the participants included in the participants array
    • appUserId is now userId
    • Updated the following SKTMessage properties for the messages included in the messages array
    • authorId is now userId and will only be included for messages with role equals to user
    • name is now displayName

    API Additions

    1. Class Smooch.h
      • Added class method +(void)showConversationWithId:(NSString *)conversationId
      • Added class method +(void)showConversationWithId:(NSString *)conversationId andStartingText:(nullable NSString *)startingText
      • Added class method +(void)showConversationWithId:(NSString *)conversationId fromViewController:(UIViewController*)viewController;
      • Added class method +(void)showConversationWithId:(NSString *)conversationId fromViewController:(UIViewController*)viewController andStartingText:(nullable NSString *)startingText
      • Added class method +(void)newConversationViewControllerWithId:(NSString *)conversationId completionHandler:(nullable void(^)(NSError * _Nullable error, UIViewController * _Nullable viewController))handler
      • Added class method +(void)newConversationViewControllerWithId:(NSString *)conversationId startingText:(nullable NSString *)startingText completionHandler:(nullable void(^)(NSError * _Nullable error, UIViewController * _Nullable viewController))handler
      • Added class method +(void)showConversationList
      • Added class method +(void)showConversationListWithoutCreateConversationButton
      • Added class method +(void)closeConversationList
      • Added class method +(void)showConversationListFromViewController:(UIViewController*)viewController
      • Added class method +(void)showConversationListFromViewControllerWithoutCreateConversationButton:(UIViewController *)viewController
      • Added class method +(nullable UIViewController *)newConversationListViewController
      • Added class method +(nullable UIViewController *)newConversationListViewControllerWithoutCreateConversationButton
      • Added class method +(void)setConversationListDelegate:(nullable id<SKTConversationListDelegate>)delegate
      • Added class method +(void)createConversationWithName:(nullable NSString *)displayName description:(nullable NSString *)description iconUrl:(nullable NSString *)iconUrl metadata:(nullable NSDictionary *)metadata message:(nullable NSArray<SKTMessage *> *)message completionHandler:(nullable void(^)(NSError * _Nullable error, NSDictionary * _Nullable userInfo))completionHandler
      • Added class method +(void)updateConversationById:(NSString *)conversationId withName:(nullable NSString *)displayName description:(nullable NSString *)description iconUrl:(nullable NSString *)iconUrl metadata:(nullable NSDictionary *)metadata completionHandler:(nullable void(^)(NSError * _Nullable error, NSDictionary * _Nullable userInfo))completionHandler
      • Added class method + (void)getMoreConversations:(void (^)(NSError * _Nullable))completionHandler
      • Added class method + (BOOL)hasMoreConversations
    2. Class SKTSettings.h
      • Added property UIColor *conversationListAccentColor
    3. Added Protocol SKTConversationListDelegate
      • Added method shouldCreateCustomConversationFlow
      • Added method conversationListDidSelectCreateConversation
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(11.18 MB)
  • 8.0.2(Jul 30, 2020)

  • 8.0.1(Jun 15, 2020)

    8.0.1

    Fixes

    • Fixed a bug that would prevent the customization of the UINavigationBar when using [UINavigationBar appearance].tintColor
    • Fixed a bug related to the local push notifications text when an image is sent
    • Fixed a bug related to the scroll that happened when replying to a location request or quick reply message

    Changes

    • Increased the limit for attachment uploads to 25 MiB

    Release 8.0.0

    The full release notes of the latest major release of the SDK can be found here

    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(10.04 MB)
  • 8.0.0(Apr 16, 2020)

    8.0.0

    This major version enhances support for multi-conversations and introduces multi-party where conversations can now host multiple users messaging each other. Read about multi-party conversations on our guide.

    Behavior Changes

    Initializing the SDK

    Version 8.0.0 of the SDK requires an Integration ID instead of the App ID to be initialized. The Integration ID can be found in the Sunshine Conversations dashboard when connecting an iOS SDK integration as a Customer Channel to your Sunshine Conversations App, or through the API.

    // before

    SKTSettings *settings = [SKTSettings settingsWithAppId:@"your App ID"];
    
    [Smooch initWithSettings:settings completionHandler:^(NSError * error, NSDictionary * userInfo) {
      if (error != nil) {
        // handle error state
      } else {
        // handle successful initialization
      }
    }]
    

    // after

    SKTSettings *settings = [SKTSettings settingsWithIntegrationId:@"your Integration ID"];
    
    [Smooch initWithSettings:settings completionHandler:^(NSError * error, NSDictionary * userInfo) {
      if (error != nil) {
        // handle error state
      } else {
        // handle successful initialization
      }
    }];
    

    Retrieving other Conversations

    You can now retrieve the list of conversations for the current user.

    [Smooch getConversations:^(NSError *error, NSArray *conversations) {
      if (error) {
       // handle error
      } else {
       // handle success
      }
    }];
    

    You can also retrieve a conversation with an ID.

    [Smooch loadConversation:@"your Conversation ID" completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
      if (error) {
        // handle error
      } else {
        // handle success
      }
    }];
    

    New Multi-Party and Multi-Conversation Events

    SKTConversationActivity.h has been updated with new events.

    
    /**
     *  @abstract An activity type indicating that a participant of the conversation started typing a response.
     */
    extern NSString const *SKTConversationActivityTypeTypingStart;
    
    /**
     *  @abstract An activity type indicating that a participant of the conversation stopped typing a response.
     */
    extern NSString const *SKTConversationActivityTypeTypingStop;
    
    /**
     *  @abstract An activity type indicating that a participant of the conversation recently read the user message.
     *
     *  This event type is triggered for the current user when the conversation is read on a different device.
     */
    extern NSString const *SKTConversationActivityTypeConversationRead;
    
    /**
     *  @abstract NEW: An activity type indicating that the current user has been added to a conversation.
     */
    extern NSString const *SKTConversationActivityTypeConversationAdded;
    
    /**
     *  @abstract NEW: An activity type indicating that current user was removed from a conversation.
     */
    extern NSString const *SKTConversationActivityTypeConversationRemoved;
    
    /**
     *  @abstract NEW: An activity type indicating that a new participant was added to a conversation the current user is part of.
     */
    extern NSSTring const *SKTConversationActivityTypeParticipantAdded;
    
    /**
     *  @abstract NEW: An activity type indicating that a participant was removed from a conversation the current user is part of.
     */
    extern NSString const *SKTConversationActivityTypeParticipantRemoved;
    

    API Changes (Breaking)

    1. Class SKTSettings.h
      • Class constructor + (instancetype)settingsWithAppId:(NSString*)appId; replaced with + (instancetype)settingsWithIntegrationId:(NSString *)integrationId;.
      • Class constructor + (instancetype)settingsWithAppId:(NSString*)appId andAuthCode:(NSString*)authCode; replaced with + (instancetype)settingsWithIntegrationId:(NSString*)integrationId andAuthCode:(NSString *)authCode;
    2. Class SKTConfig.h
      • Constructor - (instancetype)initWithAppId:(NSString *)appId replaced with - (instancetype)initWithIntegrationId:(NSString *)integrationId;
    3. Class SKTMessage.h
      • property (readonly) BOOL isFromCurrentUser changed to @property (nonatomic) BOOL isFromCurrentUser
    4. Class SKTConversation.h
      • NSDate *appMakerLastRead is now _Nullable

    API Additions

    1. Class SKTSettings.h
      • Added property NSString *integrationId
    2. Class SKTConfig.h
      • added property NSString *appName.
      • added read-only property NSString *integrationId.
    3. Class Smooch.h
      • Added method + (void)conversationById:(NSString *)conversationId completionHandler:(nullable void(^)(NSError * _Nullable error, SKTConversation * _Nullable conversation))handler;
      • Added class method + (void)getConversations:(void (^)(NSError *_Nullable, NSArray *_Nullable))completionHandler;
      • Added + (void)updateConversationDelegate:(id<SKTConversationDelegate>)delegate;
    4. Class SKTConversation.h
      • Added property NSDate *lastUpdatedAt
      • Added readonly property NSString *displayName
      • Added readonly property NSArray *participants
      • Add conformity to NSSecureCoding
    5. Class SKTMessage.h
      • Add conformity to NSSecureCoding
    6. Protocol SKTConversationDelegate
      • Added - (void)conversationListDidRefresh:(NSArray<SKTConversation *> *)conversationList;
    7. SKTConversationActivity.h
      • Added @property(readonly, nullable) NSString *conversationId
      • Added @property(readonly, nullable) NSString *appUserId;
    8. Class SKTParticipant.h
      • New class that represents participants in a conversation.
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(10.04 MB)
  • 7.1.2(Oct 11, 2019)

  • 7.1.1(Oct 2, 2019)

    Whats's New?

    • Fixed a crash when calling +loadConversation:completionHandler: and a user hasn't been created. The function now returns an error in the completion handler
    • Fixed a crash that would happen sometimes when dismissing and opening the conversation screen
    • dSYM file is now available for each release
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(9.17 MB)
  • 7.1.0(Sep 23, 2019)

  • 7.0.1(Sep 13, 2019)

  • 7.0.0(Sep 12, 2019)

  • 6.16.0(Aug 28, 2019)

    What's New?

    Added the ability to customize the text color for user messages. To customize it, set your preferred color in SKTSettings.userMessageTextColor.

    Objective-C

    SKTSettings* settings = [SKTSettings settingsWithAppId:@"YOUR_APP_ID"];
    settings.userMessageTextColor = [UIColor redColor];
    

    Swift

    var settings = SKTSettings(appId: "YOUR_APP_ID")
    settings.userMessageTextColor = UIColor.redColor();
    

    API Additions

    1. Class SKTSettings
      • Added property userMessageTextColor
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(9.08 MB)
  • 6.15.1(Aug 21, 2019)

  • 6.15.0(Jul 15, 2019)

  • 6.14.0(May 9, 2019)

    Changes

    Added the capability to load a different conversation into the current session. See api docs for more details.

    API Additions

    1. Class Smooch
      • Added new method +loadConversation:completionHandler:;
      • Added new method +handleUserNotificationActionWithIdentifier:forRemoteNotification:withResponseInfo:completionHandler:
      • Deprecated method +handleUserNotificationActionWithIdentifier:withResponseInfo:completionHandler:completionHandler:. Use +handleActionWithIdentifier:forRemoteNotification:withResponseInfo:completionHandler: instead
    2. Class SKTConversation
      • Added new property conversationId
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(9.07 MB)
  • 6.13.0(May 1, 2019)

    Changes

    • Added new protocol SKTAuthenticationDelegate which gets notified when a request fails because of an invalid JWT, allowing you to renew credentials without having to call [Smooch login:jwt:completionHandler:]. The delegate is set in SKTSettings before initialization.

    Sample usage:

    @interface MyAppDelegate() <SKTAuthenticationDelegate>
    
    @end
    
    @implementation MyAppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        SKTSettings* settings = [SKTSettings settingsWithAppId:@"my_app_id"];
        settings.authenticationDelegate = self;
    
        [Smooch initWithSettings:settings completionHandler:^(NSError * error, NSDictionary * userInfo) {
            // Code after init is complete
        }];
    
        return YES;
    }
    
    /**
     *  Called when a request failed due to an invalid jwt. Call `completionHandler` to update the token
     */
    -(void)onInvalidToken:(NSError *)error handler:(SKTAuthenticationCompletionBlock)completionHandler
    {
        // retrieve new token
        completionHandler(newJwt);
    }
    
    @end
    

    API Additions

    1. Class SKTSettings
      • Added new property authenticationDelegate
    2. New protocol SKTAuthenticationDelegate
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(8.99 MB)
  • 6.12.1(Apr 3, 2019)

    Changes

    • Smooch login can now be called while the conversation view is open for the user that's currently authenticated. This may be used to renew an expired JWT.
    • Push notification token is now correctly generated on the first launch of the app if the user does not yet exist.
    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(8.91 MB)
  • 6.12.0(Feb 6, 2019)

    Changes

    Multiline action buttons

    Added support for multiline action buttons. Button text that was previously truncated will now wrap to display the full content on multiple lines.

    This applies to all action types except locationRequest and reply.

    Visual Updates

    The conversation view has received a slight visual refresh with a new default conversation accent color and updates to message bubble and action button shapes and text alignment.

    simulator screen shot - iphone 5s - 2019-02-05 at 09 51 04

    Source code(tar.gz)
    Source code(zip)
    Smooch.framework.zip(9.14 MB)
  • 6.11.2(Nov 13, 2018)

  • 6.11.1(Nov 6, 2018)

  • 6.11.0(Oct 16, 2018)

  • 6.10.4(Sep 19, 2018)

  • 6.10.3(Sep 13, 2018)

  • 6.10.2(Aug 13, 2018)

  • 6.10.1(Jul 16, 2018)

Zilla connect is an easy, fast and secure way for your users to buy now and pay later from your app

Zilla Checkout iOS SDK Zilla connect is an easy, fast and secure way for your us

null 0 Jan 19, 2022
Client library for accessing Azure Storage on an iOS device

Azure Storage Client Library for iOS Overview This library is designed to help you build iOS applications that use Microsoft Azure Storage. At the mom

Microsoft Azure 81 Oct 15, 2022
A very simple way to implement Backbone.js style custom event listeners and triggering in Swift for iOS development.

Swift Custom Events A very simple way to implement Backbone.js style custom event listeners and triggering in Swift for iOS development. This provides

Stephen Haney 98 Dec 25, 2022
MainTask - Create main task by using a simple way

MainTask Create a main task by using a simple way. MainTask { print(Thread.c

Underthestars-zhy 1 Jan 17, 2022
Used to integrate the Facebook Platform with your iOS & tvOS apps.

Facebook SDK for iOS This open-source library allows you to integrate Facebook into your iOS app. Learn more about the provided samples, documentation

Meta 7.3k Jan 3, 2023
Accept credit cards and PayPal in your iOS app

Important: PayPal Mobile SDKs are Deprecated. The APIs powering them will remain operational long enough for merchants to migrate, but the SDKs themse

PayPal 973 Dec 18, 2022
Unopinionated and flexible library for easily integrating Tumblr data into your iOS or OS X application.

Tumblr SDK for iOS An unopinionated and flexible library for easily integrating Tumblr data into your iOS or OS X application. The library uses ARC re

Tumblr 420 Dec 8, 2022
Shopify’s Mobile Buy SDK makes it simple to sell physical products inside your mobile app.

Shopify’s Mobile Buy SDK makes it simple to sell physical products inside your mobile app. With a few lines of code, you can connect your app with the Shopify platform and let your users buy your products using Apple Pay or their credit card.

Shopify 411 Jan 2, 2023
Home-assistant-swift-sdk - Used to integrate the Home Assistant APIs with your Swift-based apps.

home-assistant-swift-sdk This open-source library allows you to interact with a Home Assistant instance in your Swift-based (e.g., iOS, macOS, etc.) a

Alexander Golden 0 Dec 31, 2021
Doll - A mac app to help monitor your app badges

Doll is a Mac app that help you catch up important messages! In macOS, It feels

null 328 Jan 4, 2023
All in one eKYC (Electronic Know Your Customer) solution available for android and ios

WideKYC All in one eKYC (Electronic Know Your Customer) solution available for android and ios. Wide Technologies provides an SDK for you to implement

Wide Technologies Indonesia 5 Nov 2, 2022
A simple to use iOS/tvOS/watchOS SDK to help get you off the ground quickly and efficiently with your Elastic Path Commerce Cloud written in Swift.

Elastic Path Commerce Cloud iOS Swift SDK A simple to use iOS/tvOS/watchOS SDK to help get you off the ground quickly and efficiently with your Elasti

Moltin 36 Aug 1, 2022
CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device!

CodeBucket Description CodeBucket is the best way to browse and maintain your Bitbucket repositories on any iPhone, iPod Touch, and iPad device! Keep

Dillon Buchanan 196 Dec 22, 2022
A realistic reflective shimmer to SwiftUI Views that uses device orientation. Position any View relative to device orientation to appear as if through a window or reflected by the screen.

A 3d rotation effect that uses Core Motion to allow SwiftUI views to appear projected in a specific direction and distance relative to the device in r

Ryan Lintott 235 Dec 30, 2022
Simulate any device and settings on one simulator or device.

SwiftUI-Simulator Enables the following settings without settings or restarting the simulator or real device. Any device screen Light/Dark mode Locale

Yusuke Hosonuma 70 Dec 19, 2022
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Dec 26, 2022
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Jan 9, 2023
SwiftUIWordpressClient - An iOS application for any WordPress website

SwiftUIWordpressClient SwiftUIWordpressClient is an iOS application for any Word

Liubov Ilina 3 Sep 27, 2022
Calculate your tip and split the bill between any number of people

Calculate your tip and split the bill between any number of people

Tirupati Balan 6 Feb 9, 2022
The best way to use the Zora API in your Swift projects.

ZoraKit The best way to use the Zora API in your Swift projects. Disclaimer This is still very much a work in progress, and is really a proof-of-conce

MBLA 6 Sep 23, 2022