在Firebase控制台中,我看到了使用app" com.example"向User Segement发送通知的选项。 (其中com.example是应用程序名称)。
如图所示:
但是如何使用FCM REST API从服务器端执行此操作:
答案 0 :(得分:5)
不幸的是,它是not possible to send messages to User Segments using the FCM REST API。
作为替代方案,您必须使用send messages to multiple devices的其他方式,例如只使用registration_ids
参数和主题消息(我认为最适合您使用 - 情况)。
以下是有关如何发送此using Postman或cURL的示例。
答案 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());
}