在iOS中,后台提取的结果可能是以下之一:
UIBackgroundFetchResultNoData
UIBackgroundFetchResultFailed
NoData
iOS如何关注结果?
据我所知,持续时间过长(相信30秒或更长时间)的抓取会因为给应用程序提供更少的抓取机会而受到惩罚。
上述任何内容,特别是Failed
和UIBackgroundFetchResultNewData
是否也会产生影响?
或者这只是内部处理?
为什么不每次只返回Comparioson a == b may cause unexpected type coercion.
This inspection reports usages of JavaScript quality operators which may cause unexpected
type coercions. It is considered a good practice to use the type-safe equality operators
=== and !== instead of their regular counterparts == and !=.
?
答案 0 :(得分:0)
没有描述Apple使用的精确算法,但是在iOS Application Programming Guide Apple州,
快速下载少量内容并准确反映其内容可供下载的应用程序,比将需要很长时间下载内容或声明内容可用的应用程序更有可能在未来获得执行时间但是不要下载任何东西。
似乎iOS会观察您应用的行为。如果它声称新内容可用(返回UIBackgroundFetchResultNewData
)但它实际上没有执行网络操作,则可能会收到较少的后台获取机会。诚实是值得的。
我似乎还记得在某个地方阅读(但现在找不到引用)iOS可以使用完成值来确定服务器可能有新内容的时间(例如,如果在1am左右持续获取返回新数据并且下午6点的提取始终没有,iOS可能更有可能在凌晨1点为您的应用执行后台提取。
您应该尽可能快地完成提取,但在提取完成之前不要调用完成处理程序,否则您的应用程序将在未完成下载的情况下暂停。你也可以使用beginBackgroundTaskWithExpirationHandler
来获得更多时间,但你的应用程序每个'后台'的后台执行总数限制为180秒(即如果用户将你的应用程序带回前台然后暂停它再次重置180秒。