ios - 将图像分享到 Whatsapp 和 Facebook

标签 ios objective-c uiactivityviewcontroller whatsapp uidocumentinteraction

我已经能够将照片分享到 Whatsapp,但我这样做的方法是在 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 因为我也在使用其他事件。

最佳答案

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

好吧...让我们慢慢分解这两种最快的方法。


Facebook + Whatsapp

通过 UIActivityViewController

如果您通过 UIActivityViewController 分享图片,那么为了提供 Whatsapp 选项,您需要创建自定义 UIActivity (See Stackoverflow Question)

问题是:

  1. Whatsapp 尚未提供用于传递图像对象的 URL 方案(目前)。
    查看JBWhatsAppActivity如果您对此感到好奇。

通过 UIDocumentInteractionController

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

问题是:

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

总结:

如果您只使用 UIDocumentInteractionController 那么您应该接受这样一个事实,即您不能 Facebook + Whatsapp + Save(由于上述原因 em>)

如果您使用 UIActivityViewController 并且不想为 Whatsapp 创建自定义 UIActivity,那么您会被卡住但是...如果您决定使用自定义 UIActivity,那么您仍然陷入困境,因为没有规定可以使用 UIActivityViewController 与 Whatsapp 共享图像对象。

结论:

似乎没有任何简单的方法可以 Facebook + Whatsapp + 保存选项。

使它复杂化的是 Whatsapp,它迫使您使用 UIDocumentInteractionController,这似乎是在 Whatsapp 上共享图像的唯一方式(当前) 由于它的 URL 方案有限,因此在 UIActivityViewController 中提供它没有意义。

此外,依次使用 UIDocumentInteractionController 会让您提供比您想要的更多的选项。

老实说,现在这看起来很惨淡。

关于ios - 将图像分享到 Whatsapp 和 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921990/

相关文章:

ios - SwiftUI在FetchRequest中使用带有结构参数的关系谓词

ios - UISearchController 向后滑动时错误的动画然后消失

ios - UITextField 导致应用程序在 iOS 8 上卡住

objective-c - 在自定义单元格中维护 UITextViews 的值

java - 使用 Objective-C 加密数据并使用 Java 问题解密

iOS 使用 UIActivityViewController 将图片分享到 LinkedIn

iphone - 应用商店的浏览屏幕上显示的图标大小应该是多少?

objective-c - ScriptingBridge - 它是如何工作的 "Behind the Scenes"

swift - 通过本地 url 共享图像时,Instagram 共享扩展返回错误消息

iphone - 如果 iOS 6 [做这个] 否则 iOS 5 [做那个]? - UIActivityViewController