我的报亭应用程序可以通过内容可用的推送通知启动。发生这种情况时,应检索问题列表,并下载包含最新问题的 zip 文件。
我无法检索问题列表。此问题仅在通过内容可用推送通知启动应用程序时发生。手动启动应用程序时,一切正常。
这段代码下载问题列表:
-(MKNetworkOperation*)getIssueList:(void(^)(NSArray *issues, BOOL cacheResponse))completionBlock
onError:(MKNKErrorBlock) errorBlock{
MKNetworkOperation *op = [self operationWithPath:@"list/"
params:nil
httpMethod:@"GET"];
NSLog(@"in getissuelist");
[op onCompletion:^(MKNetworkOperation *completedOperation)
{
NSLog(@"in getissuelist on completion");
BOOL cachedResponse = NO;
if([completedOperation isCachedResponse]) {
cachedResponse = YES;
}
NSArray *issueDicts = [completedOperation responseJSON];
completionBlock(issueDicts, cachedResponse);
}onError:^(NSError* error) {
NSLog(@"in getissuelist on error");
errorBlock(error);
}];
[self enqueueOperation:op];
NSLog(@"in getissuelist return op");
return op;
}
这是通过通知启动应用程序时的控制台输出
Oct 29 16:06:42 murzofoon newsstand[2373] <Warning>: start download latest
Oct 29 16:06:42 murzofoon newsstand[2373] <Warning>: in getissuelist
Oct 29 16:06:42 murzofoon newsstand[2373] <Warning>: in getissuelist return op
因此操作已入队,但未调用 onCompletion(和 onError)块。
当我收到通知后手动启动应用程序时,会调用 onCompletion 块。
Oct 29 16:06:54 murzofoon newsstand[2373] <Warning>: in getissuelist on completion
在我手动启动应用程序之前,似乎没有处理 MKNetworkOperation。即使我没有手动启动应用程序,我也希望调用 onCompletionblock。如何解决这个问题?