通知(Android)
プッシュ通知を構成します。
SDKに含まれているすべてのパブリックAPIは、HelpshiftSdk.install() APIを介してSDKを初期化した後に呼び出す必要があります。
- Android 13以降では、通知のアクセス許可はクライアントアプリによって要求されるはずです。
Helpshiftを介したプッシュ通知を構成する

Helpshiftでは、ユーザーに通知を送ることができます。これは、 iOSやAndroidのように複数のプラットフォーム に複数のユーザーがいる場合に特に便利です。通知は、ユーザーが提出した問題に対して 返信を行ったことをユーザーに伝える際に役立ちます。アプリがバックグラウンドになると、 Helpshiftから送信された通知が通知として表示されます。
FCMプッシュの詳細については、Firebase Cloud Messagingをご参照ください。
前提条件
アプリにFCMプッシュ通知を実装します。
FCMについては、 Firebase Cloud Messagingのドキュメントをご参照ください。
Helpshiftエージェントダッシュボードを構成する
Helpshiftのシステムがユーザー にプッシュ通知を送信できるようにするには、アプリにプラットフォームとしてAndroidを追加する必要があります(まだ追加していない場合)。

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

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

Helpshift Unity SDKが通知を処理するように構成する
プッシュ通知
FCMプッシュ通知プラグインの構成{#}
始める前に
- FCM Unity AndroidプラグインをFirebase Cloud Messagingガイドのドキュメントを参考にして統合します。
すでにプッシュ通知を統合している場合には、HelpshiftSdk.RegisterPushToken(string deviceToken) APIを使用してHelpshift SDKにデバイストークンを登録します。これでHelpshiftがあなたのアプリにプッシュ通知を送信できるようになりました。
これが完了すると、HelpshiftSdk.HandlePushNotification(Dictionary<string, object> pushNotificationData) APIを使用して通知で受信したペイロードを送信できるようになります。
この通知がHelpshiftのプッシュ通知サービスから送信されたものかどうかを確認するには、通知のoriginフィールドをご確認ください。これが"helpshiftの場合、その通知はHelpshiftからの通知です。
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
HelpshiftSdk.GetInstance().RegisterPushToken (token.Token);
}
public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
IDictionary<string, string> pushData = e.Message.Data;
if (pushData.ContainsKey ("origin") && pushData ["origin"].Equals ("helpshift")) {
Dictionary<string, object> hsPushData = new Dictionary<string, object>();
foreach (string key in pushData.Keys) {
hsPushData.Add (key, pushData [key]);
}
HelpshiftSdk.GetInstance().HandlePushNotification (hsPushData);
}
}
アプリケーションが実行中ではないときにプッシュ通知を受信した場合には、(Javaに登録されたプッシュ通知レシーバーを呼び出すことによって)アプリケーションはバックグラウンドで起動します。この場合、UnityEngineが初期化されていない可能性があるため、C# API HelpshiftSdk.HandlePushNotificationが役に立たない可能性があります。
Javaの受信クラスからC# APIへとプッシュ通知のペイロードをデリゲートできない場合、こういったケースにおいてはHelpshiftからのプッシュ通知を処理するためにネイティブJava API HelpshiftUnity.handlePush(Context context, Intent intent)を使用することができます。
プッシュ通知のためのレシーバーのJava実装では、このAPIを以下の例のように使用することができます。
public class HelpshiftCustomFCMService extends ListenerService {
private static final String TAG = "Helpshift Native";
@Override
public void onMessageReceived(RemoteMessage message) {
String from = message.getFrom();
Map<String, String> data = message.getData();
Log.d(TAG, "onMessageReceived, from: " + from + ", data: " + data);
String origin = data.get("origin");
if (origin != null && origin.equals("helpshift")) {
Log.d(TAG, "Helpshift Notification received");
// Handle push with native Helpshift java apis directly.
HelpshiftUnity.handlePush(this, data);
} else {
Log.d(TAG, "Notification from non-helpshift service");
// Call super to forward the notification to the default FCM service.
super.onMessageReceived(message);
}
}
}
Helpshift SDKとFCM Unityプラグインの統合に関するサンプルプロジェクトについては、こちらをご参照ください。
注意: 最新のUnity用FCMプラグインは、AndroidXライブラリを使用しています。Helpshift Unity SDK XのリファレンスをAndroidXライブラリへと更新するには、こちらの手順に従ってください。
その他のプッシュ通知プラグインを構成する
プッシュ通知用のサードパーティ製プラグインを使用している場合には、HelpshiftSdk.RegisterPushToken(string deviceToken) APIを使用してデバイストークンを登録し、HelpshiftSdk.HandlePushNotification(Dictionary<string, object> pushNotificationData) APIを使用して通知で受信したペイロードを送信することができます。
デバイストークンの登録例は、以下の通りです。
void registrationSucceededEvent( string registrationId )
{
Debug.Log( "registrationSucceededEvent: " + registrationId );
HelpshiftSdk.GetInstance().RegisterPushToken(registrationId);
}
これが完了すると、HelpshiftSdk.GetInstance().HandlePushNotification(Dictionary<string, object> pushNotificationData) APIを使用してプラグインのnotificationReceivedEventコールバックで受け取ったペイロードを送信できるようになります。
この通知がHelpshiftのプッシュ通知サービスから送信されたものかどうかを確認するには、通知のoriginフィールドをご確認ください。これが"helpshift"の場合、その通知はHelpshiftからの通知です。
アプリ内通知
アプリ内通知は、通知ドロワー内の通知に似ています。プッシュ通知とは異なり、アプリの実行中にのみ表示されます。
これらの通知は、エージェントが顧客の問題に返信したタイミングで送信されます。顧客は、通知をタップすることで直接会話画面に移動することができます。

