将图像分享给Whatsapp& Facebook的

时间:2014-05-28 21:14:06

标签: 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,因为我也在使用其他活动。

2 个答案:

答案 0 :(得分:20)

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

嗯...让我们以最快的两种方式慢慢打破这个。


Facebook + Whatsapp

通过UIActivityViewController

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

问题与此相关:

  1. Whatsapp没有提供传递图像对象的URL方案(尚未 如果您对此一般感到好奇,请查看See Stackoverflow Question
  2. 通过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等。
    3. 要点:

      如果您只使用UIDocumentInteractionController,那么您应该接受以下事实: Facebook + Whatsapp +保存(由于上述原因

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

      结论:

      似乎没有任何简单的方法来只是 Facebook + Whatsapp +保存选项。

      让它变得复杂的是Whatsapp迫使你使用UIDocumentInteractionController,这似乎是在Whatsapp上共享图像的唯一方式(目前由于它有限的网址方案,在UIActivityViewController中提供它没有任何意义。

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

      老实说,现在看起来非常暗淡。

答案 1 :(得分:1)

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