Comparta un video y texto en Twitter, Instagram y otros servicios utilizando UIActivityViewController
Estoy tratando de compartir un video y un texto en Instagram, Facebook, Twitter y los servicios nativos como Correo, Mensajes, ... No puedo encontrar la manera de hacer que ambos, Instagram y Twitter, aparezcan en la hoja de acciones para compartir:
Si paso una matriz de texto y una URL como elementos de actividad en el controlador, solo aparece Instagram, pero no 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)
Si creo una clase que implementa el protocolo UIActivityItemSource en su lugar y la uso como actividadItems, solo aparece Twitter, pero no 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
}
}
y luego reemplace los elementos por esto:
items = [VideoActivityItemSource(url: url)]
No tengo idea de por qué en este caso Twitter no aparecerá en la hoja de acción. ¿Alguien tiene una idea de cómo resolver esto?