与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问题 )

这个问题是:

  1. Whatsapp尚未提供传递图像对象的URL方案( 尚未 )。
    如果您对此一般感到好奇,请查看JBWhatsAppActivity 。

通过UIDocumentInteractionController

如果您通过UIDocumentInteractionController共享图像,那么为了提供Facebook选项,您需要将UTI指定为public.image

这个问题是:

  1. public.image UTI将使用比Facebook和UIDocumentInteractionController更多的选项来填充你的UIDocumentInteractionController
  2. 对于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