【问题标题】:Sharing image to Whatsapp & Facebook将图像分享到 Whatsapp 和 Facebook
【发布时间】:2014-07-18 06:55:57
【问题描述】:

我已经能够将照片分享到 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,因为我也在使用其他活动。

【问题讨论】:

  • 您提供的哪些“其他活动”迫使您使用UIActivityController
  • 其实我只想要 facebook 并保存到相册,有没有办法只使用文档交互控制器来做到这一点?
  • 显然没有:see similar question

标签: ios objective-c uiactivityviewcontroller whatsapp uidocumentinteraction


【解决方案1】:

所以基本上,您想通过 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(由于上述原因

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

结论:

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

让事情变得复杂的是 Whatsapp,它迫使您使用 UIDocumentInteractionController,这似乎是在 Whatsapp 上共享图像的唯一方法(目前由于它是有限的 URL 方案,在 UIActivityViewController 中提供它是没有意义的。

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

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

【讨论】:

  • 所以我会让应用保持原样,它可以很好地用于 whatsapp 共享,但不是我想要的方式。无论如何,感谢您解决我的疑问!
  • @LucasDomene : 不客气 :) 嗯...现在我看不出有其他办法,所以你最好按照自己的方式行事。
  • 看起来这是两种解决方案的组合:github.com/mvarie/MMMWhatsAppActivity
【解决方案2】:

好吧,如果我以正确的方式理解问题,可以选择通过 1 UIDocumentInteractionController 轻松分享,请查看我的旧问题和答案:https://stackoverflow.com/a/20887254/849616

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多