メインコンテンツまでスキップ

通知

プッシュ通知を構成する

注意

SDKに含まれているすべてのパブリックAPIは、Helpshift.install() APIを介してSDKを初期化した後に呼び出す必要があります。

  • Android 13以降では、通知のアクセス許可はクライアントアプリによって要求されるはずです。

Helpshiftを介したプッシュ通知

urbanAirshipNotif.png

Helpshiftでは、エージェントが会話に返信したタイミングでプッシュ通知を送信することができます。

前提条件

アプリにFCMプッシュ通知を実装します。

FCMについては、 Firebase Cloud Messagingのドキュメントをご参照ください。

Helpshiftエージェントダッシュボードを構成する

Helpshiftのシステムがユーザー にプッシュ通知を送信できるようにするには、アプリにプラットフォームとしてAndroidを追加する必要があります(まだ追加していない場合)

「構成」ボタンをクリックし、プッシュ通知オプションをクリックします。

「設定」ページ、左側のナビゲーションにある「アプリ一覧」の順に移動し、 プッシュ 通知の設定セクションまで下にスクロールし、アプリごとにFCMキーの認証情報を入力します。

FCMユーザーの場合、認証キーファイルは Firebase APIコンソール でご確認いただけます。詳細については、こちらをクリックしてください


SDKを構成する

  1. Helpshift.registerDeviceToken API経由でHelpshiftにデバイス登録IDを送信します。
        public class MyFirebaseMessagingService extends FirebaseMessagingService {

// ...
@Override
public void onNewToken(String newToken) {
// your logic to save the token here for the app
Helpshift.registerPushToken(newToken);
}
}
  1. 引数"RemoteMessage"を提供するFCMの新しいFirebaseMessagingServiceを使用するには、引数Mapを取るHelpshift.handlePush APIを使用する必要があります。
        @Override
public void onMessageReceived(RemoteMessage message) {
Map<String, String> data = message.getData();
String origin = data.get("origin");
if (origin != null && origin.equals("helpshift")) {
Helpshift.handlePush(data);
}
}

アプリ内通知

アプリ内通知は、通知ドロワー内の通知に似ています。プッシュ通知とは異なり、アプリの実行中にのみ表示されます。

これらの通知は、エージェントが顧客の問題に返信したタイミングで送信されます。顧客は、通知をタップすることで直接会話画面に移動することができます。

注意

FCMのデバイストークンがプッシュ通知に登録されている場合、アプリ内通知は無効化されます。アプリ内通知が無効化されるのは、プッシュ通知とアプリ内通知の重複を回避するためです。

通知アイコンのカスタマイズ

デフォルトでは、アプリケーションアイコンが通知アイコンとして使用されます。通知アイコンは、install呼び出しの構成を使用してカスタマイズすることができます。

    public class MainApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Map<String, Object> configurations = new HashMap<>();
configurations.put("notificationIcon", R.drawable.notification_icon);
configurations.put("notificationLargeIcon", R.drawable.notification_large_icon);

// Install call
Helpshift.install(this,
"<PLATFORM_ID>",
"<DOMAIN>",
configurations);
}
}

通知音のカスタマイズ

デフォルトでは、デフォルトのデバイス通知音がHelpshiftの通知に使用されます。通知音は、インストール呼び出しの構成を使用してカスタマイズすることができます。

例:

    public class MainApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Map<String, Object> configurations = new HashMap<>();
configurations.put("notificationSoundId", R.raw.notification_sound);

// Install call
Helpshift.install(this,
"<PLATFORM_ID>",
"<DOMAIN>",
configurations);
}
}

通知チャネルのカスタマイズ

Android Oreo以降、Helpshiftの通知はIn-app Supportという名前のデフォルトのチャネルを作成します。デフォルトのチャネル名と説明をカスタマイズする場合は、install呼び出しのconfigを使用します。

例:

    public class MainApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Map<String, Object> configurations = new HashMap<>();
configurations.put("notificationChannelId", "your channel name here");

// Install call
Helpshift.install(this,
"<PLATFORM_ID>",
"<DOMAIN>",
configurations);
}
}

アプリ内通知を構成する

Helpshift SDKが提供するアプリ内通知サポートが不要な場合には、フラグをfalseに設定します。このフラグの規定値はtrueであり、この場合アプリ内通知が有効化されます。

  • Flag: enableInAppNotification
  • Values: true/false
  • Default: true

例:

    public class MainApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Map<String, Object> configurations = new HashMap<>();
configurations.put("enableInAppNotification", false);

// Install call
Helpshift.install(this,
"<PLATFORM_ID>",
"<DOMAIN>",
configurations);
}
}

ユーザーに返信が送信された際の通知数の表示

サーバーから未読メッセージの数を取得するには、requestUnreadMessageCount(boolean shouldFetchFromServer) APIを呼び出します。このAPIは、未読メッセージの数をデリゲート経由で返します。 shouldFetchFromServerの値に基づき、shouldFetchFromServerfalseの場合にはローカルに保存されている数が返され、shouldFetchFromServertrueの場合にはサーバーからリモートで取得します。

    private void updateAppBadgeCount(){
Helpshift.requestUnreadMessageCount(false);
}

// ...
Helpshift.setHelpshiftEventsListener(new HelpshiftEventsListener() {
@Override
public void onEventOccurred(@NonNull String eventName, Map<String, Object> data) {
switch(eventName){
case HelpshiftEvent.RECEIVED_UNREAD_MESSAGE_COUNT:
int count = (int) data.get(HelpshiftEvent.DATA_MESSAGE_COUNT);
boolean fromCache = (boolean) data.get(HelpshiftEvent.DATA_MESSAGE_COUNT_FROM_CACHE);
if (fromCache) {
Log.d("Notification Count", "local" + count);
} else {
Log.d("Notification Count", "server" + count);
}
}
}
// ...
  • 通知の数は、SDKのキャッシュとHelpshiftのサーバーからこのAPIを介して取得されます(上記の例ではfromCacheの値で示されています)。しかしながら、Helpshiftサーバーから取得する場合の通知数についてはレートが制限されており、タイムアウトのリセット後またはユーザーがチャット画面を閉じた後(いずれかの早い方)にAPIに対する次の呼び出しが行われた場合にのみ値が返されます。タイムアウトのリセット時間は、アクティブな問題の場合は1分、そして非アクティブな問題の場合には5分に設定されています。