2
    func pickerView(sender : UIButton) {
    let message="text"
    let objectsToShare = [message]
    let wsActivity = WhatsAppActivity()


    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: [wsActivity])
    activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList,UIActivityTypeCopyToPasteboard,UIActivityTypeSaveToCameraRoll,UIActivityTypePrint]

    self.presentViewController(activityVC, animated: true, completion: nil)
}

我如何使用 Facebook Messenger 做同样的事情?

4

2 回答 2

2

就我的研究而言,您无法在 FB Messenger 中共享“字符串”。这与 FB 信使策略有关(为此丢失了链接参考)。为了在 Facebook Messenger 上分享,您的“activityItems:objectsToShare”应该包含一个 NSURL。我尝试共享多个 NSRUL,但没有成功。

您可以传递一个 [String, NSURL] 数组,例如:

func pickerView(sender : UIButton) {
     let message="text"
     let url = NSURL(String: "https://www.google.com")!
     let objectsToShare = [message, url]  //this is now an [AnyObject]
     //assuming you are don't have applications to exclude

     let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: [wsActivity])
     self.presentViewController(activityVC, animated: true, completion: nil) 
} 

你会发现whatsapp和FB messenger都出现在你的分享表中。但是,FB messenger 只会使用它的 NSURL,而忽略 AnyObject Array 中的 String 项。WhatsApp 将显示链接后面的文本。

也许可以使用 FB SDK 做您想做的事情。虽然我没有亲自尝试过。

于 2016-01-30T10:13:35.630 回答
0

如果您想展示 facebook 应用程序UIActivityViewController 而不是指定任何excludedActivityTypes属性。

因为excludedActivityTypes: [String]? //default is nil。`

所以只需用作

let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: [wsActivity])

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

它将向您显示所有选项,包括 facebook、twitter 分机。

于 2015-10-16T13:38:42.407 回答