我已经能够与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
,因为我也在使用其他活动。
答案 0 :(得分:20)
所以基本上,你想通过Facebook或Whatsapp分享图像,并提供保存图像的选项。
嗯...让我们以最快的两种方式慢慢打破这个。
UIActivityViewController
如果您通过 UIActivityViewController
分享图片,那么为了提供Whatsapp选项,您需要创建自定义UIActivity
({{3 }})。
问题与此相关:
UIDocumentInteractionController
如果您通过 UIDocumentInteractionController
分享图片,那么为了提供Facebook选项,您需要将UTI指定为public.image
。
问题与此相关:
public.image
UTI将为您的UIDocumentInteractionController
填充更多选项,而不仅仅是Facebook和Whatsapp。Save
选项,而不是。{
-presentOpenInMenuFromRect:inView:animated:
方法仅显示打开此文件类型的应用... -presentOptionsMenuFromRect:inView:animated:
方法才能显示选项Save to Album
。 但这将包括其他选项,例如Mail
等。如果您只使用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。