您可以透過多種方式設定行動應用程式,使其與 Contact Center AI Platform (CCAI Platform) 搭配運作,包括使用 Flutter。本頁說明如何使用 Flutter 將 Android SDK 整合至 Android 應用程式。
事前準備
按照本頁的說明操作前,請先按照「使用 Flutter 整合」一文中的指示操作。
將 SDK 整合至 Android 應用程式
如要將 SDK 整合至 Android 應用程式,請按照下列步驟操作:
在 Flutter 範例目錄的
android/build.gradle檔案中,將minSdkVersion更新為 21 以上版本。在
android/src/main/AndroidManifest.xml檔案中,新增下列內容:<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>在
<application>標記中,將android:name值更新為.Application,如以下程式碼範例所示:<!--Change the value of android:name to .Application --> <application android:name=".Application" android:label="Demo Application" android:icon="@mipmap/ic_launcher">更新
android/build.gradle,如下列程式碼範例所示:allprojects { repositories { google() mavenCentral() maven { url "https://sdk.ujet.co/android/" } } }更新
android/app/build.gradle,如下列程式碼範例所示: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" }更新
res/values/strings.xml,如以下程式碼範例所示。如果不存在,請建立這個目錄。<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>建立 Firebase 專案,或註冊這個應用程式 (如果您已有專案)。 下載
google-service.json檔案,並將其放入專案的 下列目錄:example/android/app/。
註冊模組
如要註冊模組,請開啟 MainActivity.kt 並初始化 UJETModule,如下列程式碼範例所示:
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
//Register and Initialize UJETModule
UJETModule.init(flutterEngine.dartExecutor.binaryMessenger, applicationContext)
}
}
設定 Android 推播通知
如要以原生方式整合推播通知,請按照下列步驟操作。請務必按照「將 SDK 整合到 Android 應用程式中」一文的指示,將 firebase 目錄複製並貼到 Android 專案中。
如要設定 Android 推播通知,請按照下列步驟操作:
在應用程式層級的
build.gradle檔案中,為推播通知新增 Firebase 依附元件,如下列程式碼範例所示:dependencies { implementation platform("com.google.firebase:firebase-bom:32.8.0") implementation 'com.google.firebase:firebase-messaging' }更新
AndroidManifest.xml,如下列程式碼範例所示:<application> <service android:name=".firebase.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> </application>在專案的根層級,於
build.gradle中新增 google-services 外掛程式,如下列程式碼範例所示:plugins { id 'com.google.gms.google-services' version '4.3.8' apply false }在專案的應用程式層級,於
build.gradle中新增 google-services 外掛程式,如下列程式碼範例所示:plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' // google-services plugin }建立實作
FirebaseMessagingService的MyFirebaseMessagingService,如下列程式碼範例所示: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 } } }建立
FirebaseTokenManager,如以下程式碼範例所示: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() } }