8

我正在通过我的应用程序中的 instagram 集成共享图像。我已经阅读了他们的文档

看来我需要使用 iOS UIDocumentInteractionController 来允许这样做(我知道它允许访问我的应用程序沙箱中的文件)。

深入挖掘,我发现了这个,它让事情变得非常简单。

我遇到的问题是它显示了操作表(只有一个按钮 - Instagram ......)我如何使用 instagram hooks 和 UIDocumentInteractionController 而不显示操作表。我遇到了这个几乎相同的问题,但是它已经过时了,没有答案。

4

3 回答 3

7

我使用了一个非常简单的分享开放 Instagram 流程。

  • 我将图像本地保存到照片
  • 然后我使用以下 URL 打开 Instagram:instagram://library?AssetPath=assets-library

这会将 Instagram直接打开到照片库中。因为照片是在片刻前保存的,所以新照片作为图库中的第一张照片可见。

于 2016-01-13T11:41:09.290 回答
5

我自己搜索过这个,我认为在不显示操作表的情况下使用 UIDocumentInteractionController 是不可能的,在不使用 UIDocumentInteractionController 的情况下似乎也不可能与 instagram 共享图像。

这导致了不可避免的行动表。

我理解他们为什么这样设计它(你不会在不知不觉中作为用户离开应用程序),但在许多情况下它会导致烦人的 UI 设计。

于 2013-05-29T15:18:52.383 回答
4

Instagram 文档中似乎没有提到这种方法。但是,我刚刚确认@sabiland 的答案在 Swift 4.2 iOS 12 中仍然有效。这是一些示例代码:

func postImageToInstagram(image: UIImage) {
    UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.image(image:didFinishSavingWithError:contextInfo:)), nil)
}

@objc func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) {
    if let err = error {
        print(err)
    }

    let urlString = "instagram://library?AssetPath=assets-library"

    let url = URL(string: urlString)!
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        let alertController = UIAlertController(title: "Error", message: "Instagram is not installed", preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        self.present(alertController, animated: true, completion: nil)
    }
}

原始代码源

您还必须确保您info.plist有 instagram 查询方案。

为了让您的应用程序使用 Instagram 的自定义 URL 方案,您必须通过将 instagram:// 添加到应用程序 Info.plist 中的 LSApplicationQueriesSchemes 键来将该方案列入白名单。

资源

信息列表

于 2019-03-20T00:04:38.117 回答