我正在玩FCM設備組中添加和刪除設備令牌的遊戲,並且我注意到如果我從組中刪除設備,並且即使存在其他設備在該組中,FCM取消notification_key
(通過嘗試重新使用相同的密鑰添加新設備來檢測)。這對我來說非常糟糕,因爲這意味着我無法將新設備添加到刪除設備的同一組中,但其他設備仍然存在。Firebase雲消息傳遞: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"]
}'
失敗。迴應是400
,與{"error": "notification_key not found"}
。我不禁想到這是一個錯誤?否則,我們預計如何動態調整一組設備的大小?
我試過了你的cURL,一切都按預期工作。請在每次操作之後使用'curl -X POST -H「授權:key = your_key」-H「Content-Type:application/json」-d'{「notification」:{「title」:「Portugal vs. Denmark」 ,「body」:「5:1」,「icon」:「firebase-logo.png」,「click_action」:「http:// localhost:8081」},「to」:「notification_key」}'「https: //fcm.googleapis.com/fcm/send「'以確保令牌已被正確添加/刪除。我用你的cURL命令減去'-H'緩存控制:no-cache''部分。 ps:現在我可以發表評論^^ – MaX
很好,你可以發表評論。 :)爲什麼你認爲需要'https:// fcm.googleapis.com/fcm/send'?這對我來說不是一個很好的選擇,因爲系統是實時的並且可能處理許多設備,所以這是我不想做的額外網絡旅行。 –
而緩存控制應該不會對此產生任何影響,如果確實如此,那我認爲這是一個全新的問題。 –