我在这个主题上看到了几个问题。但所有人都只是说你必须从其他方式中恢复过来。但没有人解释其他方法是什么!我无法在SO上找到答案。这也是this问题评论的后续内容。
让我们说我正在使用优步应用。司机需要知道乘客的位置。
乘客设置
2分钟后,她决定取消整个皮卡。所以现在我需要 通知司机。 这是一项重要的状态更改更新。123 XYZStreet
的取件地点。
首先想到的是:
发送包含content-available:1
的通知,以便我可以在通知到达后立即更新应用,并在didReceiveNotification中调用GET(PassengerInfoModel)
并且还包含"alert" : "Pickup has been canceled. Don't go there'
因此驱动程序会也是视觉上的通知。显然,点击通知并不是管理更新的内容。设置为content-available
的{{1}}将对此进行管理。
但是这样做,当通知的到达失败 - 完全时会发生什么?那么最新的1
就不会发生。作为解决方案,我听说过GET(PassengerInfoModel)
请求:
HEAD方法与GET相同,只是服务器不能 在响应中返回消息正文。元信息包含 在HTTP头中响应HEAD请求应该是相同的 响应GET请求发送的信息。这种方法可以 用于获取有关该隐含的实体的元信息 请求而不转移实体主体本身。这个方法是 经常用于测试超文本链接的有效性,可访问性, 和最近的修改。
不确定如果使用HEAD请求会发生什么,我们发现有更新!?那么我们是否在HEAD完成处理程序的成功案例中提出GET请求?
问题1 我们应该如何处理HEAD请求响应? (我猜测服务器能够路由HEAD
个请求,必须进行一些更改,但我们只是假设它不在问题范围内)。
问题2 我们多久要做一次这样的请求?基于this评论,一种解决方案可以是在HEAD
中设置重复计时器,例如每2分钟发出一次viewDidAppear
请求。这是一个好主意吗?
问题3 现在让我们说我们做了那个HEAD请求,但是还要求来自其他2个场景/ viewControllers的HEAD
。服务器无法区分不同的场景/ viewControllers。我猜测解决方案是通过单一的NetworkHandler管理所有应用程序的网络请求。这是一个好主意吗?
我知道这个问题很广泛,但相信这个问题需要作为一个整体来解决
答案 0 :(得分:1)
问题1我们应该如何处理HEAD请求响应? (我猜测服务器能够路由HEAD请求,必须有一些更改,但我们只是假设它超出了问题的范围)。
您可能不需要处理HEAD请求。使用Etags是一种标准机制,它允许您发出GET请求,如果没有任何更改,服务器可以返回一个带有304响应的空体,或者如果有任何内容,则返回实际的新内容。
问题2我们多久需要做一次这样的请求?基于此评论,一种解决方案可以是在viewDidAppear中设置重复计时器,例如每2分钟发一次HEAD请求。这是个好主意吗?
我认为这是合理的,特别是如果您想在无法成功提出请求时通知您的用户。您也可以考虑使用Apple的可访问性代码来检测何时可以或不能与您的服务器通信。
问题3现在让我们说我们做了那个HEAD请求,但是也从其他2个场景/ viewControllers请求了GET(PassengerInfoModel)。服务器无法区分不同的场景/ viewControllers。我猜测解决方案是让所有应用程序的网络请求通过单一的NetworkHandler进行管理。这是个好主意吗?
是的,我认为拥有一个单身是合理的,虽然我不确定为什么服务器关心视图控制器正在发出请求。他们不能只是请求不同的网址吗?