watchOS 应用停止发送 NSURLSessionDownloadTask 请求
Posted
技术标签:
【中文标题】watchOS 应用停止发送 NSURLSessionDownloadTask 请求【英文标题】:watchOS app stops sending NSURLSessionDownloadTask requests 【发布时间】:2017-07-12 17:44:45 【问题描述】:我有一个 ios 应用程序和一个配套的 watchOS 应用程序。 iOS 应用程序在 watchOS 应用程序首次启动时为 watchOS 应用程序提供访问令牌。在此 watchOS 应用开始通过发送 NSURLSessionDownloadTask 请求定期从服务器获取数据更新之后。
我的 NSURLSession 配置如下:
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:[[[[NSBundle mainBundle] bundleIdentifier] stringByAppendingString:@".backgroundsession"] stringByAppendingString:[NSUUID UUID].UUIDString]];
config.sharedContainerIdentifier = APP_GROUPS_ID;
self.urlSession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
然后我通过以下方式定期发送请求:
NSURL *url = [NSURL URLWithString:API];
NSMutableURLRequest *request = [self buildRequestForURL:url andMethod:@"POST"];
NSString *body = [NSString stringWithFormat:<some request params>];
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
[[self.urlSession downloadTaskWithRequest:request] resume];
watchOS 应用在一段时间内成功接收更新。当 iOS 应用处于后台模式或手动卸载时,它会成功接收更新。
但当我锁定 iPhone 屏幕时(几分钟后或几分钟后),watchOS 应用停止接收更新。
有人在使用 watchOS 应用时遇到过同样的问题吗?
【问题讨论】:
你使用WKURLSessionRefreshBackgroundTask
吗?
@JensPeter 不,我没有。
【参考方案1】:
看看This Apple Example - WatchBackgroundRefresh,以及我对this question的回答。希望这可以引导您找到一些工作代码。
【讨论】:
以上是关于watchOS 应用停止发送 NSURLSessionDownloadTask 请求的主要内容,如果未能解决你的问题,请参考以下文章