ios iphone挂钩直接打开instagram而不显示UIDocumentInteractionController

问题描述 投票:7回答:3

我正在我的应用程序中通过instagram集成共享图像。我读过他们的documentation

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

深入挖掘,我遇到了这个library,这让事情变得非常简单。

我遇到的问题是它提供了动作表(只有一个按钮--Losk ...)如何使用Instagram钩子,使用UIDocumentInteractionController而不显示动作表。我遇到了这个几乎相同的question,但它过时没有答案。

ios instagram uidocumentinteraction uidocument
3个回答
5
投票

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

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

我明白为什么他们这样设计(你不会在不知不觉中留下一个应用程序)但在很多情况下它会导致恼人的UI设计。


6
投票

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

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

这将Instagram直接打开到照片库中。由于照片很久以前就已保存,因此新照片可视为库中的第一张照片。


2
投票

看起来这个方法在Instagram documentation中没有提到。但是,我刚刚确认@sabiland's的答案仍然适用于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)
    }
}

Original code source

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

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

Source

info.plist

© www.soinside.com 2019 - 2024. All rights reserved.