アプリ内に実装UIActivityViewController
し、文字列と画像の両方を正常に共有できます。ただし、iOS の写真アプリ内で画像を共有すると、アプリに表示されないサービスがいくつかあることに気付きました。つまり、印刷、壁紙として使用、連絡先に割り当て、およびフォト ストリームです。私のアプリは、メール、メッセージ、Facebook、Twitter、およびコピーを問題なく使用できます。
私は次のいずれかを考えています:
UIActivityItemProvider
1.) これらの追加サービスは、UIActivityItemSource
、 などを使用してフォト アプリ内のカスタム サービスとして実装されています。
2.) 私が提供しているデータは、これらのサービスで使用できる正しい形式ではありません。
ドキュメントを数回読みましたが、それについて何も見ていないようです。
編集: 要求どおりにコードを表示:
#define SM_SHARE_IMAGE_AND_STRING 1
-(void)actionToolbarViewControllerUserTappedShareButton:(SMActionToolbarViewController*)sender{
// Reposition anchor view for UIPopoverController to point at
[self repositionAnchorViewToButtonFrame:self.actionToolbarViewController.shareButtonFrame];
// Asynch download of image
[SMUtility downloadAsset:self.selectedAsset completion:^(UIImage *image) {
// Create image source
SMActivitySource *activityImageSource = [[SMActivitySource alloc]initWithImage:image];
#if defined(SM_SHARE_IMAGE_AND_STRING)
// Create string source
NSString *assetsString = [SMUtility assetsString:[NSArray arrayWithObject:self.selectedAsset]];
SMActivitySource *activityStringSource = [[SMActivitySource alloc]initWithString:assetsString];
// Present UIActiviyViewController within an UIPopoverController
NSArray *items = [@[activityImageSource, activityStringSource]mutableCopy];
#else
NSArray *items = [@[activityImageSource]mutableCopy];
#endif
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){
[SMMixPanel eventSharePhotoMethod:@"Share"];
}];
self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}];
}