我们正在设计一个系统,基于服务器上的特定事件为特定设备创建地理围栏。预期客户端(设备)将与服务器数据同步,问题是如何实现?
最初(最优)的想法是向设备发送静默推送通知,通知其有新数据可用,并触发数据拉取。鉴于此解决方案适用于 Android 操作系统设备,我们认为可以通过类似的方式解决 iOS 上的问题。不幸的是,我的 iOS 开发人员告诉我,在 iOS 上,静默推送通知不可靠,并提供了以下讨论:Silent push notifications only delivered if device is charging and/or app is foreground。
因此,我的问题是如何使(地理围栏)数据在 iOS 设备上与服务器端保持同步?
- 我们可以拉取数据,例如每 5 分钟拉取一次,但这种解决方案效率极低,对于大多数设备来说,新地理围栏很少或根本不会更改,但是我们“重度用户”需要经常更新地理围栏。 - 我们可以使用某种类型的静默推送机制进行推送,但它必须是可靠的。 - 也许是某种持久连接(tcp 或更好的 udp),但这似乎是耗电解决方案。除了不可靠之外,服务器还必须跟踪变化的 IP 地址,这在许多移动网络上甚至不可能。 - WebSocket。也是耗电解决方案,不适合后台同步。对于真正很少更新数据的设备(例如每月一次),这种解决方案过度。
- 一些商业解决方案(PubNub 或 Pusher),但我们肯定更喜欢内部解决方案。
还有其他在这种情况下使用的解决方案吗?也许我们的静默推送方法不正确,但是否有其他 Apple 内置解决方案用于这种用例?
最初(最优)的想法是向设备发送静默推送通知,通知其有新数据可用,并触发数据拉取。鉴于此解决方案适用于 Android 操作系统设备,我们认为可以通过类似的方式解决 iOS 上的问题。不幸的是,我的 iOS 开发人员告诉我,在 iOS 上,静默推送通知不可靠,并提供了以下讨论:Silent push notifications only delivered if device is charging and/or app is foreground。
因此,我的问题是如何使(地理围栏)数据在 iOS 设备上与服务器端保持同步?
- 我们可以拉取数据,例如每 5 分钟拉取一次,但这种解决方案效率极低,对于大多数设备来说,新地理围栏很少或根本不会更改,但是我们“重度用户”需要经常更新地理围栏。 - 我们可以使用某种类型的静默推送机制进行推送,但它必须是可靠的。 - 也许是某种持久连接(tcp 或更好的 udp),但这似乎是耗电解决方案。除了不可靠之外,服务器还必须跟踪变化的 IP 地址,这在许多移动网络上甚至不可能。 - WebSocket。也是耗电解决方案,不适合后台同步。对于真正很少更新数据的设备(例如每月一次),这种解决方案过度。
- 一些商业解决方案(PubNub 或 Pusher),但我们肯定更喜欢内部解决方案。
还有其他在这种情况下使用的解决方案吗?也许我们的静默推送方法不正确,但是否有其他 Apple 内置解决方案用于这种用例?