Подтвердить что ты не робот

Расширение iOS Share vs Action App Extension

Я хочу реализовать расширение приложения, но я не могу решить, должен ли я реализовать его как расширение расширения или расширение действия.

Документация не говорит о различиях, а именно:

  • Поделиться (iOS и OS X). Опубликовать на веб-сайте общего доступа или обмениваться контентом с другими.
  • Действие (варианты iOS и OS X, UI и не-UI). Манипулирование или просмотр содержимого, происходящего из приложения-хозяина.

Существуют и технические отличия (например, расширение Action позволяет мне делать то, что не поддерживает расширение Share), или это просто соглашение, которое Apple хочет, чтобы вы следовали, чтобы сделать вещи менее запутанными для пользователей?

Похоже, что по крайней мере одно отличие состоит в том, что если вы хотите не-пользовательский интерфейс, вы должны выбрать Action вместо расширения Share.

Каковы другие отличия?

Примеры вещей, которые я ищу:

  • Разрешают ли они мне настроить пользовательский интерфейс?
  • Как обе дают мне некоторый пользовательский интерфейс по умолчанию?
  • У них обоих одинаковые разрешения, или мне разрешено делать больше вещей в одном и в другом?
  • Получают ли они оба те же данные из приложения Host?
  • Могут ли они оба отправить те же данные в приложение Host?
4b9b3361

Ответ 1

Вот мои выводы:

Резюме:

  • Значок. Активные расширения имеют цветные значки.
  • Местоположение значков. В некоторых приложениях, таких как Safari, есть большое количество незадействованных значков активности, с которыми будет конкурировать ваш значок.
  • Пользовательский интерфейс. Расширения Share должны иметь согласованный интерфейс.
  • Намерение. Расширения Share предназначены для совместного использования контента, но даже Apple нарушает это требование.

Иконка

Share extensions получают цветную иконку, которая совпадает с иконкой вашего приложения. Фактически, Apple заявляет: "Если вы указываете отдельный значок в своем целевом расширении Share, Xcode игнорирует его". [B]

В расширениях действий используется "монохромная версия значка приложения", [E] или "версия шаблона изображения" [B] значка вашего приложения.

введите описание изображения здесь


Расположение значков

Расширения Share появляются в средней строке, в нижней строке появляются расширения действий.

В зависимости от целевого приложения ваш значок может конкурировать с более или менее значками в качестве расширения share или action. Например, если пользователи получат доступ к вашему расширению через Safari в основном, ваше приложение будет конкурировать с 4 другими значками по умолчанию в качестве расширения общего доступа * или 8 других значков в качестве расширения действия. С другой стороны, если вы настроите таргетинг на приложение "Карты", вы будете конкурировать с другими значками в качестве расширения общего доступа (4), а не с расширением действия (2).

Поэтому, чтобы максимизировать ваше воздействие на пользователя, вам нужно будет выбрать расширение общего доступа при настройке Safari, но расширение действия при таргетинге на Карты.

Примечание. Большинство действий предоставляется самим хост-приложением, используя UIActivity и UIActivityViewController API. В NSHipster есть отличная рецензия.

* Очевидно, что количество расширений общего доступа и активности изменяется в зависимости от установленных приложений и которые пользователь выбрал для показа/скрытия.

Примеры из iOS 9.1 Simulator:

  • Контакты:
    • Поделиться (1): Mail
    • Мероприятия (0):
  • Карты:
    • Поделиться (4): Mail, Reminders, Twitter, Facebook
    • Действия (2): Добавить в избранное, Печать
  • Новости:
    • Поделиться (4): Mail, Reminders, Twitter, Facebook
    • Мероприятия (5): Добавить в список чтения, Копировать, Открыть в Safari, Сообщить о проблеме, Отключить канал
  • Фотографии:
    • Поделиться (4): Почта, Twitter, Facebook, Flickr
    • Действия (6): копирование, слайд-шоу, скрытие, назначение контактов, использование в качестве обоев, печать
  • Safari:
    • Поделиться (4): Mail, Reminders, Twitter, Facebook
    • Мероприятия (10): Добавить в избранное, Добавить закладку, Добавить в список чтения, Добавить на главный экран, Добавить в общие ссылки, Добавить в список новостей, Скопировать, Распечатать, Найти на странице, Запросить рабочий стол.
  • (выделенный текст):
    • Поделиться (3): Почта, Twitter, Facebook
    • Действия (1): Копирование

(курсив означает, что значки могут быть скрыты.)


Пользовательский интерфейс

По умолчанию шаблон Расширить расширение поставляется с подклассом SLComposeServiceViewController, чтобы поддерживать согласованность. И Apple хочет, чтобы вы "использовали предоставленный системой пользовательский интерфейс в расширении Share [как можно больше]". [E]

Расширения Action, с другой стороны, позволяют вам выбрать Тип действия (присутствует пользовательский интерфейс или нет пользовательского интерфейса), при этом первый будет иметь пустой UIViewController.

введите описание изображения здесь введите описание изображения здесь
Расширение по умолчанию; Расширение ActionScript для пользовательских интерфейсов по умолчанию.


Намерение

Несмотря на то, что Apple заявляет, что расширение Share должно размещаться на веб-сайте совместного доступа или совместно использовать контент другим пользователям, [A] даже они нарушают это требование с помощью напоминаний.

Расширения Action предназначены для "манипулирования или просмотра содержимого, происходящего в главном приложении". [A]


Вещи, которые являются теми же

  • Оба позволяют вашему приложению предоставлять несколько версий расширения. (Например, ваше приложение может предоставить два расширения и два расширения действия.)
  • В моем ограниченном тестировании они кажутся отключенными по умолчанию, при этом пользователь должен явно нажать на кнопку больше, чтобы включить расширение share/action.

Ссылки