无法使用NSURLSession从真实设备上的Share Extension下载

蒂姆·约翰森

我正在构建一个共享扩展程序,该扩展程序需要下载一些JSON作为响应。我完全为为什么无法正常工作而感到困惑,我尝试按摩了其中的许多小片段,但仍然一无所获。在模拟器上,这可以正常工作。

这是我得到的:

- (void)didSelectPost
{
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    // ... set up the request

    NSString *const kFLHTTPMethodPOST = @"POST";
    [request setHTTPMethod:kFLHTTPMethodPOST];

    NSString *sessionConfigurationIdentifier = [[NSBundle mainBundle] bundleIdentifier];

    self.sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionConfigurationIdentifier];
    // The sharedContainerIdentifier must be populated for background sessions
    // https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1
    // http://cl.ly/image/0Y3P1B450U1Y
    self.sessionConfiguration.sharedContainerIdentifier = kFLAppGroupIdentifier;
    // The delegate must be populated for background sessions
    // https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html#//apple_ref/doc/uid/TP40013509-SW44
    // http://cl.ly/image/431J0G2r2p0X
    self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:nil];

    // Generate our task and start it

    // Use of a download task is required for extensions even though a data task might be more apt here
    // https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html#//apple_ref/doc/uid/TP40013509-SW44
    self.task = [self.session downloadTaskWithRequest:request];
    [self.task resume];

    // Finish the extension

    [self.extensionContext completeRequestReturningItems:nil completionHandler:nil];
}

这与https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21的示例代码没有太大不同-SW2以及我在其他地方看到的许多代码。据我所知,主应用程序和扩展都具有适当的权利和供应。似乎该应用程序组正在工作,因为扩展名能够存储文件并从与主应用程序共享的NSUserDefaults副本中提取值。

有人能使它正常工作吗?好像我一定缺少什么。

更新:

一直在深入研究。

扩展程序完成后,我看到此日志。

8月28日12:03:41 Tim-Johnsens-iPod nsurlsessiond [98]:无法在file:/// private / var / mobile / Containers / Shared / AppGroup / 4C86E3B4-6795-4D8A-9C47-11B88A252703 /创建目录Library / Caches / com.apple.nsurlsessiond / Downloads / com.flipboard.flipboard-ipad-debug /,错误:错误域= NSCocoaErrorDomain代码= 513“操作无法完成。(可可错误513。)” UserInfo = 0x14ea3460 {NSFilePath = / private / var / mobile / Containers / Shared / AppGroup / 4C86E3B4-6795-4D8A-9C47-11B88A252703 / Library / Caches / com.apple.nsurlsessiond / Downloads / com.flipboard.flipboard-ipad-debug,NSUnderlyingError = 0x14e7f320“该操作无法完成。不允许该操作”}

奇怪的是,我已经成功地将文件存储在file:/// private / var / mobile / Containers / Shared / AppGroup / 4C86E3B4-6795-4D8A-9C47-11B88A252703 /了,由于某种原因,NSURLSession似乎无法显示把文件放在那里。

我在扩展名的-viewDidLoad中添加了一行以手动创建此目录,并且该错误停止了,但是现在我遇到了其他错误。看起来好像正在制作一个临时文件,但是iOS在某个地方创建了无效的URL,然后该会话上的-URLSession:task:didCompleteWithError:连续被调用了两次。(注意:我添加了以“ ~~”开头的行)。

8月28日13:33:34 Tim-Johnsens-iPod nsurlsessiond [98]:__NSCFLocalDownloadFile:创建临时文件的错误1:/ private / var / mobile / Containers / Shared / AppGroup / 4C86E3B4-6795-4D8A-9C47-11B88A252703 / Library /缓存/com.apple.nsurlsessiond/Downloads/com.flipboard.flipboard-ipad-debug/CFNetworkDownload_BUqFkv.tmp 8月28日13:33:34 Tim-Johnsens-iPod nsurlsessiond [98]:来自pid 502的连接:警告:在执行期间捕获到异常调用接收到的消息,删除传入消息并使连接无效。例外:*-[NSURL initFileURLWithPath:]:零字符串参数8月28日13:33:34 Tim-Johnsens-iPod ShareExtension [502]:~~-[FLShareExtensionViewController URLSession:task:didCompleteWithError:]-错误域= NSURLErrorDomain代码= -1“未知错误” UserInfo = 0x176d19d0 {NSErrorFailingURLKey = [删除],NSErrorFailingURLStringKey = [删除],NSLocalizedDescription =未知错误} 8月28日13:33:34 Tim-Johnsens-iPod ShareExtension [502]:~~-[FLShareExtensionViewController URLSession:task:didCompleteWithError :]-错误域= NSURLErrorDomain代码= -997“与后台传输服务的连接断开” UserInfo = 0x1765fb80 {NSErrorFailingURLKey = [REDACTED],NSErrorFailingURLStringKey = [REDACTED],NSLocalizedDescription =与后台传输服务的连接断开}

