【发布时间】:2014-08-15 02:40:17
【问题描述】:
我有一个基本上看起来像这样的字符串:
分数:
玩家一:得分
玩家二得分
玩家三:得分
我想将此作为文本分享给 WhatsApp、Facebook、iMessage 等应用程序。最好的方法是什么?我曾尝试以 .txt 文件的形式共享,但它以文件的形式共享,而不是 WhatsApp 中的常规消息。
【问题讨论】:
标签: ios objective-c sharing
我有一个基本上看起来像这样的字符串:
分数:
玩家一:得分
玩家二得分
玩家三:得分
我想将此作为文本分享给 WhatsApp、Facebook、iMessage 等应用程序。最好的方法是什么?我曾尝试以 .txt 文件的形式共享,但它以文件的形式共享,而不是 WhatsApp 中的常规消息。
【问题讨论】:
标签: ios objective-c sharing
您可以使用自定义 URL 方案。 Facebook 和 WhatsApp 等应用程序通常有自己的方案,您可以使用这些方案将数据发送到这些应用程序。在此处查看 WhatsApp 的信息:Link
或者,您可以使用UIActivityViewController。这也支持其他数据类型,而不仅仅是字符串(参见this SO question)。
NSString *textToShare = @"your text";
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[textToShare] applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll]; //Exclude whichever aren't relevant
[self presentViewController:activityVC animated:YES completion:nil];
这里有一篇关于这种方法的不错的博文:Link
【讨论】:
UIActivityViewController,我过去使用过URL方案。他们在我需要的情况下为我工作。
在swift中你可以这样做来共享一个字符串
var shareString = "Hello i am share string please share me!";
var activityViewController: UIActivityViewController = UIActivityViewController(activityItems: [shareString], applicationActivities: nil);
var currentViewController:UIViewController = UIApplication.sharedApplication().keyWindow!.rootViewController!
currentViewController.presentViewController(activityViewController, animated: true, completion: nil);
【讨论】:
UIActivityViewController 接受参数,
第一个activityItems,它是一个Any类型的数组,你可以传递你想分享的任何东西,如果你想分享不同的数据类型,你可以使用一个NSArray并将它转换为一个类似let activityItems : NSArray = [object1, object2] as! [Any]
第二个应用活动,也就是你的应用可能提供的服务,大部分为nil。
对于 Swift 3 -> 4.2,使用以下语法:
let yourMessage = "this is your\n message that you want to share !!"
let activityItems = [yourMessage]
let activityController = UIActivityViewController(activityItems: activityItems , applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)
【讨论】:
从 iOS 6 开始,Apple 提供了方便但被忽视的 UIActivityViewController 类。
首先创建一个UIActivityViewController 的实例,对于activityItems,将消息或URL 或两者都传递到应用程序的数据文件。根据用户从活动菜单中选择的活动,iOS 使用您传入的消息来预填充其内容。
例如,如果用户选择通过电子邮件共享图书,您传入的消息将预先填充电子邮件的正文。由于并非所有活动都具有此类功能,例如 AirDrop,因此 iOS 可能会丢弃该消息。
最后presentUIActivityViewController给用户。
let shareString = "Hello This is a sharingText!"
let shareUrl = URL(string: "https://www.google.com")
let activityViewController: UIActivityViewController = UIActivityViewController(activityItems: [shareString, shareUrl], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
【讨论】: