Chat을 위한 Android SDK 통합 방법은?

채팅 설정

Android SDK를 채팅에 통합하는 방법

사전 요구 사항

  • 채팅 SDK 클라이언트는 Android 4.1 이상을 실행하는 장치가 필요합니다.
  • 채팅 SDK는 appcompat-v7 r24.2 이상을 사용하는 Android 버전 7.0을 타겟으로 하는 앱을 지원합니다.

AppId와 AppKey 얻기

계정 소유자/관리자로 채팅 계정에 로그인합니다. 관리자 설정 > 채널 > 채팅 및 메시징 > 모바일 SDK로 이동합니다.

1. 프로젝트에 채팅 SDK 추가

  1. i) 루트 build.gradle (project/build.gradle)에 maven URL을 추가합니다.

    
    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
    }
            
  2. ii) 앱 모듈의 build.gradle 파일 (project/app/build.gradle)에 다음 종속성을 추가합니다:

    
    apply plugin: 'com.android.application'
    android {
        // ...
    }
    dependencies {
        // ...
        implementation 'com.github.freshdesk:freshchat-android:{{latest-version}}'
    }
            

    {{latest-version}}을 여기에서 최신 버전의 SDK로 교체합니다. 예: implementation 'com.github.freshdesk:freshchat-android:2.6.1'

  3. iii) 앱이 Android 7.0+을 타겟으로 하고 이미지 첨부가 활성화된 경우, FileProvider를 구성해야 합니다. AndroidManifest.xml에 다음과 같이 제공자를 포함합니다.

    
    AndroidManifest.xml
    
        
    
    
    Strings.xml
    com.example.demoapp.provider
            

2. SDK 초기화

채팅 SDK의 다른 기능을 호출/사용하기 전에 Freshchat.init()을 앱 ID와 앱 키로 호출합니다.

앱의 런처/지원 액티비티의 onCreate() 함수에서 init()을 호출하는 것을 강력히 권장합니다. 채팅 SDK는 init() 중에 구성 요소의 존재 여부를 확인하며, 구성 요소가 누락되었거나 매니페스트 항목이 누락된 경우 경고합니다.

다음 코드 스니펫에서 YOUR-APP-ID와 YOUR-APP-KEY를 실제 앱 ID와 앱 키로 교체합니다.


FreshchatConfig config = new FreshchatConfig("YOUR-APP-ID","YOUR-APP-KEY");
Freshchat.getInstance(getApplicationContext()).init(config);

참고: Freshchat 계정이 Freshchat US 서버의 일부가 아닌 경우, 서버 위치에 따라 도메인을 지정해야 합니다. 계정의 서버 위치를 알아보려면 지원 팀에 문의하세요.

다음은 서버 위치에 따른 도메인 매핑 세부 정보입니다.

  • US2 - "https://msdk.us2.freshchat.com"
  • EU - "https://msdk.eu.freshchat.com"
  • AU - "https://msdk.au.freshchat.com"
  • IN - "https://msdk.in.freshchat.com"

샘플 코드:


freshchatConfig.setDomain("msdk.in.freshchat.com");

2.1 초기화 구성 옵션

초기화 전에 구성에서 카메라 캡처와 같은 기능을 활성화 또는 비활성화할 수 있습니다.


FreshchatConfig config = new FreshchatConfig("YOUR-APP-ID","YOUR-APP-KEY");
config.setCameraCaptureEnabled(true);
config.setGallerySelectionEnabled(true);
config.setResponseExpectationEnabled(true);
Freshchat.getInstance(getApplicationContext()).init(config);

3. 사용자 정보

3.1 사용자 정보 업데이트

지원 에이전트가 사용자와 메시지를 주고받을 때 사용자에 대한 더 많은 컨텍스트를 제공하기 위해 언제든지 기본 사용자 정보를 보낼 수 있습니다.