我猜我的扩展程序正在收到带有“失去与后台传输服务的连接”错误的回调,因为后台传输服务由于抛出该异常而崩溃了。

蒂姆·约翰森

事实证明,此问题已在iOS 8 GM中修复,仅是Beta中的一个错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在真实设备上缺少livereload升级后,无法从真实设备远程调试js

来自分类Dev

Framelayout在真实设备上无法正确显示FAB

来自分类Dev

LinearLayout 水平无法在真实设备上正确显示

来自分类Dev

Chrome驱动程序无法在使用Appium的android真实设备上运行

来自分类Dev

无法使用 Windows 10 机器在 iOS 真实设备上运行 appium 测试

来自分类Dev

Chrome会在哪里存储使用Windows 7上的Amazon-Cloud Extension下载的脱机图书?

来自分类Dev

无法从真实设备运行应用

来自分类Dev

拍照在真实设备上崩溃

来自分类Dev

真实设备上的NSDictionary错误

来自分类Dev

使用真实设备时布局运行

来自分类Dev

仅在真实设备上无法在模拟器上运行Xcode项目

来自分类Dev

AFNetworking有时无法在真实设备上的iOS 8和9上运行

来自分类Dev

IOS 10上的Firebase无法从真实设备上的数据库加载数据

来自分类Dev

无法在真实设备上的iOS 10上运行Appium测试

来自分类Dev

无法在真实设备上运行RealTimeRoom Google-Play-iOS iOS ButtonClicker2000示例

来自分类Dev

Flutter应用程序无法在真实设备或仿真器上运行

来自分类Dev

文件无法保存在所有真实设备Android Studio上

来自分类Dev

Android真实设备无法解析Mac OS上制作的应用

来自分类Dev

由于gradle已过时,因此无法在真实设备上运行android应用

来自分类Dev

PHAsset + AFNetworking。无法将文件上传到真实设备上的服务器

来自分类Dev

ObjectAnimator Android 在带有 API 19 的真实设备上无法正常工作

来自分类Dev

下标错误仅在真实设备上使用不明确

来自分类Dev

在真实设备上使用openCV框架编译iOS应用时出错

来自分类Dev

使用键盘时,Android应用程序在真实设备上崩溃

来自分类Dev

下标错误仅在真实设备上模棱两可使用

来自分类Dev

无法使用带有某些链接的 NSURLSession 下载图像

来自分类Dev

无法使用浏览器在移动真实设备上从本地计算机上载文件到本地测试

来自分类Dev

使用NSURLSession下载大量图像

来自分类Dev

Appium无法将应用安装到真实设备

Related 相关文章

  1. 1

    在真实设备上缺少livereload升级后,无法从真实设备远程调试js

  2. 2

    Framelayout在真实设备上无法正确显示FAB

  3. 3

    LinearLayout 水平无法在真实设备上正确显示

  4. 4

    Chrome驱动程序无法在使用Appium的android真实设备上运行

  5. 5

    无法使用 Windows 10 机器在 iOS 真实设备上运行 appium 测试

  6. 6

    Chrome会在哪里存储使用Windows 7上的Amazon-Cloud Extension下载的脱机图书?

  7. 7

    无法从真实设备运行应用

  8. 8

    拍照在真实设备上崩溃

  9. 9

    真实设备上的NSDictionary错误

  10. 10

    使用真实设备时布局运行

  11. 11

    仅在真实设备上无法在模拟器上运行Xcode项目

  12. 12

    AFNetworking有时无法在真实设备上的iOS 8和9上运行

  13. 13

    IOS 10上的Firebase无法从真实设备上的数据库加载数据

  14. 14

    无法在真实设备上的iOS 10上运行Appium测试

  15. 15

    无法在真实设备上运行RealTimeRoom Google-Play-iOS iOS ButtonClicker2000示例

  16. 16

    Flutter应用程序无法在真实设备或仿真器上运行

  17. 17

    文件无法保存在所有真实设备Android Studio上

  18. 18

    Android真实设备无法解析Mac OS上制作的应用

  19. 19

    由于gradle已过时,因此无法在真实设备上运行android应用

  20. 20

    PHAsset + AFNetworking。无法将文件上传到真实设备上的服务器

  21. 21

    ObjectAnimator Android 在带有 API 19 的真实设备上无法正常工作

  22. 22

    下标错误仅在真实设备上使用不明确

  23. 23

    在真实设备上使用openCV框架编译iOS应用时出错

  24. 24

    使用键盘时,Android应用程序在真实设备上崩溃

  25. 25

    下标错误仅在真实设备上模棱两可使用

  26. 26

    无法使用带有某些链接的 NSURLSession 下载图像

  27. 27

    无法使用浏览器在移动真实设备上从本地计算机上载文件到本地测试

  28. 28

    使用NSURLSession下载大量图像

  29. 29

    Appium无法将应用安装到真实设备

热门标签

归档