自动刷新JSON

时间:2016-12-06 18:35:57

标签: ios objective-c json swift uitableview

因此,我的应用从我无法控制的服务器中提取JSON,并解析该JSON以填充UITableView

我想更新我的UITableView以实时反映服务器上的最新信息。因此,每当服务器上的某些内容发生变化时,我的UITableView也会更新。

现在我想到的一个解决方案就是连续发送GET请求,让我们在一分钟之后解析JSON并在表上重新加载数据。

但是,必须有一些其他解决方案来解决这个问题。我尝试过搜索,但迄今为止没有成功。

现在我明白这个问题在stackoverflow的标准中有些主观,但我真的需要帮助解决这个问题,而且我还没有从哪里开始有丝毫的线索。所以任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

重复GET通常不受欢迎,因为它在任何时候都不需要客户端和服务器资源,这可能是大部分时间。

由于您不控制服务器,我建议您构建一个 控制可以执行轮询的服务器,然后在检测时发送推送变化。与客户进行轮询相比,这有一些优势:它可以更好地扩展,因为世界上只存在一个轮询源,它可以节省客户端的能量以及纯粹的推送方式。

Apple provides a push system (APNS),其中您的服务器向您的iOS设备发送消息(通过Apple)。设备将在后台启动您的应用并调用:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

在您的应用代表身上。

答案 1 :(得分:0)

如上所述,最好使用APNS。 但是,如果你真的不控制服务器,那么你描述除了民意调查之外你什么也做不了。由于您正在为iOS编写,因此建议您考虑以下几点:

  • 无线限制:您是否正在获取微小的有效载荷,以至于您是否使用无线网络并不重要?否则你应该配置可达性,而不是拖累用户蜂窝服务。
  • 背景会议&后台执行:考虑使用NSBackgroundUrlSession来请求此数据。后台会话对OS来说更有效,因为它们允许OS机会性地执行请求。如果需要为后台会话自定义NSURLSessionTasks,请考虑后台执行权利。
  • 可扩展性:您的后端可以处理来自您的用户量的连续请求吗?
  • 更好的解决方案可能会使用APNS,或Socket / WebSockets / Socket.io / firebase /等。

答案 2 :(得分:0)

正常无声通知是此

的最佳解决方案

当您在服务器上添加任何新项目时,您可以向设备发送推送通知(无提示推送通知),以通知您在服务器端添加了某些内容的状态。

当设备收到此类推送通知时,您必须调用API并重新加载表视图。所以你不必每10秒重新加载一次tableview。

它“不会在通知栏中显示通知提醒,但只会在您想要推送新内容时通知您的应用有一些新数据可用。

显示在通知中心:否

唤醒应用以执行后台任务:是

在推送通知中添加以下来自服务器端的paylod {     “内容可用”:1 }

{
"content-available" : 1
}