Flutter를 비롯한 다양한 방법으로 고객센터 AI 플랫폼 (CCAI 플랫폼)과 연동되도록 모바일 앱을 설정할 수 있습니다. 이 페이지에서는 Flutter를 사용하여 Android SDK를 Android 앱에 통합하는 방법을 설명합니다.
시작하기 전에
이 페이지의 안내를 따르기 전에 먼저 Flutter를 사용하여 통합의 안내를 따라야 합니다.
Android 앱에 SDK 통합
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 푸시 알림 설정
푸시 알림을 네이티브로 통합하려면 다음 단계를 따르세요. Android 앱에 SDK 통합에 나온 안내에 따라 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() } }