AirDrop与资产库共享视频失败

时间:2014-05-22 05:58:34

标签: ios sharing alassetslibrary airdrop uiactivitytypeairdrop

使用AirDrop,我想分享资产库中的视频。

关于AirDrop,文件说:

  

使用此服务时,您可以提供NSString,NSAttributedString,UIImage,ALAsset和NSURL对象作为活动项的数据。您还可以指定其内容使用assets-library方案的NSURL对象。您还可以提供包含列出的数据类型的NSArray或NSDictionary对象。

我所看到的是,如果活动项的数据是带有资产库方案的NSURL,则传输失败并出现以下错误:

  

发件人kSFOperationEventErrorOccured {       错误=“错误域= SFOperation代码= -6 \”传输失败,因为您没有权限读取\ U201cIMG_0119.MP4 \ U201d。\“UserInfo = 0x155f5db0 {NSLocalizedDescription =传输失败,因为您没有权限阅读\ U201cIMG_0119.MP4 \ U201d。}“;       FileIcon =“”;       档案=(       );       SessionID = 9165CCC70A39;   }

我能够通过AirDrop成功共享资产库中的视频的唯一方法是将文件复制到临时位置,然后将活动项的数据设置为新的NSURL。基本上是这样的:

- (id)activityViewController:(UIActivityViewController *)activityViewController   itemForActivityType:(NSString *)activityType
  {
      ALAssetRepresentation* assetRepresentation = [self.asset defaultRepresentation];

      NSString* outputDirectory = [NSString stringWithFormat:@"%@", NSTemporaryDirectory()];
      NSString* path = [outputDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", assetRepresentation.filename]];

      NSUInteger size = (NSUInteger)assetRepresentation.size;
      NSMutableData* data = [NSMutableData dataWithLength:size];

      NSUInteger bytesRead = [assetRepresentation getBytes:data.mutableBytes fromOffset:0 length:size error:nil];
      if ([data writeToFile:path atomically:YES])
      {
          self.url = [NSURL fileURLWithPath:path];
      }
      return url;
}

是否有人设法从资产库共享视频而不将文件复制到临时位置?我错过了什么或者这是SDK中的错误吗?

0 个答案:

没有答案