2016-06-25 4 views
2

私はAndroidベースのアプリケーション(認証、データベース、通知)でFirebaseを使用しています。Firebase通知とユーザID

外部サーバー(nodejs)から通知を送信しようとしているため、ユーザーは別のユーザーに通知を送信できます。

したがって、AndroidアプリケーションはUserIdのリスト(Firebase Authからの同じID)を記憶し、このリストをnodejsサーバに送信します。

このリストでは、サーバはURL「https://fcm.googleapis.com/fcm/send」に連絡しますが、firebaseはFirebase通知によって作成された登録トークンのリストではなく、userIdのリストを送信しているため、私にInvalidRegistrationを返します。

これらのトークンを覚えておくか、ユーザーIDで通知する方法がありますか?

(そして、私は、もちろん、それが働いている、トークンのリストにしてみてください。)

var requestData = { 
    "registration_ids": userIds, //Problem is here 
    "data": { 
     "message": "A message" 
    } 
    }; 

    request({ 
     url: "https://fcm.googleapis.com/fcm/send", 
     method: "POST", 
     json: true, 
     headers: { 
      "Authorization": "key=firebaseKey", 
      "content-type": "application/json", 
     }, 
     json: requestData 
    }, 
    function(err, response, body) { 

    }); 
+1

各ユーザーの登録トークンを保存して、サーバーに通知する必要があります。 –

+0

Ok thx!この文章では、そうでなければ「登録トークンは秘密にしておかなければならないことに注意してください。 –

+1

データベース、サーバー、または秘密の永久秘密コンテナーに秘密を保持します。 –

答えて

0

はい、できます。このためには、デバイスIDトークンの代わりにこれらのユーザーIDを登録する必要があります。その後、firebaseはあなたのユーザIDを認識しました。

@Override 
public void onTokenRefresh() { 

    // Get updated InstanceID token. 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 

    Log.d(TAG, "Refreshed token: " + refreshedToken); 

    // TODO: Implement this method to send any registration to your app's servers. 
    sendRegistrationToServer(refreshedToken); //Use your Id here 
}