从这个UIDocumentInteractionController中,我选择了Whatsapp选项,将用户重定向到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并以编程方式选择Whatsapp应用程序选项?
目前,用户必须两次选择Whatsapp选项才能共享图像.
PS:我正在使用UIActivityViewController,因为我也在使用其他活动.
解决方法
好吧,让我们慢慢地打破这2个最快捷的方式.
Facebook Whatsapp
通过UIActivityViewController
如果您通过UIActivityViewController共享映像,那么为了提供Whatsapp选项,您需要创建一个自定义的UIActivity(See Stackoverflow Question).
这个问题是:
> Whatsapp还没有提供一个传递图像对象的URL方案(还有).
看看JBWhatsAppActivity,如果你对这一般很好奇.
通过UIDocumentInteractionController
如果您通过UIDocumentInteractionController共享映像,那么为了提供Facebook选项,您需要将UTI指定为public.image.
这个问题是:
> public.image UTI将填充您的UIDocumentInteractionController与更多的选项,而不仅仅是Facebook和Whatsapp.
>保存选项,而不是
>使用-presentOpenInMenuFromRect:inView:animated:仅显示打开此文件类型的应用程序的方法…
>您需要使用-presentOptionsMenuFromRect:inView:animated:方法才能显示保存到相册的选项.但这将包括其他选项,如邮件等
概要:
如果你只使用UIDocumentInteractionController,那么你应该接受你不能只显示Facebook Whatsapp Save(由于上述原因)
如果您使用UIActivityViewController并且不想为Whatsapp创建一个自定义的UIActivity,那么您将被卡住但是…如果您决定使用自定义的UIActivity,那么您仍然卡住,因为没有任何条款可以共享图像对象Whatsapp使用UIActivityViewController.
结论:
只有Facebook Whatsapp保存选项似乎没有任何简单的方法.
这使得它变得复杂的是Whatsapp,这迫使你使用UIDocumentInteractionController,这似乎是在Whatsapp(当前)上共享一个映像的唯一方法,并且由于它是有限的URL方案,在UIActivityViewController中没有任何意义.
此外,使用UIDocumentInteractionController反过来会导致您提供比您想要的更多选项.
老实说,现在看起来很惨淡.