2

私のAndroid Appには、複数のユーザーが使用していて、異なる時間にログインする可能性があります。対象ユーザーのみに通知を表示

私は、特定のデバイスに意味し、具体的なtokensに通知を送信するためにCloud Functionsを使用していますが、私はnotificationだけそれが送られたユーザーに表示されることを確認する方法を見つけることができませんでした。

ユーザーABが、同じデバイスのアプリにログインしているとします。受信した通知はUser Aを意味しますが、現在ログに記録されているユーザーはUser Bであり、User BUser A'sの通知を表示しません。

私は私のFirebaseMessagingServiceでそれを確認するためにこの方法を試してみました:

String receiverEmail= remoteMessage.getData().get("sendTo"); 
String loggedEmail=firebaseUser.getEmail(); 
if (loggedEmail!=null){ 
    if (receiverEmail.equals(loggedEmail)){ 
    sendNotification(
     context.getString(R.string.your_friend_request_was_accepted), 
      context.getString(R.string.by)+" "+senderName); 
    } 
} 
を、それはアプリが実行されている場合にのみ、動作します。閉じても機能しません。

Shared Preferencesからログインしたユーザーを確認して確認しましたが、loggedEmailnullであり、まったく動作しませんでした。

答えて

0

両方のユーザーが同じアプリインストールを使用しているため、同じFCMトークンで識別されます。これは、サーバー上で分割を行う方法がないことを意味し、クライアント上の正しいユーザーにメッセージを転送する必要があります。

しかし、いずれのユーザーも現在このアプリを積極的に使用していない場合、通知メッセージはシステムによって処理されます。これは、現在アクティブなユーザーのコンセプトがないことを意味し、システムは一般的な通知を表示します(通常、クリックするとアプリがアクティブになります)。

FCMが本当にそのような通知をターゲティングするための最良のツールであると考えています。 FCMはFCMトークンで最も詳細なレベルをターゲットにしますが、UID(または電子メールアドレス)でターゲットを設定する可能性が高くなります。 Firebase Realtime Databaseを使ってUID(または電子メールアドレス)でメッセージを保存し、FCMを使用してデバイスに通知を送信することを検討します。ユーザが通知メッセージをクリックすると、アプリケーションが起動し、ログインした人のデータベースからメッセージを取得できます。

0

FCMメッセージのjsonにnotificationノードがある場合、システムは通知を自動的に送信します。アプリがバックグラウンドにあり、アプリがフォアグラウンドにある場合のみFirebaseMessagingServiceになります。

プッシュメッセージに既にdataノードがあります(送信先のユーザーを識別するために使用しています)ので、notificationノードを持つ必要はありません。プッシュメッセージjsonから通知ノードを削除すると、フローは常にFirebaseMessagingServiceに送られます。

関連する問題