【问题标题】:Android GCM send push notification multiple timesAndroid GCM 多次发送推送通知
【发布时间】:2024-05-23 04:35:02
【问题描述】:

我有一个运行良好的已发布应用程序。但现在我想发布一个新版本,并在将其上传到 Play 商店之前测试了推送通知。 在我注册到 GCM 的应用程序中,推送通知 ID 将发送到我们的后端。当用户在应用程序或网站中执行某项操作时,后端会向 GCM 发送通知,GCM 应将通知发送到用户设备。 但是,设备多次收到此通知。 我记录了我的 GcmListenerService,我看到 onMessageReceived() 方法在 2 分钟后、4 分钟后、8 分钟后、16 分钟后和 32 分钟后调用。所以我的应用程序多次收到相同的通知。 为什么?

【问题讨论】:

    标签: android notifications google-cloud-messaging gcmlistenerservice


    【解决方案1】:

    如果没有更多信息,我会怀疑您的服务器正在重新发送消息,而不是应用程序多次接收消息。

    【讨论】:

    • 我也是这么想的,但是在网络日志中我看到服务器只发送了一次通知。但是android应用程序是否有可能以某种方式调用GcmListenerService?据我所知这是不可能的
    【解决方案2】:

    here 所述,在某些情况下,GCM 引擎可能会在确定需要时更改注册 ID。这可能随时发生,无需事先警告。这就是为什么您应该始终检查最后一个注册 ID 是否与当前注册 ID 匹配。你也可以参考这个link。也许您的 regid 在您的数据库中注册了更多次。

    【讨论】:

    • 我使用 Settings.Secure.ANDROID_ID 作为我唯一的 deviceId,这不是一个好的解决方案,对吧?问题是我使用 assembleRelease 和 assembleDebug 构建了我的应用程序,并且由于我的构建类型不同,我的 deviceId 已更改,因此我为一台设备向 GCM 注册了更多 deviceId,对吗?如何从 GCM 中删除此“错误”设备?有可能吗?