推送通知因从 GCM 发送的无效令牌而失败?

Push notifications failing because of invalid tokens being sent from GCM?

我注意到我们的后端在 10 月份开始出现问题。准确地说是 10 月 15 日。似乎我在 Android 上从 GCM 获取了无效令牌,我的后端正在存储这些令牌,但也无法发送推送通知。

需要注意的一件事是我使用的是已弃用的 api。这可能是问题的一部分,但我无法确认。 This is the API I'm using to register users with GCM.

我取回的令牌采用我不熟悉的格式。这就是我认为有效令牌的样子,以 APA9 开头。

Valid token: APA91bFolo25yEfP2_3wUt3bPO08S3Hz1NBpJbyWkW5_hhsQ6WggOogQOXPYohmh

但是我得到的令牌看起来像这样:

Invalid token: csPVRloDPzc%3AAPA91bFFU2DOGLg3hXoOvQ9vnhN3gMA4aalBAhGGJzAqt4Jtyy

注意在通常的 APA9 之前开头的额外字符。如果我删除这些额外的字符,令牌仍然无效。所以我不确定确切的问题是什么。这个问题非常随机地发生,有时我得到正确的标记,有时我没有。

显然使用已弃用的 API 一点也不理想,这将是我更改的第一件事,但是这个问题是在我提到的日期前后自行开始的,没有任何代码更改。

任何见解都会非常有帮助。谢谢

This is what a valid token looks like for me, starts with APA9.

令牌不必以 APA9 开头才有效。在我的数据库中,我的 ID 几乎以任何字母开头(但绝不是数字)。

我所有的 ID 都有一个共同点,就是第 12 个字符是 :,紧接着是 APA9

你的 'invalid' 令牌看起来像 csPVRloDPzc%3AAPA91bFFU2DOGLg3hXoOvQ9vnhN3gMA4aalBAhGGJzAqt4Jtyy 也有一个作为第 12 个字符,但它似乎 URL 编码为 %3A

我怀疑如果你解码它,它会突然变成一个有效的 ID。