【问题标题】:How to pass text to 3rd party app in iOS如何在 iOS 中将文本传递给 3rd 方应用程序
【发布时间】:2015-01-09 13:44:10
【问题描述】:

我的应用会生成某种文本信息。

用户在我的应用程序中按下“共享”等按钮,然后弹出一个窗口,其中包含已安装应用程序的列表或只有可以接收字符串参数的应用程序。之后,用户选择例如“邮件”应用程序,然后使用新电子邮件和我的应用程序中的给定文本打开它。或者用户选择 Skype 应用程序,然后使用给定的文本打开它。

这些场景如何在 iOS 中实现?

PS:我已经在 Android 应用程序中看到了类似的行为(通过 Intent extras)。

更新:我在下面发布了对我有用的答案(通过 UIActivityViewController)正是我需要的。

【问题讨论】:

  • 在 iOS 中没有通用的方法
  • UIActivityViewController
  • 谢谢 rmaddy。它对我有用;)

标签: ios objective-c


【解决方案1】:

没有适用于所有目标应用的单一答案。您需要研究每个应用程序,看看它是否具有从其他应用程序接收信息的功能。

执行此操作的一种简单方法是调用以其他应用为目标的 URL。

对于邮件,您可以调用 mailto:// URL,该 URL 使用所需字段(收件人、抄送、密件抄送、主题或正文)中的文本组成电子邮件。

如果应用支持 iOS 文档模型,您可以传递给它一个要打开的文档。

如果目标应用程序有服务器,那么您也可以连接到服务器并以这种方式向其发送数据。同样,这不是您一般可以问的问题。每个目标应用的答案都不同,而对于某些应用,答案将是“你不能,因为它没有任何机制可以从外部应用接收数据。”

Android 是一头与 iOS 不同的野兽,拥有不同的能力。 iOS 更像是一个“围墙花园”,在您的应用之外访问非常有限。

【讨论】:

  • 使用UIActivityViewController 是最好的答案。
  • 但只有在接收应用程序具有内置支持的情况下才能工作。回到我的说法,对于您要向其发送数据的每个应用程序,答案都是不同的。
  • 对。但是看看这个问题——按下“分享”按钮。窗口弹出应用程序列表。用户选择一个,例如“邮件”。这就是UIActivityViewController的确切描述。
  • 谢谢邓肯,但在我的特殊情况下,UIActivityViewController 似乎工作得很好。
【解决方案2】:

我发现对我来说最好的解决方案是

- (IBAction)onShare:(id)sender {
    NSString *textStr = self.textToShare.text;
    NSArray *items = @[textStr];

    UIActivityViewController *activity = [[UIActivityViewController alloc]
                                          initWithActivityItems:items
                                          applicationActivities:nil];

    [self presentViewController:activity animated:YES completion:nil];
}

它完全符合我的需要。它显示带有能够接收文本字符串的应用程序列表的弹出视图。然后用户可以选择其中任何一个,控制器向它发送文本。

【讨论】:

  • 不确定这如何解决您在哪里问我们的问题,这如何在用户选择的应用程序之间传递文本?当然,在应用程序之间传递文本是否意识到您传递的应用程序的开发人员是否也设置了一个接受文本作为参数的URL Scheme?另外,为什么不将self.textToShare.text 直接传递给initWithActivityItems,例如initWithActivityItems:@[self.textToShare.text],这意味着您可以将代码减少两行并且仍然可读。
  • 为什么你认为它不能解决我的问题?它似乎打开了一个视图,其中包含可以接收文本字符串的适当应用程序列表。用户可以选择应用程序,然后将给定的文本传递给选定的应用程序。还是您认为它的工作方式不同?
  • 我也同意,代码可能会以您注意到的方式略微减少。但我不确定带有额外 [] 的代码是否更具可读性。
  • 老实说,我认为您没有按照您想要的方式提出问题。因此,在这里添加更多细节可能是最好的选择,说明它如何解决您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2012-06-15
  • 2023-03-06
相关资源
最近更新 更多