我正在为iOS和Android创建移动应用程序。问题是当服务器上的任何数据发生变化时,我无法通知移动设备。
我找到了3个解决方案,每个解决方案都有减号和优势。
使用推送通知。由于iOS始终向用户显示通知,因此这根本不是解决方案。此外,我不知道通知是否会发送到设备或何时发送。
每隔X秒询问服务器是否存在任何更改。我不想这样做,因为我认为创建太多的HTTP连接并关闭它们并不是一个好主意。此外,如果在设备询问后立即更改数据,设备上的信息更改将会延迟。
使用网络套接字。我的应用程序一次性使用期望约为2分钟。所以网络套接字看起来是一个不错的选择,因为应用程序将被终止或快速进入后台状态,电池消耗不会太多。此外,所有服务器端数据更改都将及时到达设备。但我对网络套接字知之甚少。我的意见可以接受吗?此外,我的服务器可以完成多少并发连接。这也是一个问题。
以下是我的所有解决方案。
答案 0 :(得分:1)
该文件将建议假设1.上述不正确。
如果您阅读通知有效负载部分,则会遇到此问题;
aps词典还可以包含content-available属性。值为1的content-available属性允许远程通知充当“静默”通知。当无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。用户不会被告知由静默通知产生的新信息或更改信息,但他们可以在下次打开您的应用时找到相关信息。
答案 1 :(得分:1)
我认为这在很大程度上取决于你的应用正在做什么。
我会说你应该使用#1和#2的组合。
2 - 如果您需要来自服务器的信息,则在最基级,您将不得不提出请求。如果此信息需要是最新的,那么您可以在加载ViewController时继续请求信息。如果您需要在加载ViewController时更新此信息,那么您需要每隔X秒进行一次后续请求...除此之外如果您的用户正在与此数据交互并向服务器发送更新,您可以在此处查看指出数据是否是最新的,并提醒用户并返回当前数据。
1 - 推送通知操作“发送并忘记”协议。发送通知,如果收到通知,则不会进行验证。这被用作#2的补充,并且“很好”,但不应该依赖。
答案 2 :(得分:0)
推送通知是预期的方式(从Google到Google云消息传递,Apple到Apple推送通知服务)。
选项2和3都不受欢迎,因为它们会影响电池续航时间,并且它们是不必要的,因为推送通知可以涵盖大多数情况。