与Whatsapp和Facebook分享图片
我已经能够将照片分享给Whatsapp,但我这样做的方法是在UIActivityViewController
提供Whatsapp选项,然后显示UIDocumentInteractionController
。
从这个UIDocumentInteractionController
,我选择UIDocumentInteractionController
选项,将用户重定向到Whatsapp并让他分享照片。
到目前为止我的代码是这样的:
if ([activityType isEqualToString:@"whatsappSharing"]) { if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"whatsapp://app"]]) { NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/whatsAppTmp.wai"]; [UIImageJPEGRepresentation(finalImage, 1.0) writeToFile:savePath atomically:YES]; weakDocumentInteraction = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:savePath]]; weakDocumentInteraction.UTI = @"net.whatsapp.image"; weakDocumentInteraction.delegate = weakSelf; [weakDocumentInteraction presentOpenInMenuFromRect:CGRectZero inView:weakSelf.view animated:YES]; } }
我希望能够从UIActivityViewController
选择该选项并直接显示Whatsapp。
有没有办法跳过呈现UIDocumentInteractionController
第二部分,并以UIDocumentInteractionController
选择UIDocumentInteractionController
应用程序选项?
目前,用户必须选择两次Whatsapp选项才能共享图像。
PS:我正在使用UIActivityViewController
因为我也在使用其他活动。
所以基本上,你想通过Facebook或Whatsapp分享图像,并提供保存图像的选项。
嗯…让我们以最快的方式慢慢打破这个。
Facebook + Whatsapp
通过UIActivityViewController
如果您通过UIActivityViewController
共享图像,那么为了提供Whatsapp选项,您需要创建自定义UIActivity
( 请参阅Stackoverflow问题 ) 。
这个问题是:
- Whatsapp尚未提供传递图像对象的URL方案( 尚未 )。
如果您对此一般感到好奇,请查看JBWhatsAppActivity 。
通过UIDocumentInteractionController
如果您通过UIDocumentInteractionController
共享图像,那么为了提供Facebook选项,您需要将UTI指定为public.image
。
这个问题是:
-
public.image
UTI将使用比Facebook和UIDocumentInteractionController
更多的选项来填充你的UIDocumentInteractionController
。 - 对于
Save
选项,而不是- 使用
-presentOpenInMenuFromRect:inView:animated:
方法,仅显示打开此文件类型的应用程序… - 您需要使用
-presentOptionsMenuFromRect:inView:animated:
方法以显示“Save to Album
”选项。 但这将包括其他选项,如Mail
等。
- 使用
概要:
如果你只使用UIDocumentInteractionController
那么你应该接受这样一个事实:你不能只显示Facebook + Whatsapp + Save( 由于上面提到的原因 )
如果您使用UIActivityViewController
并且不想为Whatsapp创建自定义UIActivity
,那么您就会陷入困境但是 ……如果您决定使用自定义UIActivity
那么您仍然会被卡住,因为没有任何条款可以共享图像对象Whatsapp使用UIActivityViewController
。
结论:
似乎没有任何简单的方法来获得Facebook + Whatsapp +保存选项。
令它变得复杂的是UIDocumentInteractionController
迫使你使用UIDocumentInteractionController
,这似乎是在UIDocumentInteractionController
( 当前 )上共享图像的唯一方法, 并且由于它的URL方案有限,在UIActivityViewController
提供它没有任何意义。
此外, UIDocumentInteractionController
使用UIDocumentInteractionController
可以提供比您想要的更多选项。
老实说,现在看起来非常暗淡。
好吧,如果我以正确的方式理解这个问题,可以通过1 UIDocumentInteractionController
轻松分享它,请查看我的旧问题和答案: https : UIDocumentInteractionController
。