iOS:从BGAppRefreshTask启动应用程序时访问互联网的问题|BGProcessingTask

hmmo2u0o  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(141)

用例:我们希望在应用程序处于后台时更新应用程序内容。我们希望从我们的后端服务器下载一些JSON数据(HTTP GET)并更新应用程序的内容,以便下次用户启动应用程序时看到更新的内容。我们正在使用苹果的BackgroundTasks框架API,特别是BGAppRefreshTask和BGProcessingTask。非常标准
问题→无法通过URLSession请求HTTP。

我们注册并调度BGAppRefreshTask和BGProcessingTask。我们的应用程序是由iOS在后台启动的。但是当我们向Web服务器发出HTTP请求时,我们不会得到任何响应回调。在默认配置下,发出请求后,根本不会调用响应回调或URLSessionDataDelegate方法。(我也尝试了谷歌网址。只是为了确保问题不仅仅是我们的后端)。当我在调试时检查整个流程时,一切都很好,我连接到Xcode并使用此命令e -l objc --(void)[[BGTaskList sharedList] _simulateLaunchForTaskWithIdentifier:@“com.background_cloud_sync_apprefresh”]我有点被这个问题卡住了,已经没有办法尝试了。所以如果你在iOS上遇到任何这样的问题,我在这里联系Maven。
我已经尝试了URLSession与回调以及URLSessionDataDelegate。
最新消息:进一步的发现。我还发现问题可能是调用后台执行的线程没有等待URLSession请求完成。我通过将几个1秒的线程休眠并给予一个单独的队列给URLSession进行委托回调来验证它。问题:如何使后台执行等待另一个URLSession任务完成。

slmsl1lt

slmsl1lt1#

要使您的应用程序继续在后台处理信息,您需要将配置从默认更新为:

let configuration = URLSessionConfiguration.background(withIdentifier:
                               "com.yourapp.bundleidentifier")

字符串
你可以在这个关于URLSession的非常好的教程中获得更多关于这方面的详细信息

相关问题