当前位置: 首页 > 知识库问答 >
问题:

卸载应用时,GCM没有注销设备

屈晨
2023-03-14

我制作了一个Android应用程序。我使用GCM推送通知。当用户登录时,我正在向GCM注册设备。我使用外部MySql数据库来存储用户的注册ID。它工作得很好。

但是

当我做了以下步骤:

  1. 在我的手机上安装了我的应用程序。
  2. 用用户1登录。
  3. 从我的手机卸载应用程序。
  4. 再次安装应用程序。
  5. 用用户2登录。

我的手机仍会收到user1通知,这意味着卸载应用程序时GCM没有注销我的设备。

我不能删除的应用程序卸载时MySQL数据库中的行,因为我不知道当应用程序卸载或用户可能没有互联网连接时卸载的应用程序删除行。

你能建议我如何解决这个问题吗?

我读到GCM卸载后需要一些时间来注销设备。

如何删除行在mysql当GCM取消注册设备?

共有1个答案

柏高洁
2023-03-14

的确,卸载后,GCM需要一些时间来注销设备。基于文档,GCM服务器只有在发送了一条因应用程序已被卸载而“反弹”的消息后,才会将注册ID标记为删除。

如果只是为了让情况更复杂一点,重新安装的应用程序可以接收相同的注册ID或不同的注册ID。

您可以做的一件事是在dataJSON对象中添加一个字段,以指定目标用户。这样,无论应用程序卸载后重新安装的场景如何,用户都只会收到针对他们的消息(例如,通过执行某种“检查登录用户”功能)。

文件中的其他注释:

要确保消息到达预期用户:

  • 应用服务器可以维护当前用户和注册令牌之间的映射
  • 然后,客户端应用程序可以进行检查,以确保它接收到的消息与登录的用户匹配
 类似资料:
  • 我在一个数据库表中有一个GCM注册用户列表及其相应的注册ID,我实际上想在用户从表中删除时注销该用户。我在Stackoverflow中发现了很多示例,但大多数示例都基于旧的GCMRegistarAPI,现在已经不推荐使用了。我正在使用GoogleCloudMessaging API,并通过以下方法注册用户: 我有一个管理员应用程序,它充当第三方应用程序服务器,因为它向所有用户推送通知。我想注销一个

  • 问题内容: 我已经在我的应用中实现了GCM通知。我现在尝试在用户注销时注销该应用程序。我正在使用以下代码。执行此代码时,它将导致应用程序崩溃,并显示以下logcat: 这是代码: 问题答案: 将支持库更新为25.0.0后,我遇到了同样的问题。对我来说,更新下面的库之后,在应用程序gradle文件中,问题消失了。

  • 我有一个应用程序,使用GCM推送通知。它工作正常,我的设备注册并接收推送消息。 如果我从我的设备上卸载该应用程序,我将不再像您预期的那样收到消息。在我卸载应用程序后,您在服务器上发送消息的文本框仍然存在,我也希望如此。 我已经看过了关于取消注册的留档,你可以手动或自动完成。 我不明白上面列表中的下一句话。 这是怎么实现的? 此外,如果从设备上卸载应用程序,它如何执行以下语句?是否存在从设备中删除应

  • 我的应用程序通过Facebook/Firebase进行身份验证。整个应用程序由片段和ofc一个活动组成。 案例(简单地): 有2个片段:和。 我在清除了缓存并从firebase和facebook注销后卸载了该应用程序。 在< code>howToFragment中,我检查是否已经有用户登录。 然后我在调试模式下安装应用程序。我看到该用户已登录并导航到主碎片。当我检查用户的ID时,我看到它是我的主要

  • 我尝试使用GCM发送APN。设备注册OK,GCM和IOS设备令牌被接收。当我尝试发送有效载荷没有"通知"节点: 一切正常。 但是我想处理应用程序在后台时的通知 根据文档,我将有效负载修改为: 第一次尝试: 但没有收到通知。 第二次尝试: 然后应用程序不会收到任何通知,即使我删除了通知节点。所以我必须移除它,重新安装,接收新的代币。 第二期: 我试图检查APN使用NWPusher,但得到错误:无效令

  • 函数名称: 卸载应用 函数功能: 卸载一个应用程序 函数方法 app.uninstallApp(bid) 参数 类型 必填 说明 bid string 是 需要卸载的应用包名 函数用例 app.uninstallApp("com.touchsprite.android") 注意事项 如果要卸载的应用在前台或者后台时,无法通过此函数卸载。 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此