【问题标题】:Sharing text as a string to another app将文本作为字符串共享到另一个应用程序
【发布时间】:2014-08-15 02:40:17
【问题描述】:

我有一个基本上看起来像这样的字符串:

分数:

玩家一:得分
玩家二得分
玩家三:得分

我想将此作为文本分享给 WhatsApp、Facebook、iMessage 等应用程序。最好的方法是什么?我曾尝试以 .txt 文件的形式共享,但它以文件的形式共享,而不是 WhatsApp 中的常规消息。

【问题讨论】:

    标签: ios objective-c sharing


    【解决方案1】:

    您可以使用自定义 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

    【讨论】:

    • 有没有办法分享给任何可以接受文本的应用程序,而不是明确包括某些应用程序?我知道您可以对图像、.txt 等文件执行此操作。
    • 我已经尝试过了,我认为它不会启动任何第三方应用程序。也许我最好的选择就是使用自定义 URL 方案并包含最流行的消息传递应用程序。
    • 我之前没有实际使用过UIActivityViewController,我过去使用过URL方案。他们在我需要的情况下为我工作。
    • 感谢您的帮助。我将使用自定义 URL 方案,对于不包含用户想要共享的应用程序的情况,我可以选择另存为图像或 .txt 文件。
    • 好主意。很高兴有帮助。
    【解决方案2】:

    在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);
    

    【讨论】:

      【解决方案3】:

      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)
      

      【讨论】:

        【解决方案4】:

        从 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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多