// 현재 설치에 대한 사용자 객체 가져오기
FreshchatUser freshchatUser = Freshchat.getInstance(getApplicationContext()).getUser();
freshchatUser.setFirstName("John");
freshchatUser.setLastName("Doe");
freshchatUser.setEmail("john.doe.1982@mail.com");
freshchatUser.setPhone("+91", "9790987495");

// 사용자 정보를 Freshchat 서버와 동기화하기 위해 setUser 호출
Freshchat.getInstance(getApplicationContext()).setUser(freshchatUser);

3.2 사용자 속성(메타 데이터) 업데이트

앱 내 사용자 및 이벤트에 대한 추가 메타데이터를 캡처하고 보낼 수 있으며, 이를 통해 사용자를 세분화하여 나중에 메시지를 푸시할 수 있습니다.


/* 에이전트에게 더 많은 컨텍스트를 제공하고, 마케팅 또는 사전 메시징을 위한 세분화를 위해 사용자 정의 메타데이터 설정 */
Map userMeta = new HashMap();
userMeta.put("userLoginType", "Facebook");
userMeta.put("city", "SpringField");
userMeta.put("age", "22");
userMeta.put("userType", "premium");
userMeta.put("numTransactions", "5");
userMeta.put("usedWishlistFeature", "yes");

// 사용자 속성을 채팅 서버와 동기화하기 위해 setUserProperties 호출
Freshchat.getInstance(getApplicationContext()).setUserProperties(userMeta);

3.3 타임라인에 사용자 이벤트 기록 (버전 3.1.0부터 사용 가능)

사용자 이벤트를 추적하면 애플리케이션 내 사용자에 대한 더 많은 통찰력과 컨텍스트를 제공합니다. 사용자 행동, 실패/오류 사례와 같은 이벤트는 이 API를 사용하여 추적할 수 있습니다. 추적된 이벤트는 에이전트 측의 이벤트 타임라인에 나열됩니다.


String eventName = "Visited Order Details page";

