Ios7 MCSession后台多eer
我使用以下方法通过ios7中的multi-peer发送文件:Ios7 MCSession后台多eer,ios7,multipeer-connectivity,Ios7,Multipeer Connectivity,我使用以下方法通过ios7中的multi-peer发送文件: _progressSend = [session sendResourceAtURL:imageUrl withName: info toPeer:peerID withCompletionHandler:^(NSError *error) { // Implement this block to know when the sending resource transfer completes and if there is
_progressSend = [session sendResourceAtURL:imageUrl withName: info toPeer:peerID withCompletionHandler:^(NSError *error) {
// Implement this block to know when the sending resource transfer completes and if there is an error.
if (error) {
NSLog(@"Send resource to peer [%@] completed with Error [%@]", peerID.displayName, error);
}
else {
// Create an image transcript for this received image resource
}
}];
这个问题很奇怪。情况就是这样:
设备开始发送资源,进度条开始填满。例如,当我将应用程序放在后台并查看电子邮件时,传输仍在进行(我可以从另一台设备的进度栏中看到)。如果传输完成,我返回应用程序,一切正常,但如果我在资源仍在传输时进入应用程序(例如,我退出1/3的路径并在2/3打开),应用程序将完全冻结,需要从多任务栏关闭。但是Xcode没有显示崩溃。这是因为应用程序一直在运行,但用户界面完全冻结。有人有主意吗???您是否尝试过将发送数据的代码包装在一个dispatch\u async块中? 这可能会有帮助。
另外,如何获取imageurl?也许在离开并重新启动你的应用程序时,它不知何故无法被读取我也以不同的方式遇到了这个问题。在更新进度条的代码部分,您需要将代码放入此块中,使其调用主thead:
dispatch_async(dispatch_get_main_queue(), ^{
//insert progress bar code here
});
我不知道为什么会发生这种情况,但这似乎已经为我解决了。之所以会发生这种情况,是因为委托方法不是从主线程调用的。