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

用亚马逊社交网络处理Android应用卸载

阎晋
2023-03-14

我们已经完成了SNS设置,用于为我们的Android应用程序发送推送通知。分步过程如下:

>

  • 每当应用程序出现时,它都会通过调用注册来生成GCM注册ID。代码片段如下:

    私有 String registerOnGCM(){ try { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getBaseContext());字符串令牌 = gcm.寄存器(Globals.GCM_TOKEN);返回令牌;} 捕获 (IO异常 e) { 日志 e(TAG, “未能完成令牌刷新过程”); } 返回空值;}

    其中Globals.GCM_TOKEN是在为应用执行 FCM 注册时获取的应用 ID。

    应用程序调用我们的后端服务器并传递此注册ID。

    后端服务器检查此注册ID是否是新的。如果是新的,则它使用此注册ID创建一个新的SNSendpoint,然后将新endpoint订阅到为用户创建的Topic。它将所有这些数据保存在我们的数据库中以供将来参考。

    向用户的所有设备发送消息推送时,我们只需将消息广播到为该用户创建的主题,然后将消息发送到用户拥有的所有设备。这在多个设备上都安装了我们的应用程序的情况下效果很好。卸载和重新安装时会出现问题。

    重新安装后,GCM注册调用返回一个单独的注册ID并将其发送到后端。后端将其检测为新设备并将其注册为SNS,即使设备相同,用户最终也会获得多个SNSendpoint。当为该用户向主题推送通知时,同一设备会收到两个推送通知。可能是因为旧endpoint仍然存在,它应该被禁用。

    所以,我的问题是:如何确保在提到的测试用例中,只有一个推送通知被发送到Android设备。

  • 共有1个答案

    宋宏毅
    2023-03-14

    这是我为自己的问题找到的解决方案

    在重新安装的情况下,注册Id正在更改,随后将使用相同的注册Id检测设备是否已注册SNS推送。但是,还有一个实体对于设备是唯一的,并且在重新安装的情况下不会改变,即设备ID。

    我更改了对我们服务器的后端调用,并为其添加了一个参数,即设备ID。此Id现在用于检测已经存在的SNS注册。如果Id已经存在并且注册Id是新的,那么我将删除旧endpoint及其对该用户主题的订阅,然后继续注册过程的其余部分。这将保持SNS上的数据以及我们自己的数据干净。

     类似资料:
    • 我设置了一个 AWS 服务器和一个使用 GCM 和 SNS 推送通知的Android应用程序。 应用程序注册成功,即收到带有注册ID的通知。 有没有办法检查设备是否收到了通知,但由于某种原因没有发送到< code>BroadcastReceiver? 此外,可能我做了一些错误的事情(可能是包名)?以下是清单:

    • 我一直在努力解决亚马逊SNS推送通知中的一个特殊问题,这在任何亚马逊文档中都找不到。 我正在尝试发送包含<code>的通知 < code >尝试我们的新M 提前致谢!

    • 希望在应用程序中集成amazon pay(基于美国)。已经有了贝宝和刷卡选项。当提到亚马逊支付沙箱时,它说要先在亚马逊支付注册。注册过程将通过其他步骤进入亚马逊卖家中心帐户,在这些步骤中会询问与业务相关的问题。 从开发的角度来看,我们如何将amazon pay集成到我们的应用程序中?是否有可用的示例api/代码及其程序?欢迎任何指导。

    • 亚马逊网络服务(AWS)是亚马逊的云网络托管平台,提供灵活,可靠,可扩展,易于使用且经济高效的解决方案。

    • 我想向移动设备发送丰富的推送通知。我的意思是,当用户收到推送通知时,设备可以显示图像或视频等媒体附件(例如https://medium . com/@ tsif/IOs-10-rich-push-notifications-with-media-attachments-a54dc 86586 c 2)。 亚马逊SNS推送通知是否支持富推送功能?

    • 我目前正在尝试亚马逊转录服务,我想知道是否应该在将音频文件发送到亚马逊转录之前对其进行预处理。我在文档中找不到任何东西,所以我假设它们没有应用任何预处理。