// 아래와 같이 필요한 속성을 설정하여 맵 생성
HashMap
properties = new HashMap<>(); properties.put("Order Id", 3223232332); properties.put("Order Date", "24 Jan 2020"); properties.put("Order Status ", "In-Transit"); // 이벤트 이름과 속성 맵을 전달하여 trackEvent 호출 Freshchat.trackEvent(getContext(), eventName, properties); 참고: 1. 채팅은 계정당 최대 121개의 고유 이벤트만 허용합니다. 2. 이벤트 이름은 문자열 값(최대 32자)을 허용합니다. 3. 속성 키 이름은 문자열 유형이어야 합니다(최대 32자). 4. 속성 값은 모든 기본 객체 유형일 수 있습니다(최대 256자). 5. 채팅은 이벤트당 최대 20개의 속성을 전송할 수 있습니다. 3.4 사용자 데이터 초기화 앱에서 로그아웃하거나 사용자 동작에 따라 적절하다고 판단될 때 resetUser API를 호출하여 사용자 데이터를 초기화합니다. Freshchat.resetUser(getApplicationContext()); 3.5 사용자 복원 기기/세션/플랫폼 간의 채팅 메시지를 유지하려면 모바일 앱이 동일한 외부 ID와 복원 ID 조합을 사용자에게 전달해야 합니다. 이를 통해 사용자는 Android, iOS 및 웹과 같은 지원되는 플랫폼에서 원활하게 대화를 이어갈 수 있습니다. 외부 ID - 이는 사용자 ID나 이메일 ID와 같은 시스템의 사용자에 대한 고유 식별자여야 하며 Freshchat.identifyUser() API를 사용하여 설정됩니다. 사용자가 설정한 후에는 변경할 수 없습니다. 복원 ID - 이는 외부 ID가 설정된 현재 사용자에 대해 채팅에서 생성되며 Freshchat.getUser().getRestoreId() API를 사용하여 언제든지 검색할 수 있습니다. 앱은 외부 ID와 복원 ID 조합을 저장하고 나중에 채팅 SDK에 제공하여 동일한 기기 또는 다른 기기 및 플랫폼에서 세션 간에 채팅 대화를 계속해야 합니다. 참고: 1. 사용자의 복원 ID는 일반적으로 사용자가 메시지를 보낸 경우에만 생성됩니다. 2. 알림은 한 번에 하나의 모바일 기기에서만 지원되며 현재는 마지막으로 복원된 기기 또는 마지막으로 업데이트된 푸시 토큰이 있는 기기입니다. 외부 ID 설정 Freshchat.getInstance(getApplicationContext()).identifyUser(externalId, null); 복원 ID 검색 String restoreId = Freshchat.getInstance(getApplicationContext()).getUser().getRestoreId(); saveRestoreIdForUser(restoreId); 외부 ID와 복원 ID로 사용자 조회 및 복원 Freshchat.getInstance(getApplicationContext()).identifyUser(externalId, restoreId); 복원 ID 생성 이벤트 수신 대기 복원 ID 생성은 비동기 프로세스입니다. 따라서 복원 ID가 생성될 때 알림을 받기 위해 브로드캐스트 수신기를 등록해야 합니다. 이 수신기는 애플리케이션 클래스의 onCreate에서 등록하고 onTerminate에서 등록 취소할 수 있습니다. 브로드캐스트 수신기 등록 IntentFilter intentFilter = new IntentFilter(Freshchat.FRESHCHAT_USER_RESTORE_ID_GENERATED); LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(broadcastReceiver, intentFilter); 브로드캐스트 수신기 수신 대기 BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String restoreId = Freshchat.getInstance(getApplicationContext()).getUser().getRestoreId(); } }; 브로드캐스트 수신기 등록 취소 LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(broadcastReceiver); 4. 지원 솔루션 실행 앱의 호출 작업에서 FAQ 또는 대화 기반 지원 경험을 시작하려면 아래의 스니펫을 사용하세요. 호출 작업 또는 진입점은 화면의 버튼이나 메뉴 항목일 수 있습니다. 4.1 대화 메뉴 선택 또는 버튼 클릭 이벤트와 같은 특정 UI 이벤트에 응답하여 showConversations() API를 호출하여 대화 흐름을 시작합니다. 앱에 여러 채널이 구성되어 있는 경우 사용자는 채널 목록을 보게 됩니다. 메시지가 없는 경우 채널 목록은 대시보드에 지정된 순서대로 정렬됩니다(대시보드의 채널 목록 링크). 메시지가 있는 경우 순서는 가장 최근에 상호작용한 채널을 기준으로 합니다. 참고: showConversations() API를 사용할 때 "모든 사용자에게 표시"로 설정된 메시지 채널만 표시됩니다. 앱 화면의 버튼 클릭으로 대화 목록 시작 myConversationsButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Freshchat.showConversations(getApplicationContext()); } }); 4.1.1 대화 채널 필터링 특정 용어로 태그된 메시지 채널만 필터링하고 표시하려면 아래와 같이 showConversations() API에 전달된 ConversationOptions 인스턴스에서 filterByTags API를 사용하세요. 예: 앱의 주문 페이지에서 특정 메시지 채널만 연결하고 표시하려면 해당 메시지 채널을 "order_queries"라는 용어로 태그할 수 있습니다. List tags = new ArrayList<>(); tags.add("order_queries"); ConversationOptions options = new ConversationOptions() .filterByTags(tags, "Order Queries"); Freshchat.showConversations(MainActivity.this, options); 참고: 1. 일치하는 채널이 없으면 사용자는 기본 채널로 리디렉션됩니다. 2. showConversations() API를 사용할 때 일반적으로 보이지 않는 메시지 채널도 태그가 지정되고 해당 태그가 showConversations() API에 전달된 ConversationOptions 인스턴스의 filterByTags API에 전달되면 표시됩니다. 4.1.2 읽지 않은 메시지 수 앱 시작 시 또는 기타 특정 이벤트에서 사용자의 읽지 않은 메시지 수를 얻으려면 getUnreadCountAsync API를 사용하고 수를 표시하세요. Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() { @Override public void onResult(FreshchatCallbackStatus freshchatCallbackStatus, int unreadCount) { // "badgeTextView"가 수를 표시할 텍스트 뷰라고 가정합니다. badgeTextView.setText(Integer.toString(unreadCount)); } }); 앱이 열려 있을 때 읽지 않은 수의 변경 사항을 수신 대기하도록 선택할 수도 있습니다. 브로드캐스트 수신을 듣는 방법은 아래에 설명되어 있습니다. 브로드캐스트 수신기 등록 IntentFilter intentFilter = new IntentFilter(Freshchat.FRESHCHAT_UNREAD_MESSAGE_COUNT_CHANGED); getLocalBroadcastManager(getApplicationContext()).registerReceiver(unreadCountChangeReceiver, intentFilter); 읽지 않은 수 수신 대기 BroadcastReceiver unreadCountChangeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() { @Override public void onResult(FreshchatCallbackStatus freshchatCallbackStatus, int unreadCount) { // "badgeTextView"가 수를 표시할 텍스트 뷰라고 가정합니다. badgeTextView.setText(Integer.toString(unreadCount)); } }); } } 브로드캐스트 수신기 등록 취소 getLocalBroadcastManager(getApplicationContext()).unregisterReceiver(unreadCountChangeReceiver); 4.1.3 태그로 필터링된 대화에서 읽지 않은 메시지 수 특정 대화에서 태그로 필터링된 사용자의 읽지 않은 메시지 수를 얻으려면 getUnreadCountAsync API를 사용하세요. Listtags = new ArrayList<>(); tags.add("premium"); // 대화 필터링을 위한 태그 Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() { @Override public void onResult(FreshchatCallbackStatus FreshchatCallbackStatus, int unreadCount) { badgeTextView.setText(Integer.toString(unreadCount)); } }, tags); 4.2. FAQ 특정 UI 이벤트(예: 메뉴 선택 또는 버튼 클릭 이벤트)에 응답하여 showFAQs() API를 호출하여 FAQ 화면을 시작합니다. 기본적으로 FAQ 카테고리는 하단에 "문의하기" 버튼이 있는 그리드로 표시됩니다. 이를 사용자 정의하려면 FAQ 옵션을 확인하세요. myFAQButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Freshchat.showFAQs(getApplicationContext()); } }); 4.2.1 FAQ 옵션 FAQ 흐름의 사용자 정의는 showFAQs() API에 전달된 FaqOptions 인스턴스에서 관련 옵션을 지정하여 달성할 수 있습니다. // 앱 화면의 버튼 클릭으로 FAQ 시작하기 myFAQButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { FaqOptions faqOptions = new FaqOptions() .showFaqCategoriesAsGrid(true) .showContactUsOnAppBar(true) .showContactUsOnFaqScreens(false) .showContactUsOnFaqNotHelpful(false); Freshchat.showFAQs(MainActivity.this, faqOptions); } }); 4.2.2 태그로 FAQ 카테고리 필터링 특정 용어로 태그된 FAQ 카테고리만 필터링하고 표시하려면, showFAQs() API에 전달된 FAQOptions 인스턴스에서 Filter Type을 카테고리로 설정하여 filterByTags API를 사용하세요. 예: 특정 사용자 유형과 관련된 FAQ 카테고리를 표시하려면, 해당 FAQ 카테고리를 "premium"이라는 용어로 태그할 수 있습니다. List tags = new ArrayList<>(); tags.add("premium"); FaqOptions faqOptions = new FaqOptions() .filterByTags(tags, "FAQs", FaqOptions.FilterType.CATEGORY); // 태그, 필터링된 화면 제목, 유형 Freshchat.showFAQs(MainActivity.this, faqOptions); 4.2.3 태그로 FAQ 기사 필터링 특정 용어로 태그된 FAQ만 필터링하고 표시하려면, showFAQs() API에 전달된 FAQOptions 인스턴스에서 Filter Type을 기사로 설정하여 filterByTags API를 사용하세요. 참고: FAQ는 상위 FAQ 카테고리의 태그를 상속받습니다. 예: 결제 실패와 관련된 FAQ에 연결하려면, 해당 FAQ를 "payment_failure"라는 용어로 태그하고 앱의 결제 페이지에서 연결할 수 있습니다. List tags = new ArrayList<>(); tags.add("payment_failure"); FaqOptions faqOptions = new FaqOptions() .filterByTags(tags, "payment_failure", FaqOptions.FilterType.ARTICLE); // 태그, 필터링된 화면 제목, 유형 Freshchat.showFAQs(MainActivity.this, faqOptions); 4.2.4 FAQ에서 "문의하기" 클릭 시 표시되는 메시지 채널을 태그로 필터링 FAQ 화면에서 사용자가 "문의하기"를 클릭할 때 특정 용어로 태그된 메시지 채널만 필터링하고 표시하려면, showFAQs() API에 전달된 FAQOptions 인스턴스에서 filterContactUsByTags API를 사용하세요. 참고: FAQ 흐름 내에서 "문의하기"의 기본 동작은 showConversations()를 호출하는 것과 동일합니다. 즉, "모든 사용자에게 표시"로 표시된 모든 채널이 표시됩니다. 단, filterContactUsByTags API에 태그를 전달하여 채널 필터링이 활성화된 경우는 예외입니다. 예: 특정 FAQ 쇼 섹션과 관련된 메시지 채널을 표시하려면, 해당 메시지 채널을 "payment_failure"라는 용어로 태그할 수 있습니다. List tags = new ArrayList<>(); tags.add("payment_failure"); FaqOptions faqOptions = new FaqOptions() .filterContactUsByTags(tags, "Payments"); // 태그, 필터링된 화면 제목 Freshchat.showFAQs(MainActivity.this, faqOptions); 5. 메시지 전송 API 앱은 sendMessage() API를 사용하여 사용자를 대신하여 메시지를 보낼 수 있습니다. 참고: 이 API는 메시지를 조용히 보내며 채팅 SDK UI를 시작하지 않습니다. 예: "premium"으로 태그된 채널에 메시지를 보내려면, 아래와 같이 API를 호출할 수 있습니다. String tag = "premium"; String msgText = "사용자가 주문 #1234에 문제가 있습니다"; FreshchatMessage FreshchatMessage = new FreshchatMessage().setTag(tag).setMessage(msgText); Freshchat.sendMessage(getContext(), FreshchatMessage); 6. 푸시 알림 앱에 채팅 푸시 알림을 통합하면 사용자가 지원 메시지를 더 빨리 받을 수 있습니다. 6.1 FCM과 채팅 연결하기 사전 요구 사항 FCM이 앱에 구현됨 Play Services가 실행 중인 기기 채팅 웹 포털에 저장된 FCM 서버 키 단계 채팅 웹 포털에 FCM 서버 키 저장 기기 등록 토큰을 채팅에 전송 메시지 처리 6.1.1 채팅 웹 포털에 FCM 서버 키 저장 애플리케이션의 Firebase FCM 서버 키를 가져와서 채팅 웹 앱의 설정 > 모바일 SDK > FCM 서버 키 섹션에 저장하세요. 6.1.2 기기 등록 토큰을 채팅에 전송 사용자 푸시 등록 토큰을 채팅 SDK에 전송하세요. String token = FirebaseInstanceId.getInstance().getToken(); Freshchat.getInstance(this).setPushRegistrationToken(token); 6.1.3 메시지 처리 앱의 FirebaseMessagingService 구현에서, RemoteMessage 객체가 채팅 알림인 경우 이를 채팅에 전달하세요. public void onMessageReceived(RemoteMessage remoteMessage) { if (Freshchat.isFreshchatNotification(remoteMessage)) { Freshchat.handleFcmMessage(context, remoteMessage); } else { // 앱의 데이터 페이로드가 있는 알림 처리 } } 6.2 알림 사용자 정의 채팅 SDK는 알림에 대해 다음과 같은 사용자 정의를 지원합니다. 1. 알림 아이콘 (작은 아이콘 및 큰 아이콘) - 명시적으로 설정되지 않은 경우 작은 아이콘의 기본값은 앱 아이콘입니다. 2. 알림 소리 - 알림음을 활성화하거나 비활성화합니다. 기본적으로 비활성화되어 있습니다. 3. 알림 우선순위 - Android 8.0 미만 기기에서 알림의 우선순위입니다. 기본값은 NotificationCompat.PRIORITY_DEFAULT입니다. 4. 알림 중요도 - Android 8.0+ 기기에서 알림의 중요도입니다. 기본값은 NotificationManagerCompat.IMPORTANCE_DEFAULT입니다. 이를 수정하여 헤드업 알림을 표시할 수 있습니다. 5. 알림에서 시작된 메시지 화면에서 위로 탐색할 때 시작할 활동. 알림에서 시작된 메시지 화면은 백스택에 탐색할 활동이 없습니다. 시작할 활동 클래스 이름을 지정하세요. 6. 알림의 작은 아이콘 뒤 원의 강조 색상을 지정하려면, @color/red 7. Oreo 및 이후 버전의 Android에서는 알림을 전달하는 데 사용되는 알림 채널 이름을 아래와 같이 문자열을 재정의하여 사용자 지정할 수 있습니다. 캠페인 메시지     8. 알림 구성 지정, FreshchatNotificationConfig notificationConfig = new FreshchatNotificationConfig()    .setNotificationSoundEnabled(true)    .setSmallIcon(R.drawable.ic_notif_small_icon)    .setLargeIcon(R.drawable.ic_notif_large_icon)    .launchActivityOnFinish(MainActivity.class.getName())    .setPriority(NotificationCompat.PRIORITY_HIGH); Freshchat.getInstance(getApplicationContext()).setNotificationConfig(notificationConfig);   Android Oreo 지원 Chat은 Oreo 또는 이후 버전에서 기본적으로 알림 채널을 지원합니다. 대화 메시지에 대한 알림 채널을 자동으로 생성합니다. 참고: 아직 FCM을 통합하지 않았다면, 여기를 따라 지침을 수행한 후 위의 3단계를 따르십시오.   7. 언어 현지화 7.1 기본 SDK 텍스트 변경 SDK의 모든 문자열은 strings.xml에서 재정의하여 수정할 수 있습니다. 모든 Chat 텍스트는 여기에 있습니다.   7.2 현지화 7.2.1 기본 Chat 텍스트의 언어 현지화 SDK의 모든 문자열은 해당 지역 strings.xml 파일에서 재정의하여 수정할 수 있습니다. 모든 Chat 텍스트는 여기에 있습니다. 자세한 내용은 Android 개발자 문서를 참조하십시오.   7.2.2 FAQ 및 채널의 언어 현지화 FAQ 및 채널이 Chat 웹 앱에서 현지화되면, SDK는 사용자의 앱/디바이스 로케일에 따라 콘텐츠를 자동으로 업데이트합니다.   7.3 오른쪽에서 왼쪽으로 쓰는 언어 지원 Chat SDK는 RTL 언어를 지원합니다.    7.4 런타임 앱 로케일 변경   앱이 디바이스의 기본 로케일 외에 다른 로케일(언어)을 지원할 수 있는 경우, Chat SDK에서 로케일을 업데이트하려면 아래 단계를 따르십시오.   1. 앱이 로케일을 변경하면, 아래 메서드를 사용하여 SDK에 앱 로케일 변경을 알립니다, Freshchat.notifyAppLocaleChange(activityContext); 2. Chat은 SDK의 일부로 웹뷰를 내부적으로 사용하며, Android OS 버전 7.0부터 웹뷰는 로드 중에 로케일을 변경합니다. 이를 해결하기 위해, onLocaleChangedByWebView() 콜백 메서드를 제공하며, 이 함수 내에서 로케일을 다시 설정해야 합니다. FreshchatWebViewListener 구현 private FreshchatWebViewListener webviewListener = new FreshchatWebViewListener() {    @Override    public void onLocaleChangedByWebView(@NonNull WeakReference activityContext) {      if (activityContext.get() == null) {        return;      }           // 여기에서 런타임 로케일을 재설정합니다      changeLocale(activityContext, appLocale);    }  }; Chat 인스턴스에 웹뷰 리스너 설정. 이는 Application 클래스의 onCreate()에서 수행하는 것을 권장합니다.  Freshchat.getInstance(this).setWebviewListener(webviewListener);   8. 사용자 지정   8.1 UI 사용자 지정 옵션 테마 문서를 참조하십시오.   8.2 사용자 지정 이미지 로더 SDK는 기본적으로 이미지를 다운로드하기 위해 Picasso 2.5.2 라이브러리를 포함합니다. 다른 버전의 Picasso나 다른 이미지 다운로드 라이브러리를 사용하려면, setImageLoader() API를 사용하여 Chat SDK에 사용자 지정 이미지 다운로더를 설정할 수 있습니다.   예시: 사용자 지정 이미지 로더 구현 public class CustomImageLoader implements FreshchatImageLoader {    @Override public void load(@NonNull FreshchatImageLoaderRequest request, @NonNull ImageView imageView) {    // 이미지 다운로드 및 이미지뷰에 설정하는 코드  }    @Nullable  @Override  public Bitmap get(@NonNull FreshchatImageLoaderRequest request) {    // 이미지를 다운로드하고 비트맵 이미지를 반환하는 코드  }    @Override  public void fetch(@NonNull FreshchatImageLoaderRequest request) {    // 이미지 다운로드 코드  } }     Application 클래스의 onCreate()에서 Freshchat.setImageLoader() 호출 public class MyApp extends Application {    @Override  public void onCreate() {    super.onCreate();    Freshchat.setImageLoader(new CustomImageLoader());  } }   9. 기타 참고 사항   9.1 출시를 위한 체크리스트 SDK를 애플리케이션 또는 지원 활동의 onCreate에서 초기화하고 있는지 확인하십시오. 최신 버전의 SDK를 사용하고 있는지 확인하십시오. 첫 실행부터 푸시 알림이 제대로 작동하고 올바른 알림 아이콘이 구성되어 있는지 확인하십시오. 알림에 대한 앱 이름이 올바르게 설정되어 있는지 확인하십시오. 다른 채널을 사용하지 않더라도 기본 채널 이름과 환영 메시지를 올바르게 구성하십시오. SDK와 함께 고유 사용자 식별자, 이메일, 전화번호 또는 기타 고유 고객 식별자를 캡처하여 API의 원활한 사용과 대시보드에서 "스마트 플러그" 기능을 최적으로 활용하십시오. 푸시 알림이 새 설치 및 이전 버전에서의 업그레이드에 대해 작동하는지 확인하십시오.   9.2 권한 Chat SDK는 앱이 Marshmallow 또는 이후 버전으로 targetSdk를 설정한 경우, Marshmallow에서 도입된 런타임/동적 권한 모델을 지원하도록 구축되었습니다.   9.3 Proguard 구성 (앱에서 Proguard가 활성화된 경우) Chat Android SDK는 Proguard를 지원하도록 기본적으로 구성되어 있습니다. Proguard는 SDK에 대한 구성을 자동으로 가져오며, 수동 구성은 필요하지 않습니다. 9.4. 최신 SDK 버전 Freshchat Android SDK의 최신 버전을 액세스하고 검토하려면 아래 링크를 확인하십시오: https://github.com/freshdesk/freshchat-android/releases

이 문서가 도움이 되었나요?

Freshdesk Omni AI 도우미

Chat을 위한 Android SDK 통합 방법은?

AI 어시스턴트 초기화 중...