将Instagram添加到UIActivityViewController

我正在尝试使用standard共享图像UIActivityViewController,可以使用以下代码在 ,

和 共享:

let firstActivityItem = "foo text"

let secondActivityItem : UIImage = image!

let activityViewController : UIActivityViewController = UIActivityViewController(

activityItems: [firstActivityItem, secondActivityItem], applicationActivities: nil)

activityViewController.excludedActivityTypes = [

UIActivityTypePostToWeibo,

UIActivityTypePrint,

UIActivityTypeAssignToContact,

UIActivityTypeAddToReadingList,

UIActivityTypePostToVimeo,

UIActivityTypePostToTencentWeibo

]

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

我还需要一件事, :

If UIApplication.sharedApplication().canOpenURL(instagramURL!) {

// Success

var img = image!

var savePath: String = NSHomeDirectory().stringByAppendingPathComponent("Documents/Test.igo")

UIImageJPEGRepresentation(img, 1).writeToFile(savePath, atomically: true)

var imgURL = NSURL(string: NSString(format: "file://%@", savePath) as! String)

docController = UIDocumentInteractionController(URL: imgURL!) // 1

docController.UTI = "com.instagram.exclusivegram" // 2

docController.delegate = self

docController.annotation = ["InstagramCaption":"testsss"] // 3

docController.presentOpenInMenuFromRect(self.view.frame, inView: self.view, animated: true) // 4

} else {

// Error

}

这两个代码分别工作正常,如何将 添加到UIActivityViewController?有可能吗?

回答:

我认为将其他社交共享添加到您为Instagram编写的代码中会更加容易。“

.igo”扩展名是Instagram专有的,因此其他应用程序将不支持它。只需将此扩展名从“ .igo”更改为“ .ig”,其他应用程序就会读取它:

var savePath: String = NSHomeDirectory().stringByAppendingPathComponent("Documents/Test.ig")

但是Instagram还具有专有的UTI,可避免其他应用程序出现在同一文档交互视图中。因此,您还需要将其从“独占图”更改为“照片”:

docController.UTI = "com.instagram.photo"

我有一个具有类似功能的应用,这是我的原始代码:

@IBAction func shareOnIntagram(sender: UIButton) {

let finalImage: UIImage = UIImage.imageWithView(photoView)

let instagramURL = NSURL(string: "instagram://app")

if (UIApplication.sharedApplication().canOpenURL(instagramURL!)) {

let imageData = UIImageJPEGRepresentation(finalImage, 1)

let captionString = "caption"

let writePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("instagram.ig")

if imageData?.writeToFile(writePath, atomically: true) == false {

return

} else {

let fileURL = NSURL(fileURLWithPath: writePath)

self.documentController = UIDocumentInteractionController(URL: fileURL)

self.documentController.delegate = self

self.documentController.UTI = "com.instagram.photo"

self.documentController.annotation = NSDictionary(object: captionString, forKey: "InstagramCaption")

self.documentController.presentOpenInMenuFromRect(self.view.frame, inView: self.view, animated: true)

}

} else {

print(" Instagram is not installed ")

}

}

为了使此代码正常工作,请不要忘记添加UIDocumentInteractionControllerDelegateUIViewController类。

以上是 将Instagram添加到UIActivityViewController 的全部内容, 来源链接: utcz.com/qa/417498.html

回到顶部