Firebase云消息传递:在许多设备中删除一个设备时,Notification_key无效

时间:2017-05-09 00:56:45

标签: firebase google-cloud-messaging firebase-cloud-messaging

我正在玩FCM设备组添加和删除设备令牌,我注意到如果我从组中删除设备,即使该组中存在其他设备,FCM也会取消notification_key (通过尝试重用相同的密钥来添加新设备来检测)。这对我来说非常糟糕,因为它意味着我无法将新设备添加到已删除设备的同一组中,但其他设备仍在那里

以下是一些确认此问题的代码(请填写适当的值):

1。使用一个设备创建设备组。

curl -X POST \
  https://android.googleapis.com/gcm/notification \
  -H 'authorization: key=YOUR_KEY' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'project_id: YOUR_PROJECT_ID' \
  -d '{
   "operation": "create",
   "notification_key_name": "some-group-identifier",
   "registration_ids": ["device-token-1"]
}'

这将返回通知密钥,我必须将其提供给我们添加新设备的下一个呼叫。

{
  "notification_key": "my-new-notification-key"
}

2。将新设备添加到现有组。

curl -X POST \
  https://android.googleapis.com/gcm/notification \
  -H 'authorization: key=YOUR_KEY' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'project_id: YOUR_PROJECT_ID' \
  -d '{
   "operation": "add",
   "notification_key_name": "some-group-identifier",
   "notification_key": "my-new-notification-key",
   "registration_ids": ["device-token-2"]
}'

回应与(1)相同。

3。从组中删除最后一个设备。

curl -X POST \
  https://android.googleapis.com/gcm/notification \
  -H 'authorization: key=YOUR_KEY' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'project_id: YOUR_PROJECT_ID' \
  -d '{
   "operation": "remove",
   "notification_key_name": "some-group-identifier",
   "notification_key": "my-new-notification-key",
   "registration_ids": ["device-token-2"]
}'

成功。与(1)和(2)相同的回答。

4。尝试将新设备添加到同一组。

curl -X POST \
  https://android.googleapis.com/gcm/notification \
  -H 'authorization: key=YOUR_KEY' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'project_id: YOUR_PROJECT_ID' \
  -d '{
   "operation": "add",
   "notification_key_name": "some-group-identifier",
   "notification_key": "my-new-notification-key",
   "registration_ids": ["device-token-3"]
}'

FAIL。回复为400{"error": "notification_key not found"}。我不能认为这是一个错误?否则我们如何期望动态调整一组设备的大小?

1 个答案:

答案 0 :(得分:0)

事实证明,我使用的registration_ids来自同一个Chrome应用,即使我更改了Chrome应用的代码,认为这会使它显示为新的。

只有在创建了三个Chrome扩展程序并为每个扩展程序生成registration_id后,FCM才会开始将它们视为单独的应用程序。在此之后,一切都完美无缺。

感谢@MaX的帮助。