Ios 将文本作为字符串共享到其他应用程序

Ios 将文本作为字符串共享到其他应用程序,ios,objective-c,sharing,Ios,Objective C,Sharing,我有一个字符串,基本上如下所示: 分数: 玩家一:得分 球员两分 第三名:得分 我想将此作为文本分享到诸如WhatsApp、Facebook、iMessage等应用程序。实现这一点的最佳方式是什么?我尝试过以.txt文件的形式共享,但它以文件的形式共享,而不是以WhatsApp中的常规消息的形式共享。您可以使用自定义URL方案。Facebook和WhatsApp等应用程序通常都有自己的方案,您可以使用它们将数据发送到这些应用程序中。请参见WhatsApp的信息: 或者,您可以使用UIActivi

我有一个字符串,基本上如下所示:

分数:

玩家一:得分
球员两分
第三名:得分


我想将此作为文本分享到诸如WhatsApp、Facebook、iMessage等应用程序。实现这一点的最佳方式是什么?我尝试过以.txt文件的形式共享,但它以文件的形式共享,而不是以WhatsApp中的常规消息的形式共享。

您可以使用自定义URL方案。Facebook和WhatsApp等应用程序通常都有自己的方案,您可以使用它们将数据发送到这些应用程序中。请参见WhatsApp的信息:

或者,您可以使用
UIActivityViewController
。这还支持其他数据类型,而不仅仅是字符串(请参阅)


这里有一篇关于这个方法的不错的博文:

在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![任何]

第二个应用程序活动,即您的应用程序可能提供的服务,通常为零

对于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以来,苹果提供了方便但却被忽视的UIActivityViewController类

首先,创建
UIActivityViewController
的实例,对于
activityItems
,将消息或URL或两者传递到应用程序的数据文件。根据用户从“活动”菜单中选择的活动,iOS使用您传入的消息预填充其内容

例如,如果用户选择通过电子邮件共享书籍,则您传入的消息将预先填充电子邮件正文。由于并非所有活动都具有这种能力,例如空投,iOS可能会丢弃该消息

最后,将
UIActivityViewController
呈现给用户

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)

有没有一种方法可以与任何可以接收文本的应用程序共享,而不是显式地包含某些应用程序?我知道你可以对图像、.txt等文件这样做。我已经试过了,我不认为它会带来任何第三方应用程序。也许我最好的选择就是使用自定义URL方案,并包括最流行的消息传递应用程序。我以前没有实际使用过
UIActivityViewController
,我过去使用过URL方案。他们在我需要他们的情况下为我工作。谢谢你的帮助。我将使用自定义URL方案,对于用户想要共享的应用程序不包括在内的情况,我可以选择另存为图像或.txt文件。好主意。很高兴这有帮助。
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)