FCMのデバイストークンがプッシュ通知に登録されている場合、アプリ内通知は無効化されます。アプリ内通知が無効化されるのは、プッシュ通知とアプリ内通知の重複を回避するためです。
ユーザーに返信が送信された際の通知数の表示
サーバーから未読メッセージの数を取得するには、Helpshift.RequestUnreadMessageCount(shouldFetchFromServer) APIを呼び出します。このAPIは、未読メッセージの数をデリゲート経由で返します。
shouldFetchFromServerの値に基づき、shouldFetchFromServerがfalseの場合にはローカルに保存されている数が返され、shouldFetchFromServerがtrueの場合にはサーバーからリモートで取得します。このカウント機能の使用例には、未読メッセージを示すバッジの数の更新が挙げられます。このメソッドを呼び出す前に、Helpshift.SetHelpshiftEventsListener(eventsListener) APIを呼び出してHelpshiftイベントのリスナーを設定する必要があることにご注意ください。
// Requesting unread count
private void RequestUnreadCount()
{
Helpshift.RequestUnreadMessageCount(false);
}
このAPIを呼び出すと、IHelpshiftEventsListenerを実装するイベントリスナーで未読の数を受け取ります。
以下は実装例です
public class HSEventsListener : IHelpshiftEventsListener
{
// ...
public void HandleHelpshiftEvent(string eventName, Dictionary<string, object> eventData)
{
if(eventName.Equals(HelpshiftEvent.RECEIVED_UNREAD_MESSAGE_COUNT))
{
Debug.Log("Unread count: " + eventData[HelpshiftEvent.DATA_MESSAGE_COUNT]);
Debug.Log("Is Unread count from cache: " + eventData[HelpshiftEvent.DATA_MESSAGE_COUNT_FROM_CACHE]);
// Do something with the unread count here, for example, update the badge count.
}
}
//...
}
- 通知の数は、SDKのキャッシュとHelpshiftのサーバーからこのAPIを介して取得されます(上記の例では
fromCacheの値で示されています)。しかしながら、Helpshiftサーバーから取得する場合の通知数についてはレートが制限されており、タイムアウトのリセット後またはユーザーがチャット画面を閉じた後(いずれかの早い方)にAPIに対する次の呼び出しが行われた場合にのみ値が返されます。タイムアウトのリセット時間は、アクティブな問題の場合は1分、そして非アクティブな問題の場合には5分に設定されています。