从服务器向安装了应用程序的用户段发送通知

时间:2016-12-26 10:41:35

标签: android firebase firebase-cloud-messaging

在Firebase控制台中,我看到了使用app" com.example"向User Segement发送通知的选项。 (其中com.example是应用程序名称)。

如图所示:

enter image description here

但是如何使用FCM REST API从服务器端执行此操作:

https://fcm.googleapis.com/fcm/send

5 个答案:

答案 0 :(得分:5)

不幸的是,它是not possible to send messages to User Segments using the FCM REST API

作为替代方案,您必须使用send messages to multiple devices的其他方式,例如只使用registration_ids参数和主题消息(我认为最适合您使用 - 情况)。

以下是有关如何发送此using PostmancURL的示例。

答案 1 :(得分:5)

我找到了解决方案 您可以在FirebaseInstanceIdService类中将您的应用订阅到特定主题,例如您的应用包名称,这样您就可以发送数据按钮,如

 {
  "to" : "/topics/your_package_name",
  "data" : {
    "key1" : "value 1",
    "key2": "value 2",
   ...
  }
}

这是在FirebaseInstanceIdService类

中将您的应用订阅到主题的代码
     public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService
    {
        private final String TAG="your_tag";
        @Override
        public void onTokenRefresh() {


        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        FirebaseMessaging.getInstance().subscribeToTopic("your_app_package_name");
        }
}

它为我工作

答案 2 :(得分:0)

您实际上需要向主题发送消息..所有订阅主题的成员都会收到您的消息..

只需查看链接..

https://developers.google.com/cloud-messaging/topic-messaging

答案 3 :(得分:0)

根据操作系统订阅您的用户

主题:" android"对于Android用户

主题:" iOS"对于iOS用户

(或任何你想要的名字)

然后发送到该主题...

答案 4 :(得分:-1)

使用以下参数对https://fcm.googleapis.com/fcm/send进行发布呼叫: -

接头: -

内容类型 - 应用/ JSON

授权 - 密钥= {您的服务器密钥}

身材: -

{
    "data": {
        "my_custom_key" : "my_custom_value",

        "message" : "notification message"
     },
    "registration_ids": ["device_token1,device_token2,.........."]
}

编辑: -

基本上你需要做的是,每当你需要发送通知时,你必须从服务器端调用这个POST方法,你的应用程序将自动在OnMessageReceived中调用。您可以将其处理为: -

 @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        // TODO: Handle FCM messages here.
        // If the application is in the foreground handle both data and notification messages here.
        // Also if you intend on generating your own notifications as a result of a received FCM
        // message, here is where that should be initiated.
        Log.d(TAG, "From: " + remoteMessage.getFrom());

        Map<String, String> data=remoteMessage.getData();
        Log.d(TAG, "From: " + data.toString());
        String value=data.get("my_custom_key");
        Log.d(TAG, "From: " + value);
        String msg=data.get("message");
        Log.d(TAG, "From: " + msg);

        sendNotification(msg,value,remoteMessage.getSentTime());
    }