【问题标题】:Google/Apple Push Notification Service (APNS/GCM)谷歌/苹果推送通知服务 (APNS/GCM)
【发布时间】:2014-01-08 05:59:24
【问题描述】:

我正在尝试为 Android 和 iOS 创建应用程序,并且我想在这两个应用程序上都使用推送通知。我将有一个将发送通知的服务器应用程序。

我想弄清楚的是我们如何存储用户的设备,这样我就知道需要使用哪些服务 APNS 或 GCM。

其中一个方向是获取应用设置的手机类型并将此信息存储在服务器端,但是如果用户将手机从iOS更改为Android会发生什么,需要涉及用户的数据存储并为每个用户收集信息,不包括用户拥有Android平板电脑和iOS手机的场景。

让它更通用,同时将通知发送到服务 APNS 和 GCM,其中一个会返回错误?

想听听此类场景的最佳做法是什么?

【问题讨论】:

  • 您是否在某处存储了设备令牌?我们将设备令牌和设备类型(以及在设备上运行的应用程序版本......)存储在专用表中。因此,每个用户都可以根据需要注册任意数量的设备。通知工作线程然后知道在向任何设备发送消息时使用哪个进程和服务器。每次用户登录时都会将这个(令牌,类型,版本)发送到服务器。
  • 您为什么不使用 www.parse.com 来管理您的推送?它每个月可以免费进行大量推送,并为您处理所有这些。
  • 您可以使用pushtry.com进行测试

标签: android ios push-notification apple-push-notifications google-cloud-messaging


【解决方案1】:

实现APNS和GCM非常简单:

  • 当 APNS(iOS 设备)和 GCM(Android 设备)在 Apple 和 Google 服务器上注册推送通知时,它会为每台设备生成一个唯一令牌。
  • 之后,您需要保存该设备令牌,以及您的设备 ID 或用户 ID(设备服务器上的唯一 ID)和设备的操作系统。

如果 iOS 设备在您的服务器(后端)上发送此信息,您可以使用此 JSON 格式 - {"token":"abcdedfgehik2bd3d3ff3sffssdff","os":"iOS","userid":34}

对于安卓设备,它将是 - {"token":"erydnfbdbdjskd76ndjs7nnshdjs","os":"Android","userid":35}

通过此您可以识别设备的操作系统,以及将用于发送推送通知的用户信息和唯一令牌。

【讨论】:

    【解决方案2】:

    当设备向推送服务注册时,您可以创建一个Unique id (UUID),然后将唯一 ID 连同注册密钥和您想要的任何其他信息一起发送到服务器。这样您就拥有了用户拥有的所有设备并向所有设备发送通知

    【讨论】:

    • 这听起来对 iOS 设备有效,但我如何区分 iOS 和 Android 设备,我需要在我的服务器上决定将通知转发到哪个 API,APNS 或 GCM。或者只是创建逻辑,如果不是 APSN,它就是 GCM?
    • 发送有关设备类型的信息时发送标志
    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多