Chat SDK iOS - Open Source Mobile Messenger

Overview

Chat SDK

Open Source Messaging framework for iOS

Chat SDK is a fully featured open source instant messaging framework for iOS. Chat SDK is fully featured, scalable and flexible and follows the following key principles:

  • Open Source. The Chat SDK is open source and free for commerical apps (see license)
  • Full data control. You have full and exclusive access to the user's chat data
  • Quick integration. Chat SDK is fully featured out of the box
  • Firebase Powered by Google Firebase

Features

Full breakdown is available on the features page.

Quick Start

Modules

About Us

Learn about the history of Chat SDK and our future plans in this post.

Scalability and Cost

People always ask about how much Chat SDK costs to run. And will it scale to millions of users? So I wrote an article talking about just that.

Looking for Freelance Developers

If you're a freelance developer looking for work, join our Discord server. We often have customers

Community

  • Discord: If you need support, join our Server
  • Support the project: Patreon or Github Sponsors 🙏 and get access to premium modules
  • Upvote: our advert on StackOverflow
  • Contribute by writing code: Email the Contributing Document to [email protected]
  • Give us a star on Github
  • Upvoting us: Product Hunt
  • Tweet: about your Chat SDK project using @chat_sdk
  • Live Stream Join us every Saturday 18:00 CEST for a live stream where I answer questions about Chat SDK. For more details please join the Discord Server

You can also help us by:

  • Providing feedback and feature requests
  • Reporting bugs
  • Fixing bugs
  • Writing documentation

Email us at: [email protected]

We also offer development services we are a team of full stack developers who are Firebase experts. For more information check out our consulting site.

Running the demo project

This repository contains a fully functional version of the Chat SDK which is configured using our Firebase account. This is great way to test the features of the Chat SDK before you start itegrating it with your app.

  1. Clone Chat SDK
  2. Run pod install in the Xcode directory
  3. Open the Chat SDK Firebase.xcworkspace file in Xcode
  4. Compile and run

Swift Version

We are currently updating the Chat SDK to use Swift, this will happen gradually. In the meantime, the Chat SDK API is fully compatible with Swift projects.

The Chat SDK is fully compatible with Swift projects and contains a Swift demo project.

  1. Clone Chat SDK
  2. Run pod install in the XcodeSwift directory
  3. Open the ChatSDKSwift.xcworkspace file in Xcode
  4. Compile and run

Adding the Chat SDK to your project

Quick start guide - it takes about 10 minutes!

Adding the Chat SDK to your project

  1. Add the Chat SDK development pods to your Podfile
use_frameworks!
pod "ChatSDK"
pod "ChatSDKFirebase/Adapter"
pod "ChatSDKFirebase/Upload"
pod "ChatSDKFirebase/Push"

Optional

pod "ChatSDK/ModAddContactWithQRCode"
  1. Run pod update to get the latest version of the code.

  2. Open the App Delegate add the following code to initialise the chat

Swift

AppDelegate.swift

import ChatSDK

Add the following code to the start of your didFinishLaunchingWithOptions function:

let config = BConfiguration.init();
config.rootPath = "test"
// Configure other options here...
config.allowUsersToCreatePublicChats = true

// Define the modules you want to use. 
var modules = [
    FirebaseNetworkAdapterModule.shared(),
    FirebasePushModule.shared(),
    FirebaseUploadModule.shared(),
    // Optional...
    AddContactWithQRCodeModule.init(),
]

BChatSDK.initialize(config, app: application, options: launchOptions, modules: modules)

    
self.window = UIWindow.init(frame: UIScreen.main.bounds)
self.window?.rootViewController = BChatSDK.ui().splashScreenNavigationController()
self.window?.makeKeyAndVisible();

Then add the following methods:

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
      BChatSDK.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
  }

  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
      BChatSDK.application(application, didReceiveRemoteNotification: userInfo)
  }

  func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
      return BChatSDK.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
  }

  func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
      return BChatSDK.application(app, open: url, options: options)
  }

Objective C

Check the demo project.

The Root Path

The root path variable allows you to run multiple Chat SDK instances on one Firebase account. Each different root path will represent a completely separate set of Firebase data. This can be useful for testing because you could have separate test and prod root paths.

  1. The Chat SDK is now added to your project

