我生成了here,描述为notification_key
。
假设由于某些错误我无法存储它,所以我尝试重新注册。
这次,我收到400错误消息"notification_key already exists"
。
这看起来很奇怪,尤其是与registration of a device to GCM相比,您可以在其中注册任意次数,并且始终获得状态200为相同的注册ID。
现在,我无法再次注册,也无法注销,因为我没有notification_id
。
有什么办法可以从GCM获取以前生成的notification_key
吗?
还是用其他notification_key_name
重新注册的唯一方法?
最佳答案
根据文档,无法从GCM获取现有notification_key
的notification_key_name
。如果您考虑一下,尝试为现有的notification_key
创建新的notification_key_name
会给您带来错误,因为如果不是这种情况,那么在发生这种情况时,您可能会意外覆盖现有的notification_key
的注册ID。错误地提供现有的notification_key_name
。
您正在将其与多次将设备注册到GCM进行比较,每次都获得相同的注册ID,但这不是相似的情况。当您将设备注册到GCM时,GCM可以识别该设备并知道它已被注册并返回相同的注册ID。对于用户通知,它仅包含您提供的notification_key_name
,没有什么可以阻止您对多个用户使用相同的notification_key_name
。也就是说,有些事情阻止了您-尝试使用以前使用的notification_key
创建notification_key_name
时遇到的错误。
解决问题的一种简单方法是将notification_key_name
视为服务器生成的唯一标识符。如果您没有某个用户的notification_key
(因为是新用户,或者因为您未能存储以前从Google获得的notification_key
),则将生成一个新的唯一notification_key_name
,并使用它来创建新的notification_key
。您不必担心未能存储的旧notification_key
。
最后,您将notification_key
和notification_key_name
都存储在包含用户ID的表中。