如何使用FireBase向iOS发送可操作的通知?

sim*_*mal 11 apple-push-notifications ios firebase firebase-cloud-messaging

我们目前正在评估Firebase作为未来的推送通知服务.有没有办法向iOS设备发送可操作的通知?目前我们使用parse发送推送,我们在有效负载中设置"category"参数,并且通知的其他操作正在运行.我们尝试在firebase控制台中或通过firebase rest api设置此参数,但通知操作不起作用,似乎有效负载在某种程度上与iOS预期不同.

sim*_*mal 23

感谢Malik的回答.FCM似乎将特定于Android的"click_action"属性转换为iOS特定的"category"属性.

我们通过他们的REST API发送firebase推送通知,这可以很容易地用于邮递员测试.

这是REST版本:

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

头:

  • 授权:key = YOUR_FIREBASE_SERVER_KEY
  • Content-Type:application/json

身体:

{ "notification": {
    "text": "YOUR_PUSH_TEXT",
    "click_action":"YOUR_IOS_ACTIONABLE_NOTIFICATION_CATEGORY"
  },
  "to" : "YOUR_PUSH_TOKEN",
  "data": {
    "YOUR_CUSTOM_DATA": "DATA"
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

目前FCM控制台中不支持类别,但如果您想测试,则可以使用curl post call和test.您可以从服务器向您的有效负载添加类别,并使用FCM api将通知推送到iOS.

curl --header "Authorization: key=<YOUR_SERVER_KEY>" --header Content-  Type:"application/json" https://fcm.googleapis.com/fcm/send  -d "{\"to\":\"Device Token\",\"priority\":\"high\",\"notification\": {\"title\": \"Shift Alert\",\"text\": \"Would you like to accept  shift today 11:30 to 13:30  \",\"click_action\":\"INVITE_CATEGORY\"}}"
Run Code Online (Sandbox Code Playgroud)

授权:key = YOUR_SERVER_KEY 确保这是服务器密钥,其值在项目设置>云消息传递下的Firebase项目控制台中可用.FCM拒绝Android,iOS和浏览器密钥.

INVITE_CATEGORY =您在代码中使用的类别

下面是你将获得动作点击的响应词典:

{
aps =     {
    alert =         {
        body = "Would you like to accept shift today 11:30 to 13:30  ";
        title = "Shift Alert";
    };
    category = "INVITE_CATEGORY";
};
"gcm.message_id" = "0:12233487r927r923r7329";
}
Run Code Online (Sandbox Code Playgroud)

  • 请求中的“Content-Type”有两个错误的空格,这里是正确的版本: `curl --header "Authorization: key=&lt;YOUR_SERVER_KEY&gt;" --header Content- Type:"application/json" https:// fcm.googleapis.com/fcm/send -d "{\"to\":\"设备令牌\",\"优先级\":\"高\",\"通知\": {\"标题\" : \"轮班提醒\",\"text\": \"您愿意接受今天 11:30 到 13:30 的轮班\",\"click_action\":\"INVITE_CATEGORY\"}}"` (2认同)