É possível configurar apps móveis para trabalhar com a Contact Center AI Platform (CCAI) de várias maneiras, incluindo com o Flutter. Nesta página, mostramos como integrar o SDK do Android a um app Android usando o Flutter.
Antes de começar
Antes de seguir as instruções nesta página, siga as instruções em Integrar usando o Flutter.
Integrar o SDK a um app Android
Para integrar o SDK a um app Android, siga estas etapas:
No arquivo
android/build.gradledo diretório de exemplo do Flutter, atualizeminSdkVersionpara 21 ou mais recente.No arquivo
android/src/main/AndroidManifest.xml, adicione o seguinte:<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>Na tag
<application>, atualize o valorandroid:namepara.Application, como neste exemplo de código:<!--Change the value of android:name to .Application --> <application android:name=".Application" android:label="Demo Application" android:icon="@mipmap/ic_launcher">Atualize
android/build.gradle, como no exemplo de código a seguir:allprojects { repositories { google() mavenCentral() maven { url "https://sdk.ujet.co/android/" } } }Atualize
android/app/build.gradle, como no exemplo de código a seguir: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" }Atualize
res/values/strings.xml, como no exemplo de código a seguir. Crie se ele não existir.<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>Crie um projeto do Firebase ou, se já tiver um, registre este app. Baixe o arquivo
google-service.jsone coloque-o no seu projeto no seguinte diretório:example/android/app/.
Registrar o módulo
Para registrar o módulo, abra MainActivity.kt e inicialize UJETModule, como
no exemplo de código a seguir:
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
//Register and Initialize UJETModule
UJETModule.init(flutterEngine.dartExecutor.binaryMessenger, applicationContext)
}
}
Configurar notificações push do Android
Siga estas etapas se quiser integrar notificações push de forma nativa. Verifique se você copiou e colou o diretório do Firebase no seu projeto Android, conforme indicado em Integrar o SDK a um app Android.
Para configurar notificações push do Android, siga estas etapas:
Adicione uma dependência do Firebase para notificações push no arquivo
build.gradleno nível do app, como no exemplo de código a seguir:dependencies { implementation platform("com.google.firebase:firebase-bom:32.8.0") implementation 'com.google.firebase:firebase-messaging' }Atualize
AndroidManifest.xml, como no exemplo de código a seguir:<application> <service android:name=".firebase.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> </application>Adicione um plug-in google-services no nível raiz do projeto em
build.gradle, como no exemplo de código a seguir:plugins { id 'com.google.gms.google-services' version '4.3.8' apply false }Adicione um plug-in google-services no nível do app do projeto em
build.gradle, como no exemplo de código a seguir:plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' // google-services plugin }Crie
MyFirebaseMessagingServiceque implementaFirebaseMessagingService, como no exemplo de código a seguir: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 } } }Crie
FirebaseTokenManager, como no exemplo de código a seguir: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() } }