iOS共享扩展 - 发送大型视频

时间:2018-03-29 19:57:28

标签: ios objective-c cocoa-touch ios-extensions share-extension

所以我正在尝试发送大型视频文件(超过100 MB),每当我使用jQuery(function($) { var $venue_dropdown = $('#venue_dropdown'); $('#select_province_dropdown').on('change', function() { $venue_dropdown.get(0).selectedIndex = 0; // select the ----Select Venue---- option $venue_dropdown.find('option') .not(':first') // ignore the ----Select Venue---- option .hide() // hide all venue options .filter("[data-for='" + $(this).val() + "']") // select venues in the selected Province .show(); // show selected venues }).trigger('change'); // initialise #venue_dropdown in accordance with #select_province_dropdown's initial selection }); 访问视频文件时,扩展程序都会终止。这适用于较小的文件。

我该如何解决这个问题?

dataWithContentsOfURL

2 个答案:

答案 0 :(得分:1)

来自app extension docs

  

用户在应用扩展程序中完成任务后,会立即返回主机应用。如果任务涉及可能很长的上传或下载,您需要确保它可以在您的扩展终止后完成。

  

在您的应用扩展程序调用completeRequestReturningItems:completionHandler:告诉主机应用程序其请求已完成后,系统可以随时终止您的扩展程序。

您需要使用NSURLSession来创建启动后台任务的URL会话。

如果后台任务完成后您的扩展程序未运行,系统将在后台启动您的包含应用,并在AppDelegate中调用application:handleEventsForBackgroundURLSession:completionHandler:

您还需要设置您的扩展程序和包含应用都可以访问的shared container。为此,您需要使用NSURLSessionConfiguration的 sharedContainerIdentifier 属性来指定容器的标识符,以便以后可以访问它。

以下是文档中的示例,展示了如何实现这一目标:

NSURLSession *mySession = [self configureMySession];
   NSURL *url = [NSURL URLWithString:@"http://www.example.com/LargeFile.zip"];
   NSURLSessionTask *myTask = [mySession downloadTaskWithURL:url];
   [myTask resume];

- (NSURLSession *) configureMySession {
    if (!mySession) {
        NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@“com.mycompany.myapp.backgroundsession”];
// To access the shared container you set up, use the sharedContainerIdentifier property on your configuration object.
config.sharedContainerIdentifier = @“com.mycompany.myappgroupidentifier”;
        mySession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
    }
    return mySession;
}

这是related resource,可能会有所帮助。

答案 1 :(得分:-1)

应用扩展程序可能没有此任务的内存容量。

  

运行应用扩展程序的内存限制明显低于对前台应用程序施加的内存限制。在这两个平台上,系统可能会积极地终止扩展,因为用户希望在主机应用程序中返回其主要目标。某些扩展可能具有比其他扩展更低的内存限制:例如,窗口小部件必须特别有效,因为用户可能同时打开多个窗口小部件。

https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1