我的公司为日间交易者提供了一个 iPhone 应用程序,基本上可以告诉他们何时是买入或卖出的好时机。一组服务器生成这些买入和卖出信号,需要在一分钟或更短时间内传送到客户的 iOS 设备。对于我们开发的所有其他移动客户端,我们可以在后台轮询服务器(每分钟一次),以检查更新。
然而,在 iOS 中,似乎无法在 applicationDidEnterBackground 中执行任何与时间或轮询有关的操作。
这促使我查看推送通知,但根据我的阅读,它们并不可靠。他们采用发送后忘记的方法,不能保证他们会收到。
你可以看到这个问题。如果我们发出买入信号并且用户对其采取行动,则 10 分钟后生成卖出信号并通过推送发送,但从未到达,他们可能会损失很多钱。
那么,有什么好的方法可以做到这一点,还是我运气不好?谢谢!
最佳答案
您的服务器和用户设备之间有两个中介:a) Apple 和 b) 网络。
Apple 不保证所有通知都会送达;只有最近的才能保证到达并且只在有限的时间内到达。有关详细信息,请查看 Apple Push Notification Service 中的“服务质量”部分.
如果设备通过移动运营商访问网络,事情可能会变得很糟糕。我遇到过这样的情况,有些通知直到很久以后才到达,有些则完全丢失了。根据我的经验,运营商会热心地保护自己的服务质量,而不是 Apple 等第三方的服务质量。短信/彩信通常不会丢失,而推送通知可能会丢失。
轮询服务器将是您应用的可行替代方案。唉,Apple 不允许对处于后台状态的应用程序进行网络操作(报亭下载和 VoIP 除外)。
关于ios - 可靠的服务器到 iPhone 消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561657/