Firebase Setup

  1. Go to the Firebase website and sign up
  2. Go to the Firebase console and make a new project
  3. Click Add project
  4. Choose a name and a location
  5. Click Settings (the gear icon). On the General tab, click Add Firebase to your iOS app
  6. Enter your bundle ID
  7. Download the GoogleServices file and add it to the root of your Xcode project

Note:
It is worth opening your downloaded GoogleService-Info.plist and checking there is an API_KEY field included. Sometimes Firebase's automatic download doesn’t include this in the plist. To rectify, just re-download the plist from the project settings menu.

  1. Copy the following rows from the demo ChatSDK Info.plist file to your project's Info.plist

  2. App Transport Security Settings

  3. URL types

  4. Make sure that the URL types are all set correctly. The URL type for your app should be set to your bundle id

  5. All the privacy rows. These will allow the app to access the camera, location and address book

  6. In the Firebase dashboard click Authentication -> Sign-in method and enable all the appropriate methods

  7. Add the security rules. The rules also enable optimized user search so this step is very important!

  8. Enable file storage - Click Storage -> Get Started

  9. Enable push notifications

  10. Enable location messages. Get a Google Maps API key. Then add it during the Chat SDK configuration

Objective C

config.googleMapsApiKey = @"YOUR API KEY";

Swift

config.googleMapsApiKey = "YOUR API KEY"

Push Notifications

The Push Notification module allows you to send free push notifications using Firebase Cloud Messaging.

  1. Setup an APN key.
  2. Inside your project in the Firebase console, select the gear icon, select Project Settings, and then select the Cloud Messaging tab.
  3. In APNs authentication key under iOS app configuration, click the Upload button.
  4. Browse to the location where you saved your key, select it, and click Open. Add the key ID for the key (available in Certificates, Identifiers & Profiles in the Apple Developer Member Center) and click Upload.
  5. Enable the push notifications Capability in your Xcode project Project -> Capabilities -> Push Notifications
  6. In Xcode open the Capabilities tab. Enable Push Notifications and the following Background Modes: Location updates, Background fetch, Remote notifications.
Setup Firebase Cloud Functions

Follow the instructions on our Chat SDK Firebase repository

Security Rules

Firebase secures your data by allowing you to write rules to govern who can access the database and what can be written. The rules are also needed to enable user search. To enable the rules see the guide Enabling Security Rules.

Conclusion

Congratulations! 🎉 🎉 You've just turned your app into a fully featured instant messenger! Keep reading below to learn how to further customize the Chat SDK.

To go deeper, checkout the API Guide for help with:
  1. Interacting with the Firebase server
  2. Creating and updating entities
  3. Custom authentication
  4. Common code examples
  5. Customizing the user interface

View the API documentation here.

Next Steps

Documentation

Configuration

There are a number of configuration options available. Check out the BConfiguration class. Using this class you can do things like:

  • Changing the chat bubble colors
  • Changing the default user name
  • Enable or disable different types of login
  • Show or hide empty chats
  • etc...

Customize the UI

To customize the UI, you can register subclasses for different views. You can do that using the UI service BChatSDK.ui. For example, to register a new login view controller you would use:

BChatSDK.ui.loginViewController = [[YourViewController alloc] initWithNibName:Nil bundle: Nil];

To modify the chat view you would register a provider:

[BChatSDK.ui setChatViewController:^BChatViewController *(id<PThread> thread) {
        return [[YourChatViewController alloc] initWithThread:thread];
}];

Every view controller in the app can be customized this way.

Use Chat SDK views in your app

Any of the Chat SDK views can be added into your app. Checkout the PInterfaceFacade for options. You can add a any view using the following pattern. Here we are using the interface service to get the particular view.

Objective-C

UIViewController * privateThreadsViewController = [BChatSDK.ui privateThreadsViewController];

Swift

let privateThreadsViewController = BChatSDK.ui().a.privateThreadsViewController()

Integrate the Chat SDK with your existing app

To do that, you can take advantage of the BIntegrationHelper class. This makes provides some helper methods to make it easier to integrate the Chat SDK with your app.

At the most basic level, you need to do the following:

  1. Authenticate the Chat SDK when your app authenticates. The best way to do this is to generate a custom token on your server following this guide. Then use this method to initialize the Chat SDK:

Objective-C

[BIntegrationHelper authenticateWithToken:@"your token"];

Swift

BIntegrationHelper.authenticate(withToken: "your token")
  1. Update the Chat SDK user's name and image whenever your user's name or image changes. You can do this using the following method:

