LoginSignup
8
5

More than 5 years have passed since last update.

iOSで動画をInstagram Storyにシェアする

Last updated at Posted at 2018-09-12

iOSで、URL SCHEMEを使ってInstagramに動画をシェアする方法です。

やること

動画を録画できる機能を持つアプリを作っていると、Instagram Storyにシームレスにシェアできるアプリをつくりたいですよね。 

GIFイメージ-CF38FB296D55-1.gif

上はPemojiのスクショです。この実装のためのメモを残します。

前提

InstagramにURL Schemeを使って動画をシェアするためには一旦動画をカメラロールに保存しなければならない。

流れ

Photosフレームワークで動画を保存し、localIdentifierを取得

localIdentifierを使ってInstagramのurl schemeを作る

遷移する

コード

import Photos

let url = URL(fileURLWithPath: path)
var localId: String?

PHPhotoLibrary.shared().performChanges({
    let request = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url)
    localId = request?.placeholderForCreatedAsset?.localIdentifier
}, completionHandler: { success, error in

    if let localId = localId {
        shareToInstagram(localIdentifier: localId)
    }
})

private func shareToInstagram(localIdentifier: String) {
    let urlString = "instagram://library?LocalIdentifier=" + localIdentifier
    guard let url = URL(string: encoded) else {
        return
    }
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

ポイント

  • localIdentifierを使ってカメラロールに保存した動画を一意に判別できるようにすること
  • PhotoフレームワークでcreationDateで最新とか取ったりすると、古い動画をシェアしたい時にうまくいかない
  • stackoverflowにあるように、 instagram://library?AssetPath= は使わない方がいい

参考

8
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5