Vous pouvez configurer des applications mobiles pour qu'elles fonctionnent avec Contact Center AI Platform (CCAI Platform) de différentes manières, y compris avec Flutter. Cette page vous explique comment intégrer le SDK Android dans une application Android à l'aide de Flutter.
Avant de commencer
Avant de suivre les instructions de cette page, vous devez d'abord suivre l' instruction de la section Intégrer à l'aide de Flutter.
Intégrer le SDK dans une application Android
Pour intégrer le SDK dans une application Android, procédez comme suit :
Dans le fichier
android/build.gradledu répertoire de votre exemple Flutter, remplacezminSdkVersionpar 21 ou une version ultérieure.Dans le fichier
android/src/main/AndroidManifest.xml, ajoutez les éléments suivants :<application> <activity android:name="co.ujet.android.activity.UjetActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <!-- TODO: Change to your custom URL scheme. Config from Portal > Developer Settings > Mobile App > Enable Send SMS to Download App > Android App > URL --> <data android:host="co.ujet.flutter_example_app" android:path="/smartchannel" android:scheme="ujet" /> </intent-filter> </activity> <meta-data android:name="co.ujet.android.companyKey" android:value="@string/ujet_company_key"/> <meta-data android:name="co.ujet.android.companyName" android:value="@string/ujet_company_name"/> <meta-data android:name="co.ujet.android.subdomain" android:value="@string/ujet_subdomain"/> <meta-data android:name="co.ujet.android.companyUrl" android:value="@string/ujet_company_url"/> </application>Dans le tag
<application>, remplacez la valeurandroid:namepar.Application, comme dans l'exemple de code suivant :<!--Change the value of android:name to .Application --> <application android:name=".Application" android:label="Demo Application" android:icon="@mipmap/ic_launcher">Mettez à jour
android/build.gradle, comme dans l'exemple de code suivant :allprojects { repositories { google() mavenCentral() maven { url "https://sdk.ujet.co/android/" } } }Mettez à jour
android/app/build.gradle, comme dans l'exemple de code suivant :dependencies { // Use UJET SDK version 2.6.0 or latest to support recent push notification changes. def ujetSdkVersion = "x.y.z" implementation "co.ujet.android:ujet-android:$ujetSdkVersion" implementation "co.ujet.android:cobrowse:$ujetSdkVersion" }Mettez à jour
res/values/strings.xml, comme dans l'exemple de code suivant. Créez ce fichier s'il n'existe pas.<resources> <string name="ujet_company_key">YOUR_COMPANY_KEY</string> <string name="ujet_company_name">YOUR_COMPANY_NAME</string> <!-- If your tenant / portal url ends with "ujet.co" then set ujet_subdomain string only (ignore ujet_company_url), otherwise set ujet_company_url only (ignore ujet_subdomain) following below instructions. --> <!-- To get subdomain, extract string content between 'https://' and first '.' of your tenant/portal URL. Example, If your tenant url is https://XXX.YYY.ZZZ/ then subdomain will be XXX --> <string name="ujet_subdomain">YOUR_SUBDOMAIN</string> <!-- Use tenant url as company url here, it should be in format of https://XXX.YYY.ZZZ/api/v2 (here XXX should match with your subdomain) --> <string name="ujet_company_url">YOUR_COMPANY_URL</string> </resources>Créez un projet Firebase ou, si vous en avez déjà un, enregistrez cette application. Téléchargez le fichier
google-service.jsonet placez-le dans votre projet dans le répertoire suivant :example/android/app/.
Enregistrer le module
Pour enregistrer le module, ouvrez MainActivity.kt et initialisez UJETModule, comme dans l'exemple de code suivant :
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
//Register and Initialize UJETModule
UJETModule.init(flutterEngine.dartExecutor.binaryMessenger, applicationContext)
}
}
Configurer les notifications push Android
Procédez comme suit si vous souhaitez intégrer des notifications push de manière native. Assurez-vous d'avoir copié et collé le répertoire Firebase dans votre projet Android comme indiqué dans la section Intégrer le SDK dans une application Android.
Pour configurer les notifications push Android, procédez comme suit :
Ajoutez une dépendance Firebase pour les notifications push dans le fichier
build.gradleau niveau de l'application, comme dans l'exemple de code suivant :dependencies { implementation platform("com.google.firebase:firebase-bom:32.8.0") implementation 'com.google.firebase:firebase-messaging' }Mettez à jour
AndroidManifest.xml, comme dans l'exemple de code suivant :<application> <service android:name=".firebase.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> </application>Ajoutez un plug-in google-services au niveau racine de votre projet dans
build.gradle, comme dans l'exemple de code suivant :plugins { id 'com.google.gms.google-services' version '4.3.8' apply false }Ajoutez un plug-in google-services au niveau de l'application de votre projet dans
build.gradle, comme dans l'exemple de code suivant :plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' // google-services plugin }Créez
MyFirebaseMessagingServicequi implémenteFirebaseMessagingService, comme dans l'exemple de code suivant :class MyFirebaseMessagingService: FirebaseMessagingService() { private var firebaseTokenManager: FirebaseTokenManager? = null override fun onCreate() { super.onCreate() firebaseTokenManager = FirebaseTokenManager(this) } override fun onNewToken(token: String) { firebaseTokenManager?.updateToken(token) } override fun onMessageReceived(message: RemoteMessage) { if (Ujet.canHandlePush(message.data)) { Log.d("Firebase", "Handle the push message by UJET") } else { // Handle your notifications } } }Créez
FirebaseTokenManager, comme dans l'exemple de code suivant :class FirebaseTokenManager(context: Context) { private val sharedPreferences = context.getSharedPreferences("${context.packageName}_preferences", Context.MODE_PRIVATE) private var token: String? = null fun getToken(): String? { token = sharedPreferences.getString("firebaseToken", null) if (token == null) { FirebaseMessaging.getInstance().token.addOnCompleteListener { task: Task<String?> -> if (!task.isSuccessful || task.result == null) { return@addOnCompleteListener } token = task.result updateToken(token) } } return token } fun updateToken(token: String?) { sharedPreferences .edit() .putString("firebaseToken", token) .apply() } }