【问题标题】:UIDocumentInteractionController doesn't work with InstagramUIDocumentInteractionController 不适用于 Instagram
【发布时间】:2017-10-10 17:41:28
【问题描述】:

我需要将图像文件分享到 Instagram,根据 Instagram 文档:https://www.instagram.com/developer/mobile-sharing/iphone-hooks/,我可以使用 Document Interaction 来实现此功能,但它不起作用。这是我的代码:

        let img = UIImage(named: "test.jpg")
        let kInstagramURL = URL(string: "instagram://")
        let kUTI = "com.instagram.exclusivegram" // testing "com.instagram.photo" too
        let instagramCaption = "TESTING"
        let kfileNameExtension = "instagram.igo" // testing "jpg"/"ig" too

        if UIApplication.shared.canOpenURL(kInstagramURL!) {
            let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
            if urls.count == 0 {
                print("Not found")
                return
            }
            let url = urls[0].appendingPathComponent(kfileNameExtension)
            print("URL", url)
            // OUPUT: file:///var/mobile/Containers/Data/Application/F14B18CB-5CD4-47AD-8257-E2288C23181E/Documents/instagram.igo
            do {
                try UIImageJPEGRepresentation(img!, 1.0)?.write(to: url, options: .atomic)
                print("WRITEN", url) // Written successfully, no error
            } catch {
                //TODO: issue error on UI
                print("WRITE ERROR: \(error)")
            }

            let documentInteractionController = UIDocumentInteractionController(url: url)
            var rect = CGRect.zero
            let view = self.view

            documentInteractionController.delegate = DocInteractionResponder() // tried nil, same result
            documentInteractionController.uti = kUTI


            // adding caption for the image
            documentInteractionController.annotation = ["InstagramCaption": instagramCaption]
            documentInteractionController.presentOpenInMenu(from: rect, in: view!, animated: true)
        }
        else {
            //TODO: warn from dialog
        }

我在这段代码 sn-p 中尝试了很多东西(参见 cmets),但结果是一样的:在我点击菜单中的 instagram 后,什么也没有发生。

我认为这可能是由我的应用程序中的其他代码引起的,所以我创建了一个空白应用程序(带有一个简单的 UIViewController)并将此代码放入。它不起作用。

我已经阅读了与UIDocumentInteractionController 相关的几乎所有关于 SO 的答案。

这种情况发生在你身上吗?这是 iOS 11 的问题(刚刚升级了我的手机),还是 Instagram 停止支持文档交互?

【问题讨论】:

  • 与您的问题无关,但值得一提。从文档 要检查集合是否为空,请使用其 isEmpty 属性而不是将计数与零进行比较。除非集合保证随机访问性能,否则计算计数可能是 O(n) 操作。复杂性:如果集合符合 RandomAccessCollection,则为 O(1);否则,O(n),其中 n 是集合的长度。
  • 这是一个示例,说明如何将任何文件类型共享到任何应用程序(包括 iOS 11.0.2 的 Instagram)stackoverflow.com/a/46457518/2303865
  • @LeoDabus 感谢您的提示。但是您答案中的代码对我不起作用。奇怪...
  • 代码不起作用是模糊的。我从未测试过使用它来分享到单个应用程序,但它确实在我的应用程序中为我显示了 Instagram
  • @CoderACJHP 不

标签: ios swift instagram uidocumentinteraction


【解决方案1】:

我今天刚遇到同样的问题,我能够通过在视图控制器中将 UIDocumentInteractionController 声明为类级属性来解决它,以防止它过早地被释放。

【讨论】:

  • 这也为我修好了,谢谢拉我的头发!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多