在iOS上分享视频到Instagram

时间:2017-06-15 11:31:21

标签: ios instagram uiactivityviewcontroller uidocumentinteraction

是否可以在Instagram上分享视频而不将其保存到用户的相机胶卷?

这是我到目前为止所尝试的:

let instagramURL = URL(string: "instagram://app")!
  if (UIApplication.shared.canOpenURL(instagramURL)) {

      self.documentController = UIDocumentInteractionController(url: videoURL)
      self.documentController.delegate = self
      self.documentController.uti = "com.instagram.exlusivegram"
      self.documentController.presentOpenInMenu(from: self.view.frame, in: self.view, animated: true)

  } else {
      print(" Instagram isn't installed ")
  }  

videoURL是我保存在Documents文件夹中的视频的网址 如果我在最后用Instagram.igo保存网址,那么当我选择Instagram分享时,就像这样打开:
enter image description here

如果我在最后用.mov保存视频,那么Instagram分享似乎会打开一张照片(如视频缩略图),而不是视频。

1 个答案:

答案 0 :(得分:5)

你究竟做错了什么很难确定,但我会尝试解决你可能出错的地方。

首先确保videoURL是在本地定义的。当我写一篇应用程序发布到Instagram时,我首先使用文件管理器定义了路径,如:

let tempDirectory = FileManager().temporaryDirectory
var postingPath = tempDirectory.appendingPathComponent("postingVideo")
postingPath = postingPath.appendingPathExtension("igo")

然后我将电影写入此目录,几乎与您拥有相同的代码。 请考虑您需要创建igo文件夹,然后将影片保存到此文件夹中。如果您尝试引用电影所在的文件夹,您的应用程序将无法读取电影文件,也不会发布任何内容。如果它是照片库中的电影文件,请使用AVExportSession并将其导出到postsPath。

self.instagramController = UIDocumentInteractionController.init(url: postingPath)
self.instagramController.uti = "com.instagram.exclusivegram"
self.instagramController.delegate = self
self.instagramController.presentOpenInMenu(from: 
self.navigationItem.rightBarButtonItem!, animated: true)

但是,你需要让你的类发布到Instagram遵守UIDocumentInteractionControllerDelegate,否则你需要强制转换为self。你还需要包括社交。我不认为你在这篇文章的第二部分做错了什么,因为你会得到xcode错误和警告。

我希望第一部分可以进一步帮助你,因为我不认为第二部分给你带来了问题。