使用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中的错误吗?