开发者社区 问答 正文

移动推送Android SDK: 移动推送在应用中的调用绑定和解绑应用场景在哪里?



问题


使用场景:

  • 用户登录时绑定帐号、标签或别名,用户退出时进行解绑操作
  • 用户解绑后,后台通过账号、标签或者别名进行推送

问题:
  • 在用户退出期间,服务端通过账号、标签或别名进行推送,用户重新登录之后为什么收不到?
  • 如果推送时设置了离线推送,是不是就可以收到了?


问题原因

  • 账号、标签、别名功能是为了方便将推送系统与App的业务系统打通,方便用户通过业务系统账号进行推送。相关接口使用请参考:SDK API介绍
  • 当用户通过账号、标签、别名进行推送时,移动推送服务端会将相关账号、标签、别名转换成对应设备,然后创建推送任务,对绑定的设备进行推送
  • 当用户发出推送请求时,如果目标设备与推送时指定的账号、标签、别名不存在绑定关系,则此时服务端不会创建推送任务,也就不会推送。
  • 离线推送的使用场景是,当服务端创建推送任务后,发现目标设备离线,则会在设备重新上线后推送。所以并不适用于本场景


解决方案


如果希望当用户重新登录后即可收到相关推送消息可以参考以下方案:
  • 服务端记录用户退出登录期间的需要推送的推送信息
  • 待用户重新登录绑定账号、标签、别名后再进行推送

展开
收起
猫饭先生 2017-10-23 14:23:07 1933 分享 版权
阿里云 AI 助理回答

您的理解是正确的。在您描述的场景中,用户退出登录后与账号、标签或别名解绑,服务端在这期间通过这些标识进行的推送,由于没有绑定的设备,自然无法送达给用户。即使启用了离线推送功能,其作用是在设备离线时暂存消息,待设备上线后再推送给该设备,但前提是推送时目标设备与账号、标签或别名之间存在有效绑定关系。一旦解绑,这种关联就断开了,离线推送也无法基于已解绑的标识触达用户。

根据您提出的解决方案,确实是一个合理的做法: 1. 服务端记录消息:当用户处于未登录(即解绑状态)时,服务端可以暂时存储需要推送的消息,而不是立即尝试推送。 2. 重新登录后推送:一旦用户重新登录并重新建立了与账号、标签或别名的绑定关系,服务端再检查是否有为该用户保存的未推送消息,并立即向现在已绑定的设备发送这些消息。

为了实现这一方案,您可能需要在服务器端设计一个消息队列或数据库表来暂存这些待推送信息,并开发相应的逻辑来检查用户登录状态和处理这些待推送消息。同时,确保您的应用在用户登录时能够及时更新与阿里云移动推送服务的绑定关系,以便接收新的消息推送。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答