【发布时间】:2014-06-26 09:57:20
【问题描述】:
我想在不使用后端服务器的情况下将推送通知从 iOS 设备发送到另一台 iOS 设备。 iOS 设备是否可以充当服务器并将推送通知发送到 APNs 服务器? 提前致谢。
【问题讨论】:
标签: ios push-notification apple-push-notifications
我想在不使用后端服务器的情况下将推送通知从 iOS 设备发送到另一台 iOS 设备。 iOS 设备是否可以充当服务器并将推送通知发送到 APNs 服务器? 提前致谢。
【问题讨论】:
标签: ios push-notification apple-push-notifications
理论上,您可以将 Apple 推送通知从一台设备直接发送到另一台设备。您只需要应用程序的推送证书、您向其发送通知的设备的设备令牌,以及与 APNS 服务器建立安全 TLS 连接的代码。
然而,有几个实际问题使得使用服务器几乎是强制性的:
您需要一个地方,安装您的应用程序的所有设备的所有设备令牌都将被发送到并保存在其中。最好的地方是服务器。如果没有服务器,设备 A 如何将其设备令牌发送给其他想要发送推送通知的设备?
Apple 要求您尽可能长时间地打开与 APNS 服务器的连接,并使用同一连接发送许多通知。如果您在设备上打开与 APNS 服务器的连接,它可能会很短暂(因为设备会频繁切换网络,并且不会一直保持与互联网的连接)。因此,如果您尝试频繁发送许多通知,并且每次都使用新的 APNS 连接,您可能会被禁止(因为 Apple 会将其视为 DDoS 攻击)。
如果您将推送证书存储在安装您的应用程序的每台设备中(以允许它直接向其他设备发送推送通知),除了在许多地方存储证书的安全问题之外,您将拥有每次推送证书到期(一年一次)时发布您的应用程序的新版本,并且推送通知将停止对未升级到新版本的用户起作用。
【讨论】:
试试NWPusher。
它有一个用于发送推送的 iOS 框架和一个 iOS 演示应用程序,可以将推送通知从 iOS 发送到 iOS。
【讨论】:
您还需要考虑服务器成本(如果您编写自己的服务器,则需要考虑维护和开发时间)。
通过直接从应用设备发送推送:
- 您可以获得更好的可扩展性(因为您不必将所有内容都集中在服务器上)
- 您无需支付服务器费用或其他服务费用
您可以用于 iOS: - https://github.com/noodlewerk/NWPusher推送者
对于 Android: - Send push notification GCM by java
【讨论】: