我按照here所述生成notification_key
。
假设由于某些错误我无法存储它,所以我尝试重新注册
这次我收到400错误消息"notification_key already exists"
这看起来很奇怪,特别是与registration of a device to GCM相比,您可以根据需要注册多次,并始终获得状态为200的相同注册ID。
现在我无法重新注册,而且我也无法取消注册,因为我没有notification_id
。
有没有办法从GCM获得之前生成的notification_key
?
或者是使用其他notification_key_name
再次注册的唯一方法?
答案 0 :(得分:8)
我找不到任何关于它的文档,但现在可以通过向https://fcm.googleapis.com/fcm/notification?notification_key_name=my_notification_key_name notification_key
请求GET
请求恢复设备组Authorization: key=my_key
来获取所需的标头:{ {1}},Content-Type: application/json
和project_id: my_id
。
您会收到{
"notification_key": "lost_key"
}
但请注意,返回的notification_key与原始版本不同,但您可以同时使用它们。
答案 1 :(得分:4)
根据文档,无法从GCM获取现有notification_key
的{{1}}。如果您考虑一下,尝试为现有notification_key_name
创建新的notification_key
会给您一个错误是有意义的,因为如果不是这样,您可能会意外地覆盖注册如果您错误地提供现有notification_key_name
,则现有notification_key
的ID。
您正在将此与多次向GCM注册设备进行比较,每次都获得相同的注册ID,但情况并非如此。将设备注册到GCM时,GCM可以识别设备并知道它已经注册并返回相同的注册ID。使用用户通知时,它只提供您提供的notification_key_name
,并且没有什么可以阻止您对多个用户使用相同的notification_key_name
。也就是说,有一些阻止你的东西 - 尝试使用之前使用的notification_key_name
创建notification_key
时出现的错误。
解决问题的一种简单方法是将notification_key_name
视为服务器生成的唯一标识符。如果某个用户没有notification_key_name
(因为它是新用户,或者因为您未能存储之前从Google获得的notification_key
),则会生成新的唯一{{1}并使用它来创建一个新的notification_key
。您不必关心您未能存储的旧notification_key_name
。
最后,您将notification_key
和notification_key
存储在包含用户ID的表中。
答案 2 :(得分:-1)
如果您碰巧知道设备组中的所有注册注册ID。然后将它们全部删除,设备组也将被删除。之后,您可以使用之前使用的notification_key_name创建设备组。