Objective-C

[BIntegrationHelper updateUserWithName:@"Name" image: image url: imageURL];

Swift

BIntegrationHelper.updateUser(withName: "Name", image: image, url: imageURL)
  1. Logout of the Chat SDK whenever your app logs out. A good place to do this is whenever your login screen is displayed:

Objective-C

[BIntegrationHelper logout];

Swift

BIntegrationHelper.logout()
  1. Now the Chat SDK is integrated with your app.

Module Setup

There are a number of free and premium extensions that can be added to the Chat SDK.

Firebase Modules

For the following modules:

The free modules are located in the chat-sdk-ios/ChatSDKFirebase folder. The premium modules can be purchased and downloaded from the links provided above.

To install a module you should use the following steps:

  1. Copy the module code into your Xcode source code folder and add the files to your project from inside Xcode. If you are using a symlink you can use the symlink script (mentioned above) and then just add a link to the ChatSDKFirebase folder to Xcode.
  2. Add any necessary dependencies to your Podfile
  3. Add the modules to the array of modules during configuration.

Firebase UI

The File UI module allows you to use the native Firebase user interface for authentication.

After adding the files to your Xcode project, add the following to the App Delegate to enable the module.

Objective C

AppDelegate.m -> application: didFinishLaunchingWithOptions:

 #import "BFirebaseUIModule.h"

[[[BFirebaseUIModule alloc] init] activateWithProviders: @[]];

Swift

[YourProject]-Bridging-Header.h

 #import "BFirebaseUIModule.h"

AppDelegate.swift

BFirebaseUIModule.init().activate(withProviders: []);

You should pass in array of the FUIAuthProvider objects you want to support.

Also add the following to your Podfile depending on which authentication methods you want to support:

pod 'FirebaseUI/Facebook', '~> 4.0'
pod 'FirebaseUI/Google', '~> 4.0'
pod 'FirebaseUI/Twitter', '~> 4.0'
pod 'FirebaseUI/Phone', '~> 4.0'

Then run pod install.

Note If you want to Firebase Auth UI make sure you comment out the following line:

BNetworkManager.shared().a.auth().setChallenge(BLoginViewController.init(nibName: nil, bundle: nil));

Other Modules

For the following modules:

These modules are distributed as development pods. After you've downloaded the module, unzip it and add it to the ChatSDKModules folder. Then:

  1. Open your Podfile
  2. Add the line:
pod "ChatSDKModules/[ModuleName]", :path => "[Path to ChatSDKModules folder]"
  1. Run pod install
  2. The module is now active

Using the Chat SDK API

The Chat SDK API is based around the network manager and a series of handlers. A good place to start is by looking at the handlers Pods/Development Pods/ChatSDK/Core/Core/Classes/Interfaces. Here you can review the handler interfaces which are well documented. To use a handler you would use the following code:

Objective C

[[BChatSDK.handler_name function: to: call:]

Swift

BNetworkManager.shared().a.handler_name() function: to: call:]
Searching for a user

For example, to search for a user you could use the search handler:

-(RXPromise *) usersForIndexes: (NSArray *) indexes withValue: (NSString *) value limit: (int) limit userAdded: (void(^)(id<PUser> user)) userAdded;

Here you pass in a series of indexes to be used in the search i.e. name, email etc... and a value. It will then return a series of user objects.

You can also see example implementations of these handlers by looking at the BFirebaseSearchHandler class. And also seeing how the method is used in the Chat SDK.

Starting a chat

To start a chat you can use the core handler.

-(RXPromise *) createThreadWithUsers: (NSArray *) users
                       threadCreated: (void(^)(NSError * error, id<PThread> thread)) thread;

When this method completes, the thread will have been created on Firebase and all the users will have been added. You could then open the thread using the interface adapter.

UIViewController * chatViewController = [BChatSDK.ui chatViewControllerWithThread:thread];

So a more complete example would look like this:

