我想在Instagram、Facebook、Twitter以及本地服务(如Mail、Messages等)上分享视频和文本,但我不知道如何使Instagram和Twitter都在共享操作表中显示出来:
如果我将文本数组和URL作为活动项目传递到控制器中,只会显示Instagram,而不会显示Twitter。
let url: NSURL = NSURL() // a url that directs to a video
let items: [AnyObject] = ["Check out this video", url]
let shareable = UIActivityViewController(activityItems: items, applicationActivities: nil)
controller.presentViewController(shareable,
animated: true,
completion: nil)
如果我创建一个实现UIActivityItemSource协议的类,并将其用作activityItems,那么Twitter就会出现,但Instagram不会出现:
class VideoActivityItemSource: NSObject, UIActivityItemSource {
private let videoUrl: NSURL
private let shareText = "View the full video here!"
init(url: NSURL) {
self.videoUrl = url
}
func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
return ""
}
func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
switch activityType {
case UIActivityTypePostToFacebook:
return self.videoUrl
case UIActivityTypeMail:
return self.videoUrl
default:
return ["text": self.shareText, "url": self.videoUrl]
}
}
func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String {
return "Hey check this new cool app!!!"
}
func activityViewController(activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: String?, suggestedSize size: CGSize) -> UIImage? {
return nil
}
}
然后将这些项目替换为:
items = [VideoActivityItemSource(url: url)]
我不知道为什么在这种情况下Twitter不会出现在操作表中。有人知道如何解决吗?