Video und Text auf Twitter, Instagram und anderen Diensten mit UIActivityViewController @ teil
Ich versuche, ein Video und einen Text auf Instagram, Facebook, Twitter und den systemeigenen Diensten wie E-Mail, Nachrichten usw. zu teilen. Ich kann nicht herausfinden, wie Instagram und Twitter im Aktionsblatt zum Teilen angezeigt werden :
Wenn ich eine Reihe von Texten und eine URL als Aktivitätselemente in den Controller übergebe, wird nur Instagram angezeigt, nicht jedoch 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)
Wenn ich eine Klasse erstelle, die stattdessen das UIActivityItemSource-Protokoll implementiert und dieses als activityItems verwendet, wird nur Twitter angezeigt, nicht jedoch 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
}
}
und dann ersetzen Sie die Elemente durch diese:
items = [VideoActivityItemSource(url: url)]
Ich habe keine Ahnung, warum Twitter in diesem Fall nicht im Aktionsblatt angezeigt wird. Hat jemand eine Idee, wie man das löst?