-(void) startChatWithUser {
    MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.label.text = [NSBundle t:bCreatingThread];
    
    [[BChatSDK.core createThreadWithUsers:@[_user] threadCreated:^(NSError * error, id<PThread> thread) {
        if (!error) {
            [self pushChatViewControllerWithThread:thread];
        }
        else {
            [UIView alertWithTitle:[NSBundle t:bErrorTitle] withMessage:[NSBundle t:bThreadCreationError]];
        }
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    }];
}

-(void) pushChatViewControllerWithThread: (id<PThread>) thread {
    if (thread) {
        UIViewController * chatViewController = [BChatSDK.ui chatViewControllerWithThread:thread];
        [self.navigationController pushViewController:chatViewController animated:YES];
    }
}

Troubleshooting Cocoapods

  1. Always open the .xcworkspace file rather than .xcodeproj
  2. Check CocoaPod warnings - make sure to fix any warnings before proceeding
  3. Make sure that your base configuration isn’t set: Project -> project name -> Info -> Configuration
  4. Make sure that the “Build Active Architecture Only” setting is the same for both the main project and the pods project.
  5. Check the build settings in the Xcode project and check which fields are in bold (this means that their value has been overridden and CocoaPods can't access them). If you press backspace while selecting those fields, their values will be set to the default value.

The license

We offer a choice of two license for this app. You can either use the Chat SDK license or the GPLv3 license.

Most Chat SDK users either want to add the Chat SDK to an app that will be released to the App Store or they want to use the Chat SDK in a project for their client. The Chat SDK license gives you complete flexibility to do this for free.

Chat SDK License Summary

  • License does not expire.
  • Can be used for creating unlimited applications
  • Can be distributed in binary or object form only
  • Commercial use allowed
  • Can modify source-code but cannot distribute modifications (derivative works)

If a user wants to distribute the Chat SDK source code, we feel that any additions or modifications they make to the code should be contributed back to the project. The GPLv3 license ensures that if source code is distributed, it must remain open source and available to the community.

GPLv3 License Summary

  • Can modify and distribute source code
  • Commerical use allowed
  • Cannot sublicense or hold liable
  • Must include original license
  • Must disclose source

What does this mean?

Please check out the Licensing FAQ for more information.

Comments
  • IMPORTANT! Apple just rejected my app! [Solved]

    IMPORTANT! Apple just rejected my app! [Solved]

    So for the past few days I've been trying to get my iOS app on the store just been rejected!

    The issues they said were there:

    Guideline 1.2 - Safety - User Generated Content

    Your app enables the display of user-generated content but does not have the proper precautions in place.

    Next Steps

    To resolve this issue, please revise your app to implement all of the following precautions:

    • Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content or abusive users
    • A method for filtering objectionable content
    • A mechanism for users to flag objectionable content
    • A mechanism for users to block abusive users
    • The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content

    This really isn't good and i may now have to forget about the my app all together.

    Ryan

    enhancement 
    opened by RyanElliott94 37
  • Need help in chat sdk setup

    Need help in chat sdk setup

    Hi,

    I am trying to integrate the chat sdk into our project, but i want to setup in different view controller rather than appdelegate has we have other features in app as well.

    Regards Sunil

    opened by sunilhs1986 24
  • Push notifications issue. (from iOS to Android message)

    Push notifications issue. (from iOS to Android message)

    1. Is the bug present in the demo Chat SDK project?

    1. What modifications have you made to the Chat SDK?

    1. iOS Version? Device or simulator? 12.2, iPhone 5s
    2. Steps taken to reproduce the problem: send text message from one to another device
    3. Expected result: Device should receive push notification.
    4. Actual result: Device doesn't receive push notification.
    5. Comments:

    Maybe, you have any idea about this? Maybe removing property "firebaseCloudMessagingServerKey" of BConfiguration it's a reason?

    opened by developer2311 22
  • My new Group Public Chat... where did my messages go?

    My new Group Public Chat... where did my messages go?

    OK -

    It seems I have everything sync'd and sort of working. Amazing! Anyway, my group chat again. When I went into it from a detail page, it dutifully created a new CHAT in Firebase! I typed myself a message. Next I went out. Then I went back in expecting so see my message, but it was empty again. Hmmm, so I checked Firebase and no new Thread was created so that part seemed to work.

    So the question is... how is this supposed to work. Shouldn't a user see the the last X messages or such of the public thread?

    Thanks for all the help so far.

    opened by jimijon 21
  • Pod installation issue

    Pod installation issue "target has transitive dependencies"

    Dear When i tried to install pod for the chat on my project i get bellow error

    [!] The 'Pods-Chat' target has transitive dependencies that include static binaries: (/Users/../Pods/Google/Frameworks/GGLCore.framework, /Users/../Pods/Google/Frameworks/GGLSignIn.framework, and /Users/../Pods/TwitterKit/TwitterKit.framework)

    help wanted 
    opened by maizer999 18
  • blocking mechanism needed for app approval

    blocking mechanism needed for app approval

    I know this has been mentioned in a previous thread, but as the issue still remains unresolved I figured I would open a ticket dedicated specifically to the implementation of a feature that allows users to block each other.

    Some of you may or may not know that Apple REQUIRES that users have the ability to block other users whom they deem offensive. My app that features Chat SDK just got rejected for the following reason:

    "Guideline 1.2 - Safety - User Generated Content

    Your app enables the display of user-generated content but does not have the proper precautions in place.

    Specifically, we were unable to locate a user-facing blocking mechanism separate from the report button where users can block abusive users themselves."

    I have also received numerous rejections for this reason in the past while using other chat sdks. This is something that, in my experience, Apple reviewers will catch and reject your app for 8 times out of 10. The point I'm trying to make is that this is an extremely important issue. Not being able to get apps approved makes the SDK worthless.

    I know there was a report that a blocking feature was in the works and almost ready, but that was about a month ago and there has been no further information. Should I expect that this feature will be added soon?

    opened by Absentia 17
  • duplicate files when Pod install / update

    duplicate files when Pod install / update

    When running:

    pod 'ChatSDK'
    pod 'ChatSDK/UI'
    pod 'ChatSDKFirebase/Adapter'
    pod 'ChatSDKFirebase/FileStorage'
    pod 'ChatSDKFirebase/Push'
    pod 'ChatSDKFirebase/SocialLogin'
    

    This creates two FirebaseNetworkAdaptor directories. One under ChatSDK/ChatSDKFirebase and the other under ChatSDKFirebase/

    opened by jimijon 16
  • crashes when setting textInputView

    crashes when setting textInputView

    setupTextInputView

    If I don't initialize that in the ElmChatViewController it doesn't crash. Some auto layout issue it seems:

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSLayoutConstraint for <UIButton: 0x7fe4f225dd60; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x604000220ec0>>: A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs.' *** First throw call stack: ( 0 CoreFoundation 0x00000001150d41cb __exceptionPreprocess + 171 1 libobjc.A.dylib 0x00000001141f5f41 objc_exception_throw + 48 2 CoreFoundation 0x0000000115148b95 +[NSException raise:format:] + 197 3 Foundation 0x000000010f08bb63 ResolveConstraintArguments + 891 4 Foundation 0x000000010ee81c0d +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:] + 80 5 ChatSDKUI 0x000000010d826b96 -[KeepConstantAttribute createConstraintWithRelation:value:] + 254 6 ChatSDKUI 0x000000010d826368 -[KeepSimpleAttribute setEqual:] + 345 7 ChatSDKUI 0x000000010d813f31 -[BTextInputView init] + 1334 8 ChatSDKUI 0x000000010d81bfd6 -[ElmChatViewController setupTextInputView] + 53 9 ChatSDKUI 0x000000010d81d1a3 -[ElmChatViewController viewDidLoad] + 554 10 ChatSDKUI 0x000000010d7f205c -[BChatViewController viewDidLoad] + 50 11 UIKit 0x0000000111634d51 -[UIViewController loadViewIfRequired] + 1235 12 UIKit 0x000000011163519e -[UIViewController view] + 27 13 ChatSDKUI 0x000000010d81bdc1 -[ElmChatViewController initWithDelegate:] + 220 14 ChatSDKUI 0x000000010d7f1fe0 -[BChatViewController initWithThread:] + 102 15 ChatSDKUI 0x000000010d7f766a -[BDefaultInterfaceAdapter chatViewControllerWithThread:] + 69 16 CryptoTrader 0x000000010ae719e5 T012CryptoTrader24TileDetailViewControllerC8openChatyypFypSgAEcfU + 741 17 CryptoTrader 0x000000010ae71e62 _T012CryptoTrader24TileDetailViewControllerC8openChatyypFypSgAEcfU_TA + 66 18 CryptoTrader 0x000000010ae714c5 _T0ypSgAAIxir_yXlSgABIyBya_TR + 229 19 RXPromise 0x00000001109363da __76-[RXPromise registerWithExecutionContext:onSuccess:onFailure:returnPromise:]_block_invoke_3 + 90 20 libdispatch.dylib 0x00000001167c13f7 _dispatch_call_block_and_release + 12 21 libdispatch.dylib 0x00000001167c243c _dispatch_client_callout + 8 22 libdispatch.dylib 0x00000001167cd6f0 _dispatch_main_queue_callback_4CF + 628 23 CoreFoundation 0x0000000115096ef9 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 9 24 CoreFoundation 0x000000011505b662 __CFRunLoopRun + 2402 25 CoreFoundation 0x000000011505aa89 CFRunLoopRunSpecific + 409 26 GraphicsServices 0x00000001190279c6 GSEventRunModal + 62 27 UIKit 0x0000000111496d30 UIApplicationMain + 159 28 CryptoTrader 0x000000010aead3f7 main + 55 29 libdyld.dylib 0x000000011683ed81 start + 1 ) libc++abi.dylib: terminating with uncaught exception of

    opened by jimijon 12
  • Audio Messages module isn't working

    Audio Messages module isn't working

    Right so when i do the necessary steps to install the module i get an error saying BAudioMessageCell.h is missing despite it being in finder.

    Anyone have any ideas as to why this is happening?

    Ryan

    opened by RyanElliott94 12
  • Private Threads coming up empty with no messages in it

    Private Threads coming up empty with no messages in it

    Hello Ben, Simon, I have noticed this behavior recently that after login my app would fetch all the chat threads but for some reason would not fetch any messages inside the chat and would show "No messages" label although i know that there are messages. If i logout and log in again then it would work fine. this scenario only happens sometimes and i was not able to catch this case. Do you guys know any possibility of error here ? Thanks Sachin

    opened by sachinrot 12
  • Disappearing messages

    Disappearing messages

    Most recent messages are lost from the thread when the thread becomes too long, possibly reaches limit for number which can be displayed.

    This issue came about following an update to the SDK, it installed as a new app and the problem began when it tried to pull in all the old threads, some of which were quite long and those were where the problems occurred.

    Messages reappear gradually as you submit new ones, but didsapear the next time you open the thread.

    Deleting the thread and beginning a new one fixed the problem

    opened by snipe717 11
  • UX and UI within Chat SDK : Customise

    UX and UI within Chat SDK : Customise

    a) If you're chatting with someone, and you are typing a message to them, if they send you a message at the same time, instead of that message appearing properly in the window asynchronously, their incoming message refreshes the screen or view and overwrites the message you were in the middle of typing, making it impossible to type and send a message if they are sending you messages.

    (b) same thing if an incoming message comes from someone else, it takes over and overwrites the view you are in. All maddening. (c) strange behavior when hitting the back button/arrow in the top left, often the reply bar should be at bottom of the screen is now in the middle, and then often you can no longer send a message.

    opened by iOSDibya 0
  • Help On including Google-Mobile-Ads-SDK

    Help On including Google-Mobile-Ads-SDK

    Would anyone be able to help point me in the right direction on how to include Google-Mobile-Ads-SDK. I have tried adding it to the ChatSDKUI.podspec and setting s.static_framework = true. It allows me to include Google-Mobile-Ads-SDK but when I try to open a chat it can't load the view. I'm guessing the static_framework is causing it to not be linked properly

    opened by brendancooper1332 0
  • Fix for white border around chat bubbles

    Fix for white border around chat bubbles

    A weird white border appeared around the chat bubbles that seemed to be caused by semi-transparent pixels. Issue was picked up on physical devices and is not possible to save a screenshot. Had to take a picture of my screen to show.

    Fixed the issue by thresholding the pixels at 50% and this worked without a noticeable decrease in quality

    opened by itumeleng-mabote 0
  • support for firebase 9.5.0

    support for firebase 9.5.0

    1. Is the bug present in the demo Chat SDK project? some error happend on project after update/install to latest firebase

    2. Steps taken to reproduce the problem: pod install or pod update firebase or chatSDK

    3. Expected result: support for the latest firebase

    opened by cendolinside123 0
  • When a sender sends message(when receiver is in background or killed state) and kills the app. When receiver reads the message and kills the app after this when sender opens the hatbox read receipts is not working.

    When a sender sends message(when receiver is in background or killed state) and kills the app. When receiver reads the message and kills the app after this when sender opens the hatbox read receipts is not working.

    1. Is the bug present in the demo Chat SDK project?

    2. What modifications have you made to the Chat SDK?

    3. iOS Version? Device or simulator?

    4. Steps taken to reproduce the problem:

    5. Expected result:

    6. Actual result:

    7. Comments:

    opened by chethana15 0
  • [Assert] Error in UIKit client: -[UIWindow setScreen:]

    [Assert] Error in UIKit client: -[UIWindow setScreen:]

    When I click on options button to send file or imge, couldn’t open picker and messge will be [Assert] Error in UIKit client: -[UIWindow setScreen:] should not be called if the client adopts UIScene lifecycle. Call -[UIWindow setWindowScene:] instead.

    Iphone X version 15.5

    Screen Shot 2022-07-05 at 3 19 32 PM

    opened by medokadem 0
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 621 Jan 6, 2023
OpenTok Text Chat Accelerator Pack enables text messages between mobile or browser-based devices.

Text Chat Accelerator Pack iOS This project is deprecated The OpenTok Text Chat Accelerator Pack for iOS project is now a part of Accelerator Core iOS

OpenTok 13 Jan 26, 2022
Phantom Anonymous Messenger for iOS

?? Phantom for iOS This repository contains the complete source code of Phantom for iOS. Table of Contens ?? Report Bugs/Feature Requests/Security Iss

null 2 Mar 14, 2022
A lightweight framework to build chat applications, made in Swift

Chatto Chatto is a Swift lightweight framework to build chat applications. It's been designed to be extensible and performant. Along with Chatto there

Badoo Tech 4.4k Dec 19, 2022
Swift SDK for Apache Kafka

SwiftKafka A swift implementation of Kafka for producing and consuming from event streams. This works by wrapping the librdkafka C library. Swift vers

Kitura 54 Dec 21, 2022
Open Sourced application for Jailbroken device. Program is executing commands on connected iphones

iManager Open Sourced application for Jailbroken device. Program is executing commands on connected iphones Usage Maybe the source code is helping ppl

null 15 Nov 14, 2022
MQTT for iOS and macOS written with Swift

CocoaMQTT MQTT v3.1.1 client library for iOS/macOS/tvOS written with Swift 5 Build Build with Xcode 11.1 / Swift 5.1 Installation CocoaPods Install us

EMQ X MQTT Broker 1.4k Dec 29, 2022
A very flexible message bar for iOS written in Swift.

A very flexible message bar for iOS written in Swift.

SwiftKick Mobile 6.7k Jan 5, 2023
An XMPP Framework in Objective-C for Mac and iOS

XMPPFramework An XMPP Framework in Objective-C for the Mac and iOS development community. Abstract XMPPFramework provides a core implementation of RFC

Robbie Hanson 5.9k Dec 26, 2022
A smooth, responsive and flexible messages UI library for iOS.

AsyncMessagesViewController A smooth, responsive and flexible messages UI library for iOS apps. Built on top of the awesome Texture (formerly AsyncDis

Huy Nguyen 300 Oct 10, 2022
Swift toolkit for passing messages between iOS apps and extensions.

_________ ___ ___ _ _____ _________ ___ ___ / / \ \ / / |_| ( ___ \ \__ __/ \ \ / / / _____/ \ \ /\ /

Abdullah Selek 58 Nov 3, 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
TwilioChat_iOS - Twilio iOS SDK Implementaion Chat one-one Chat One-Many (Group)

TwilioChat_iOS - Twilio iOS SDK Implementaion Chat one-one Chat One-Many (Group) - Add Participant - Remove Participant Send Attachment Image Android - iOS Tested iOS - iOS Tested iOS - Android Tested React to Message, Delete a Message Read, Delivered, Sent Delete a Conversation Unread Messages Filter

Zeeshan Haider 2 May 23, 2022
Px-mobile-sdk-demo-app - PerimeterX Mobile SDK - Demo App

About PerimeterX PerimeterX is the leading provider of application security solu

PerimeterX 1 Nov 20, 2022
Desk360 Mobile Chat SDK for iOS

Desk360 Chat iOS SDK Desk360 Chat SDK provides simplicity and usability in one place. With this feature, you can provide live support to your customer

null 5 Sep 21, 2022
Secret Messenger - a free and open source Jabber (XMPP) messaging client for Apple

Secret Messenger is a free and open source Jabber (XMPP) messaging client for Apple and Android devices focused on Privacy and Security with full OMEMO encrypted messaging support.

Secret Messenger 4 May 2, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 616 Jan 1, 2023
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 615 Dec 27, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 621 Jan 6, 2023