如何在 iOS 8 中直接启动活动而不显示共享表?
Posted
技术标签:
【中文标题】如何在 iOS 8 中直接启动活动而不显示共享表?【英文标题】:How to launch activity directly without showing share sheet in iOS 8? 【发布时间】:2015-09-19 11:38:56 【问题描述】:目前,我的应用可以选择使用 SLComposeViewController 在 Facebook 和 Twitter 上分享。
SLComposeViewController *fbComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[fbComposeViewController setInitialText:text_short];
[fbComposeViewController addURL:url];
[self.navigationController presentViewController:fbComposeViewController
animated:YES
completion:^
NSLog(@"fb activity completed");
];
我可以使用
分享到其他网站,例如 Gmail、Whatsapp、Message 和 MailUIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[text, url]
applicationActivities:nil];
controller.excludedActivityTypes = @[UIActivityTypePostToWeibo,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo,
UIActivityTypeAirDrop,
UIActivityTypePostToFacebook,
UIActivityTypePostToTwitter
];
[self presentViewController:controller animated:YES completion:nil];
但是,这会启动一个共享表,用户必须在其中选择他必须启动的应用程序。有没有办法通过指定活动名称直接启动共享对话框?例如,Uber 中的 Whatsapp、电子邮件和文本邀请。
【问题讨论】:
我部分理解您的问题,但您不需要在活动控制器中显示 facebook 和 twiter UIactivitycontroller 提供共享事件,无论您的应用程序安装在应用程序中,如果您想共享特定应用程序使用自定义视图,否则使用 CanopenURL 方法 我不希望用户再次选择要启动的应用程序。所以一旦他点击说分享到whatsapp,我想分享 你能分享一个canOpenURL的例子吗?? 但用户必须安装应用程序并且用户必须经过身份验证。您还应该有一个备份计划,以防 canOpenURL 方法出现问题 【参考方案1】:例如,如果你想分享whatsapp
// this is your share content message
NSString * msg = @"ApplNSString YOUR MSG";
NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",msg];
NSURL * whatsappURL = [NSURL URLWithString:[urlWhats stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
// this is identify if whatsapp is already install your device , if yes it open the whatsapp and share the content
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL])
[[UIApplication sharedApplication] openURL: whatsappURL];
else
// it shows the alert for no application found
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
其他reference
【讨论】:
例如我在这里添加的目的,如果你需要什么我修改我的答案 谢谢!那行得通。看起来我应该能够以类似的方式启动电子邮件和文本应用程序。只是一个补充,您需要对您发送的消息进行 urlencode。你知道我在哪里可以找到应用程序网址的文档吗?尤其是电子邮件和短信 @Ajax - 在第三方应用程序/else 中导航到外部应用程序,您可以像 whatsapp:// 一样获得回调 URL,如果您想打开本机函数,使用委托方法就可以了 @Ajax - 你需要任何关于此的其他信息吗以上是关于如何在 iOS 8 中直接启动活动而不显示共享表?的主要内容,如果未能解决你的问题,请参考以下文章
显示 iOS 共享表后未调用 viewWillDisappear