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 à une application Android à l'aide de Flutter.
Avant de commencer
Avant de suivre les instructions de cette page, vous devez d'abord suivre les instructions de la section Intégrer avec Flutter.
Intégrer le SDK à une application Android
Pour intégrer le SDK à une application Android, procédez comme suit :
Dans le fichier
android/build.gradledu répertoire d'exemple Flutter, mettez à jourminSdkVersionvers la version 21 ou 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 la balise
<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-le 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
Suivez ces étapes si vous souhaitez intégrer les notifications push de manière native. Assurez-vous d'avoir copié et collé le répertoire Firebase dans votre projet Android, comme indiqué dans Intégrer le SDK à 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 votre 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() } }