分享图片至Whatsapp和Facebook

12

我已经能够通过在UIActivityViewController中提供Whatsapp选项并显示一个UIDocumentInteractionController来分享照片。

从这个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,因为我还在使用其他活动。


你提供了哪些“其他活动”,需要使用 UIActivityController - staticVoidMan
其实我只想要使用文档交互控制器来完成Facebook分享和保存到相册的功能,有什么方法可以实现吗? - Lucas Domene
1
显然没有:请参考类似问题 - staticVoidMan
2个回答

20

基本上,你想通过Facebook或Whatsapp分享图片,并提供保存该图片的选项。

好吧...让我们慢慢来,介绍2种最快的方法。


Facebook + Whatsapp

通过UIActivityViewController

如果您通过UIActivityViewController分享图像,则需要创建自定义的UIActivity参见Stackoverflow问题才能提供Whatsapp选项。

以下是其中的问题

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

通过UIDocumentInteractionController

如果您通过UIDocumentInteractionController分享图像,则需要将UTI指定为public.image才能提供Facebook选项。

以下是其中的问题

  1. public.image UTI会在UIDocumentInteractionController中填充很多其他选项,而不仅仅是Facebook和Whatsapp。
  2. 对于Save选项,您需要使用-presentOptionsMenuFromRect:inView:animated:方法,而不是只显示打开此文件类型的应用程序的-presentOpenInMenuFromRect:inView:animated:方法。但这将包括其他选项,例如Mail等。

摘要:

如果你只使用 UIDocumentInteractionController,那么你应该接受这样一个事实,你无法仅展示 Facebook + Whatsapp + 保存(由于上述原因)

如果您使用 UIActivityViewController 并且不想为 Whatsapp 创建自定义 UIActivity,则陷入困境,但是...如果您决定使用自定义 UIActivity,那么您仍然会被卡住,因为目前使用 UIActivityViewController 没有提供使用图片对象与 Whatsapp 共享的功能。

结论:

似乎没有简单的方法只提供 Facebook + Whatsapp + 保存选项。

使情况复杂的是 Whatsapp 强制您使用 UIDocumentInteractionController,而这似乎是在 Whatsapp 上共享图片的唯一方法(目前),并且由于其受限 URL 方案,在 UIActivityViewController 中提供它没有任何意义。

此外,使用 UIDocumentInteractionController 还会导致您提供比您想要的更多选项。

老实说,现在看起来相当黯淡。


所以我将保持当前的应用状态,它可以很好地与 WhatsApp 共享,只是不是我想要的方式。无论如何,感谢您解决我的疑问! - Lucas Domene
@LucasDomene:不客气 :) 嗯...现在我看不到其他解决方法,所以你最好保持现状。 - staticVoidMan
1
看起来这是两种解决方案的组合:https://github.com/mvarie/MMMWhatsAppActivity - Alexis

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接