An Android and iOS SDK port of Zendesk for Flutter
Android min SDK 16 and iOS min OS Version 10.0
Easy and fast to use
(Native chat is obsolete and is discouraged to be used)
Android Min SDK - 16
android/app/src/main/res/values/styles.xml
Add the following style
<style name="ZendeskTheme" parent="ZendeskSdkTheme.Light">
<item name="colorPrimary">#FF5148</item>
<item name="colorPrimaryDark">#FF5148</item>
<item name="colorAccent">#FF5148</item>
</style>
android/app/src/main/AndroidManifest.xml
Inside tag, insert the following Activity
<activity android:name="zendesk.messaging.MessagingActivity"
android:theme="@style/ZendeskTheme" />
iOS Min OS Version - 10.0
In AppDelegate.swift should look like this
override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GeneratedPluginRegistrant.register(with: self)
//Snippet to make rootView as navigatable
let flutterViewController = window?.rootViewController as! FlutterViewController
let navigationController = UINavigationController.init(rootViewController: flutterViewController)
navigationController.isNavigationBarHidden = true
window.rootViewController = navigationController
window.makeKeyAndVisible()
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
You can have pre loaded localization with "Localizable.string"
See example/ios/Runnner/Localizable.string
See: https://developer.zendesk.com/embeddables/docs/ios_support_sdk/localize_text
/// Zendesk Chat instance
Zendesk2Chat z = Zendesk2Chat.instance;
/// Initialize Zendesk SDK
await z.init(accountKey, appId);
/// Optional Visitor Info information
await z.setVisitorInfo(
name: name,
email: email,
phoneNumber: phoneNumber,
);
/// Very important, for custom UI, prepare Stream for ProviderModel
await z.startChatProviders();
/// Get the updated provider Model from SDK
z.providersStream.listen((providerModel) {
/// this stream retrieve all Chat data and Logs from SDK
_providerModel = providerModel;
});
/// It is also important to disconnect and reconnect and when the app enters and exits background, to do this you can simply calll
z.disconnect()
z.connect()
To configure chat notifications, you will need to do the following configuration per platform
Inside your AppDelegate.swift import the ChatSdk
import ChatProvidersSDK
Add the following method
override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
//Messaging.messaging().apnsToken = deviceToken /// You might already have this if you are using firebase messaging
Chat.registerPushToken(deviceToken)
}
Using FCM messaging, get your FCM token and register it as follows:
Zendesk2Chat z = Zendesk2Chat.instance;
await z.registerFCMToken(fcmToken);
(calling this function has no effect on iOS)
To display the notifications, you will need to register your own FirebaseMessagingService
as a service inside the application
. You can follow the Firebase Android Docs for this. An example file that you can copy and customize can be found in the main github repo. Overally you will add the file to your application and register the service as follows:
<service
android:name="{your package name}"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
-
AccountKey
-
AppId
-
Update Cocoapods to latest version
Chat SDK
Live Chat, Customization and Providers for custom UI
Live Chat - OK
Support SDK - OK
Customization - OK
Unified SDK
Answer BOT SDK
Talk SDK