如何使用 UIActivityViewController 共享 PHAsset?

How to share PHAsset by using UIActivityViewController?

我现在正尝试通过 UIActivityViewController 共享 Phasset(视频或图像)。

AFAIK 我过去常常通过给数组 url 并像这样使用

来共享位于我的文档目录中的图像或视频
[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil];

但我不知道如何共享 phasset。

我想共享 phaseset 而不下载或导出到我的文档文件夹。

有办法吗?

谢谢。

目前我找不到任何解决方案。 Ricoh theta 和 GoPro gallery 也因此不提供多重分享。也许 Apple 只允许对他们的画廊进行多重共享。

如果有人找到解决方案,请与我分享。谢谢。

我正在使用以下方法:

NSArray *selectedIndexPaths = [self.collectionView indexPathsForSelectedItems];

NSMutableArray *activityItems = [NSMutableArray array];

// image Loader
PHImageManager *im = [PHImageManager defaultManager];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
options.version = PHImageRequestOptionsVersionCurrent;
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic;
options.resizeMode = PHImageRequestOptionsResizeModeNone;

for (NSIndexPath *index in selectedIndexPaths)
{
    // load image
    [im requestImageDataForAsset:self.assetsFetchResults[index.item] options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info)
     {
         [activityItems addObject:imageData];
     }];
}

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
// prevent sharing to gallery again
activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll];

首先我尝试对文件使用 NSURL,但这不适用于每个共享扩展(例如,邮件不起作用,但 imessage 起作用...) 所以我结束了,分享图片的NSData。

注意: self.assetsFetchResults 是一个 PHFetchResults,在这里像一个简单的 NSArray 一样通过访问我喜欢分享的 PHAssets 使用。

注2: 我里面只有本地图片 PHFetchResults!