フィードへのシェア

フィードへのシェア機能で、アプリのユーザーにコンテンツをそれぞれのInstagramのフィードにシェアすることを許可できます。

概要

Androidの暗黙的インテント、iOSのユニバーサルリンクドキュメントインタラクションを使って、アプリから写真や動画をInstagramアプリに渡すことができます。Instagramアプリはコンテンツを受け取ってフィードコンポーザーにロードし、ユーザーが自分のInstagramフィードに公開できるようにします。

Android開発者

Androidで実装する場合、暗黙的インテントとEXTRA_STREAM extraを使ってInstagramアプリを選択するようユーザーにプロンプトを出します。Instagramアプリを選択すると、インテントによりInstagramアプリが起動し、コンテンツが渡されます。そのコンテンツをInstagramアプリがフィードコンポーザーにロードします。

通常のシェアの流れは以下のとおりです。

  1. Instagramアプリに渡したいコンテンツで暗黙的インテントをインスタンス化する。
  2. アクティビティを起動し、暗黙的インテントを処理できることを確認する。
  3. 処理可能であればそのアクティビティを解決する。

シェア可能なコンテンツ

Instagramアプリに以下のコンテンツを渡すことができます。

コンテンツファイルタイプ説明

画像アセット

JPEG、GIF、またはPNG

-

ファイルアセット

MKV、MP4

最小期間: 3秒、最大期間: 10分、最小サイズ: 640x640ピクセル

画像アセットのシェア

String type = "image/*";
String filename = "/myPhoto.jpg";
String mediaPath = Environment.getExternalStorageDirectory() + filename;

createInstagramIntent(type, mediaPath);

private void createInstagramIntent(String type, String mediaPath){

    // Create the new Intent using the 'Send' action.
    Intent share = new Intent(Intent.ACTION_SEND);

    // Set the MIME type
    share.setType(type);

    // Create the URI from the media
    File media = new File(mediaPath);
    Uri uri = Uri.fromFile(media);

    // Add the URI to the Intent.
    share.putExtra(Intent.EXTRA_STREAM, uri);

    // Broadcast the Intent.
    startActivity(Intent.createChooser(share, "Share to"));
}

動画アセットのシェア

String type = "video/*";
String filename = "/myVideo.mp4";
String mediaPath = Environment.getExternalStorageDirectory() + filename;

createInstagramIntent(type, mediaPath);

private void createInstagramIntent(String type, String mediaPath){

    // Create the new Intent using the 'Send' action.
    Intent share = new Intent(Intent.ACTION_SEND);

    // Set the MIME type
    share.setType(type);

    // Create the URI from the media
    File media = new File(mediaPath);
    Uri uri = Uri.fromFile(media);

    // Add the URI to the Intent.
    share.putExtra(Intent.EXTRA_STREAM, uri);

    // Broadcast the Intent.
    startActivity(Intent.createChooser(share, "Share to"));
}

iOS開発者

iOSに実装する場合は、ユニバーサルリンクを使ってInstagramアプリを起動してコンテンツを渡すか、特定のアクションを実行させることができます。

ユニバーサルリンク

次の表にリストされているユニバーサルリンクを使用して、Instagramアプリでアクションを実行します。

ユニバーサルリンクアクション

https://www.instagram.com

Instagramアプリを起動。

https://www.instagram.com/create/story

Instagramアプリをカメラビューで起動、カメラなしのデバイスの場合は写真ライブラリで起動。

https://www.instagram.com/p/{media_id}

Instagramアプリを起動し、指定されたID値(int)と一致する投稿を読み込む。

https://www.instagram.com/{username}

Instagramアプリを起動し、指定されたusername値(string)と一致するInstagramユーザーを読み込む。

https://www.instagram.com/explore/locations/{location_id}

Instagramアプリを起動し、指定されたID値(int)と一致する位置情報フィードを読み込む。

https://www.instagram.com/explore/tags/{tag_name}

Instagramアプリを起動し、指定されたname値(string)と一致するハッシュタグのページを読み込む。

Objective-Cコードのサンプル

次のObjective-Cのサンプルは、Instagramアプリをカメラビューで起動します。

NSURL *instagramURL = [NSURL URLWithString:@"https://www.instagram.com/create/story"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
    [[UIApplication sharedApplication] openURL:instagramURL];
}

ドキュメントインタラクション

アプリで作成した写真をユーザーがInstagramを使ってシェアできるようにする場合、ドキュメントインタラクションAPIを使ってInstagramのシェアのフローに沿って写真を開くことができます。

まず、ファイルをPNGまたはJPEG (推奨)形式で保存し、.igというファイル名拡張子を使用する必要があります。iOSドキュメントインタラクションAPIを使って、Instagramでその写真が開くようにトリガーできます。ドキュメントインタラクションUTIの識別情報はcom.instagram.photoであり、public/jpeg UTIとpublic/png UTIに対応しています。詳細については、以下のAppleのドキュメントをご覧ください: Previewing and Opening Files およびUIDocumentInteractionController Class Reference

あるいは、アプリケーションリストに(Instagramと他のpublic/jpeg対応アプリではなく) Instagramだけを表示したい場合は、com.instagram.exclusivegramタイプの拡張子クラスigoを指定できます。

トリガーされると、Instagramがフィルター画面ですぐに表示されます。あらかじめ画像が読み込まれ、サイズはInstagramに合わせて調整されています。最良の結果を出すためには、Instagramでは640x640ピクセルのJPEG画像を使うことをおすすめします。画像が大きい場合は動的にサイズが変更されます。