将 Instagram 添加到 UIActivityViewController [英] Add Instagram to UIActivityViewController

查看:49
本文介绍了将 Instagram 添加到 UIActivityViewController的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用标准 UIActivityViewController 共享图像,可以在 FacebookTwitterSave Image 上共享 使用此代码:

I'm trying to share an image using standard UIActivityViewController, it's fine to share on Facebook, Twitter and Save Image using this code:

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)

我还需要一件事,Instagram:

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
        }    

这两个代码单独工作都很好,我如何将 Instagram 添加到 UIActivityViewController ?有可能吗?

Both these codes work fine separately, how can I add Instagram to the UIActivityViewController? Is it possible at all?

推荐答案

我认为将其他社交分享添加到您为 Instagram 编写的代码中会更容易..igo"扩展名是 Instagram 独有的,因此其他应用程序将不支持它.只需将此扩展名从.igo"更改为.ig",其他应用程序就会读取它:

I think it would be very easier to add other social shares to the code you wrote for Instagram. The ".igo" extension is exclusive for Instagram so other apps will not support it. Just change this extension from ".igo" to ".ig" and other apps will read it:

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

但 Instagram 也有一个专属 UTI 来避免其他应用出现在同一个文档交互视图中.因此,您还需要将其从exclusivegram"更改为photo":

But Instagram also have an exclusive UTI to avoiding other apps to appear in the same Document Interaction View. So you will also need to change it from "exclusivegram" to "photo":

docController.UTI = "com.instagram.photo"

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

I have an app with a similar functionality and this is my original code:

@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 ")
        }
    }

要使此代码工作,请不要忘记在 UIViewController 类中添加 UIDocumentInteractionControllerDelegate.

To make this code work, don't forget to add UIDocumentInteractionControllerDelegate in the UIViewController class.

这篇关于将 Instagram 添加到 UIActivityViewController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