Flutter für Android

Sie können mobile Apps auf verschiedene Arten für die Verwendung mit der Contact Center AI Platform (CCAI Platform) einrichten, unter anderem mit Flutter. Auf dieser Seite erfahren Sie, wie Sie das Android SDK mit Flutter in eine Android-App einbinden.

Hinweise

Bevor Sie die Anleitung auf dieser Seite befolgen, müssen Sie zuerst die Anleitung unter Mit Flutter einbinden befolgen.

SDK in eine Android-App einbinden

So binden Sie das SDK in eine Android-App ein:

  1. Aktualisieren Sie in der Datei android/build.gradle in Ihrem Flutter-Beispielverzeichnis minSdkVersion auf 21 oder höher.

  2. Fügen Sie in der Datei android/src/main/AndroidManifest.xml Folgendes hinzu:

    <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>
    
  3. Aktualisieren Sie im <application>-Tag den android:name-Wert auf .Application, wie im folgenden Codebeispiel gezeigt:

    <!--Change the value of android:name to .Application -->
    <application
      android:name=".Application"
      android:label="Demo Application"
      android:icon="@mipmap/ic_launcher">
    
  4. Aktualisieren Sie android/build.gradle wie im folgenden Codebeispiel:

    allprojects {
      repositories {
        google()
        mavenCentral()
        maven {
          url "https://sdk.ujet.co/android/"
        }
      }
    }
    
  5. Aktualisieren Sie android/app/build.gradle wie im folgenden Codebeispiel:

    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"
    }
    
  6. Aktualisieren Sie res/values/strings.xml wie im folgenden Codebeispiel. Erstellen Sie sie, falls sie noch nicht vorhanden ist.

    <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>
    
  7. Erstellen Sie ein Firebase-Projekt oder registrieren Sie diese App, falls Sie bereits ein Projekt haben. Laden Sie die Datei google-service.json herunter und legen Sie sie in Ihrem Projekt im folgenden Verzeichnis ab: example/android/app/.

Modul registrieren

Öffnen Sie MainActivity.kt und initialisieren Sie UJETModule, um das Modul zu registrieren, wie im folgenden Codebeispiel:

class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)

        //Register and Initialize UJETModule
        UJETModule.init(flutterEngine.dartExecutor.binaryMessenger, applicationContext)
    }
}

Android-Push-Benachrichtigungen einrichten

Gehen Sie so vor, wenn Sie Push-Benachrichtigungen nativ einbinden möchten. Achte darauf, dass du das Firebase-Verzeichnis wie in SDK in eine Android-App einbinden beschrieben in dein Android-Projekt kopiert und eingefügt hast.

So richten Sie Android-Push-Benachrichtigungen ein:

  1. Fügen Sie in der Datei build.gradle auf App-Ebene eine Firebase-Abhängigkeit für Push-Benachrichtigungen hinzu, wie im folgenden Codebeispiel:

    dependencies {
      implementation platform("com.google.firebase:firebase-bom:32.8.0")
      implementation 'com.google.firebase:firebase-messaging'
    }
    
  2. Aktualisieren Sie AndroidManifest.xml wie im folgenden Codebeispiel:

    <application>
      <service
        android:name=".firebase.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
      </service>
    </application>
    
  3. Fügen Sie in build.gradle auf Stammebene Ihres Projekts ein google-services-Plug-in hinzu, wie im folgenden Codebeispiel:

    plugins {
      id 'com.google.gms.google-services' version '4.3.8' apply false
    }
    
  4. Fügen Sie in build.gradle auf App-Ebene Ihres Projekts ein „google-services“-Plug-in hinzu, wie im folgenden Codebeispiel:

    plugins {
      id "com.android.application"
      id "kotlin-android"
      id "dev.flutter.flutter-gradle-plugin"
      id 'com.google.gms.google-services'  // google-services plugin
    }
    
  5. Erstellen Sie MyFirebaseMessagingService, das FirebaseMessagingService implementiert, wie im folgenden Codebeispiel:

    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
              }
          }
      }
    
  6. Erstellen Sie FirebaseTokenManager wie im folgenden Codebeispiel:

      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()
          }
      }