开发者社区> 问答> 正文

应用研发平台EMAS ios app登录给A用户,B登录A的账号,推送怎么还是给A用户?

应用研发平台EMAS ios app登录给A用户,B登录A的账号,推送怎么还是给A用户?程序中登录后只绑定了account,要绑定设备,更新设备,该如何解决?

展开
收起
2401。 2023-09-02 11:07:07 83 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    OS 应用程序的推送是基于设备的,而不是基于用户账号的。因此,当 B 用户登录 A 的账号时,推送仍会发送给 A 用户,因为推送是针对 A 用户的设备进行的。
    要解决这个问题,您需要在应用程序中绑定设备,并在用户登录时更新设备信息。以下是一些建议:

    1. 在应用程序中使用 UIDevice 对设备进行绑定。在用户登录时,获取设备的 UIDevice 对象,并将其与用户账号相关联。这样,当 B 用户登录 A 的账号时,应用程序可以将设备与正确的用户账号关联起来。
    2. 在用户登录时更新设备信息。当 B 用户登录 A 的账号时,应用程序应该检查设备是否已绑定到 A 的账号。如果未绑定,应用程序应该提示用户绑定设备,并将设备与 A 的账号关联起来。
    3. 在推送通知服务器端,使用设备信息而不是用户账号来发送推送。这样,推送将根据设备的唯一标识符发送,而不是根据用户账号。
    4. 如果您需要在应用程序中更新设备信息,您可以使用 EMAS 平台提供的设备管理功能。在应用程序中,您可以调用 EMAS API 来获取设备的详细信息,并将其与用户账号关联起来。
    2023-09-02 21:16:29
    赞同 展开评论 打赏
  • 如果在应用研发平台EMAS的iOS应用中,用户B登录了用户A的账号,但推送仍然发送给用户A,这可能是由于设备绑定与更新不正确导致的。

    要解决这个问题,您可以按照以下步骤进行操作:

    1. 绑定设备:在用户登录后,除了绑定用户的账号信息外,还需要将设备与该用户关联起来。您可以使用EMAS提供的API或方法,将设备的标识符(如deviceToken)与当前登录用户进行关联。

    2. 更新设备信息:当用户切换账号或重新登录时,需要及时更新设备的关联信息。确保每次登录操作都会更新设备的绑定信息,防止推送消息发送到错误的用户。

    3. 注销前解绑设备:当用户注销或退出登录时,应取消设备与用户的绑定关系,以免其他用户登录后仍然接收到之前用户的推送消息。

    请注意,具体的实现方式可能因您使用的技术栈和代码结构而异。建议参考EMAS的文档和开发者资源,查找与设备绑定和更新相关的API或方法,以确保正确地进行设备和用户的关联。

    2023-09-02 18:11:12
    赞同 展开评论 打赏
  • 在iOS的推送通知中,如果你只是简单地将Account作为PushToken的唯一标识,那么确实会有这样的问题发生。这是因为同一个Account下的多个设备,它们都有可能收到了推送通知。
    image.png

    为了解决这个问题,你可以采用以下的方法:

    1. 增加DeviceID:在你的App中,你可以生成一个唯一的DeviceID,并将它与Account关联起来。这样,即使是同一个Account下的多个设备,它们也会有各自的DeviceID,从而避免了重复推送的问题。
      image.png

    2. 使用UserDefaults:你可以将Account和DeviceID保存到UserDefaults中。每次打开App时,你可以先检查一下UserDefaults中是否有Account和DeviceID的信息,如果有,则直接使用这些信息进行推送;如果没有,则引导用户输入Account和DeviceID。

    3. 使用Localytics:Localytics是一个非常强大的iOS Analytics工具,它可以帮助你追踪和管理你的用户行为。你可以使用Localytics来跟踪用户的行为,并在用户第一次打开App时引导他们输入Account和DeviceID。

    4. 使用推送服务:你可以使用像OneSignal这样的第三方推送服务,它们提供了一些高级的功能,比如“分组”推送。你可以将你的用户分为不同的组,并对每个组进行定制化的推送。

    以上就是在iOS App中解决推送重复问题的常用方法。希望这些方法能够对你有所帮助。

    解决方案
    请按以下步骤进行排查:

    请确认这两个应用是否有同样的包名,SDK在端上进行消息路由是以包名作为依据的;
    确认装有App B并且收到原本发给App A的设备是否曾经安装过App A。
    如果同时符合上述两个情形则有可能发生推送错误发生的情况。因为当前应用卸载无法做到100%检测。如果没有检测到App A的卸载,服务器会认为对应设备依然装有App A并向该设备下发推送消息,如果此时该设备又安装了具有相同包名的App B,则SDK会将该消息路由给App B。
    解决方法:不同App使用不同包名,彻底避免出现该问题。

    2023-09-02 14:21:30
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
相关文档: 移动研发平台
问答排行榜
最热
最新

相关电子书

更多
女性移动App安全攻防战 立即下载
汇聚云计算的生态核能——云市场,云上APP Store 立即下载
千万级用户直播App——服务端架构设计和思考 立即下载