相同的服务器代码可以向 APNS 和 GCM 发送通知吗

Posted

技术标签:

【中文标题】相同的服务器代码可以向 APNS 和 GCM 发送通知吗【英文标题】:Can the same server code send notification to both APNS and GCM 【发布时间】:2014-07-02 05:19:56 【问题描述】:

将消息从同一服务器 [ex: php/apache] 发送到 Google Cloud 消息 [GCM] 和 Apple 推送通知 [APN] 的可行性如何? ]

我有将消息发送到 GCM 的 php 代码,我也想为 ios App 获取消息。我的感觉是再次将消息从 php 代码发送到 APN?

请提出建议。

【问题讨论】:

【参考方案1】:

一切皆有可能。这完全取决于您愿意投入的工作量。您可以查看一些支持将通知推送到多个平台的第三方(如 UrbanAirship 或 Parse.com)的 API,了解他们的 API 如何支持这些多个平台。

您应该意识到 APNS 和 GCM 使用不同的协议(APNS 在 TCP 上有自己的二进制格式,而 GCM 支持 HTTP 和 XMPP),具有不同的设备标识符(设备令牌与注册 ID),具有不同的负载参数和负载最大长度等...

由于这些差异,至少在端点上,向 APNS 和 GCM 发送通知的服务器代码不会是相同的。

您仍然可以拥有许多独立于平台的通用代码,例如组成要发送的通知的代码,但每个平台的发送本身会有所不同。

【讨论】:

谢谢 Eran,我的计划是,ios,android 都将使用不同的服务名称,但要操作相同的数据[只读],所以,ios 使用 service1() 注册, android 注册到 service2(),有两个不同的数据库。【参考方案2】:

现在在 Google I/O 15 上发布的 GCM(Google Cloud Messaging)最新版本支持 iOS 平台。因此,您可以在后端使用相同的代码库来定位 Android 和 iOS 设备。

无论如何,当 iOS 应用程序不活动时,您必须将 GCM 与 APNS 关联才能推送消息。

【讨论】:

【参考方案3】:

Golgi 是一个 API,它可能会处理您的 APN 和 GCM 推送通知。

Golgi 是一种通信 API 和服务,可以代表您将 APN 和 GCM 发送到您的应用程序。 Golgi 使用推送通知来提醒应用程序有数据要从服务器或另一个应用程序实例接收。然后,您的应用将连接以收集数据。

Golgi 会跟踪用户及其使用的设备(iOS 或 Android)并使用相关的推送通知系统。

【讨论】:

以上是关于相同的服务器代码可以向 APNS 和 GCM 发送通知吗的主要内容,如果未能解决你的问题,请参考以下文章

iOS 直接向 APNS 发送请求,无需服务器

当手机离线时,GCM 会存储消息列表或仅存储最后一条消息,就像 APNS 一样?

如何注册 GCM 和 APNS,获取 DeviceId 并将我的 API 发送给它以进行数据库存储?

GCM 和 WNS 禁止向非活动设备发送推送通知的策略

Python - 通过 FCM / APNs 向 IOS 或 Android 设备推送通知

通过 GCM 发送 APNS 通知:Apple 是不是允许?