应用程序进入后台后未调用 AFNetworking 成功/失败块
Posted
技术标签:
【中文标题】应用程序进入后台后未调用 AFNetworking 成功/失败块【英文标题】:AFNetworking success/failure blocks not invoked after the app goes in background 【发布时间】:2015-04-05 20:08:30 【问题描述】:如果在应用程序进入后台后启动请求,我无法触发成功/失败块。我仍然可以看到请求成功到达服务器,但从未触发回调。
我能够将其归结为这段代码。它从不记录成功或失败。
- (void)applicationDidEnterBackground:(UIApplication *)application
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:MY_API_PATH parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"SUCCESS!!");
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"FAILURE!!");
];
如果您想知道我为什么需要这样做,那是因为,我需要让应用在后台收到推送通知时对其做出响应。我在那里看到了一些不一致的行为,所以为了简单起见,我取出了 APNS 片段并开始调查 AFNetworking 在后台的行为并遇到了这个问题。
我错过了什么吗?感谢任何帮助!
【问题讨论】:
我们可以向您展示如何让应用程序请求足够的有限时间来接收和处理上述响应(请参阅Executing Finite Length Tasks),但这与响应推送通知,所以我不确定这对您更广泛的问题有多大用处。 我明白你的意思,Rob。对于推送通知,我实现了didReceiveRemoteNotification: fetchCompletionHandler:
委托方法并且能够捕获通知到达事件。从那里,我进行了 API 调用(就像上面一样),并且无法触发大约 80% 的回调。
@Rob - 所以我按照文档进行操作,现在确实触发了回调!如果您想发表您的评论作为答案(如果您愿意,可以提供有关 APNS 案例的任何其他信息),我很乐意接受。同时,我将在我的 APNS 场景中尝试这个,看看这种技术是否也能解决那里的不一致问题。
【参考方案1】:
一切都在这里解释.. https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
【讨论】:
谢谢!如果您能指出该链接中的特定部分,将不胜感激。以上是关于应用程序进入后台后未调用 AFNetworking 成功/失败块的主要内容,如果未能解决你的问题,请参考以下文章
应用程序在后台时不调用 AFHTTPSessionManager 块
显示 iOS 共享表后未调用 viewWillDisappear
异步任务;调用方法 onPreExecute() 后未调用 doInbackground()