יש כמה דרכים להגדיר אפליקציות לנייד כך שיפעלו עם Contact Center AI Platform (פלטפורמת CCAI), כולל באמצעות Flutter. בדף הזה מוסבר איך לשלב את Android SDK באפליקציית Android באמצעות Flutter.
לפני שמתחילים
לפני שמבצעים את ההוראות בדף הזה, צריך קודם לפעול לפי ההוראות שבקטע שילוב באמצעות Flutter.
שילוב ה-SDK באפליקציה ל-Android
כדי לשלב את ה-SDK באפליקציה ל-Android, פועלים לפי השלבים הבאים:
בקובץ
android/build.gradleבספריית הדוגמה של Flutter, מעדכנים את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
כדי לשלב התראות פוש באופן מקורי, פועלים לפי השלבים הבאים. חשוב לוודא שהעתקתם והדבקתם את ספריית Firebase בפרויקט Android, כמו שמוסבר במאמר שילוב ה-SDK באפליקציה ל-Android.
כדי להגדיר התראות פוש ב-Android, מבצעים את השלבים הבאים:
מוסיפים תלות ב-Firebase להתראות פוש בקובץ
build.gradleברמת האפליקציה, כמו בדוגמת הקוד הבאה: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>מוסיפים פלאגין google-services ברמת השורש של הפרויקט ב-
build.gradle, כמו בדוגמת הקוד הבאה:plugins { id 'com.google.gms.google-services' version '4.3.8' apply false }מוסיפים פלאגין google-services ברמת האפליקציה של הפרויקט ב-
build.gradle, כמו בדוגמת הקוד הבאה:plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' // google-services plugin }יוצרים את
MyFirebaseMessagingServiceשמטמיע אתFirebaseMessagingService, כמו בדוגמת הקוד הבאה: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() } }