Публикация в ленте

С помощью публикации в ленте можно дать пользователям приложения возможность публиковать материалы в своих лентах Instagram.

Обзор

Неявные объекты Intent в Android и универсальные ссылки или API Document Interaction в iOS позволяют передавать фото и видео из вашего приложения в приложение Instagram. Приложение Instagram будет получать этот контент и загружать его в поле для создания публикации в ленте, откуда пользователь сможет опубликовать его в своей ленте Instagram.

Разработчикам для Android

В реализациях для Android используются неявные намерения (объекты Intent) с дополнительным параметром EXTRA_STREAM, позволяющие предложить пользователю выбрать приложение Instagram. В случае такого выбора объект Intent запустит приложение Instagram и передаст ему соответствующий контент, который оно затем загрузит в поле для создания публикации в ленте.

Обычно процесс публикации выглядит следующим образом:

  1. Создается экземпляр неявного объекта Intent с контентом, который нужно передать в приложение Instagram.
  2. Запускается действие и проверяется возможность разрешения неявного объекта Intent.
  3. Действие разрешается, если это возможно.

Контент, который можно публиковать

В приложение Instagram можно передавать следующий контент:

КонтентТипы файловОписание

Объект изображения

JPEG, GIF или PNG

-

Объект файла

MKV, MP4

Минимальная длительность: 3 секунды, максимальная длительность: 10 минут, минимальные размеры: 640 x 640 пикселей.

Публикация объекта изображения

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 и загрузка страницы пользователя Instagram с соответствующим значением имени пользователя (string).

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

Запуск приложения Instagram и загрузка ленты местоположения для указанного ID (int).

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

Запуск приложения Instagram и загрузка страницы хэштега с указанным значением имени (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];
}

API Document Interaction

Если ваше приложение создает фотографии и вы хотите, чтобы пользователи могли делиться ими через Instagram, используйте API Document Interaction, чтобы открывать эти фотографии в процессе публикации Instagram.

Для этого сначала необходимо сохранить файл в формате PNG или JPEG (на ваше усмотрение) и использовать имя файла с расширением .ig. С помощью API Document Interaction в iOS можно открывать фотографии через Instagram. Для нашего UTI Document Interaction используется идентификатор com.instagram.photo. Он соответствует UTI public/jpeg и public/png. Подробнее см. в документации Apple, статьи Previewing and Opening Files (Предварительный просмотр и открытие файлов) и UIDocumentInteractionController Class Reference (Справка по классу UIDocumentInteractionController).

Если вы хотите, чтобы в списке приложений отображался только Instagram (а не Instagram И другие приложения, поддерживающие формат public/jpeg), можно указать класс расширения igo, относящийся к типу com.instagram.exclusivegram.

При запуске Instagram сразу же открывает пользователю экран фильтров. Изображение загружается и адаптируется по размеру для Instagram. Лучше всего в Instagram отображаются квадратные файлы в формате JPEG размером 640 на 640 пикселей. Если изображение больше, его размер будет динамически изменен.