如何与 Facebook、Twitter 等共享应用程序共享字符串?

How to share a String with sharing apps like Facebook, Twitter, etc.?

我正在开发一个应用程序,我想要一个共享按钮,允许用户从他们可以共享的列表中选择一个应用程序,然后打开该应用程序或某种让他们发推的对话框、post、短信等

我已经在我的 Android 应用程序上实现了这一点,因为在那里创建 ACTION_SEND 意图非常简单,并根据某些 mime 类型过滤要与之共享的应用程序。

我想要与 iOS8 和 Swift 类似的东西,但我找不到任何实现方法。

我不想在我的应用程序中有按钮用于与 Twitter 共享,或与 Facebook 共享,或...我只想 ping 一个共享资源,让我获得候选应用程序共享和然后让用户选择一个,然后使用我的字符串进入应用程序。

更新

所以,我想出了一个办法:

var sharingItems = [AnyObject]()

sharingItems.append(NSString(string: "Whatever you want to share!"))

let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil)

self.presentViewController(activityViewController, animated: true, completion: nil)

然后 phone 会找出您可以 ping 的内容,例如 Twitter、Tumblr、Messenger 等。

当然,我有点惊讶地发现 Facebook 不在列表中。我也没有尝试这条路线,因为我虽然从 iOS 8 开始不推荐使用 Share Sheets 以支持 Application Extensions。

如果有更好的方法或其他方法应该在 iOS 8 中完成,请告诉我:)

只是为了给你一个更全面的解决方案(Facebook 实际上是一个选项),你可以使用 UIActivityViewController排除 顺序不相关的项目分享到社交媒体,例如分享到 Facebook 和 Twitter,您可以像这样排除其他所有内容:

let activityViewController = UIActivityViewController(activityItems:
  ["Whatever you want to share!"], applicationActivities: nil)
let excludeActivities = [
    UIActivityTypeMessage,
    UIActivityTypeMail,
    UIActivityTypePrint,
    UIActivityTypeCopyToPasteboard,
    UIActivityTypeAssignToContact,
    UIActivityTypeSaveToCameraRoll,
    UIActivityTypeAddToReadingList,
    UIActivityTypePostToFlickr,
    UIActivityTypePostToTencentWeibo,
    UIActivityTypeAirDrop]
activityViewController.excludedActivityTypes = excludeActivities;

presentViewController(activityViewController, animated: true,
  completion: nil)

Here's a full list of the built-in activity types.