iOS Share и расширение приложения Action

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

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

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

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

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

Какие еще отличия?

Примеры того, что я ищу:

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

person Senseful    schedule 11.11.2015    source источник


Ответы (1)


Вот мои выводы на данный момент:

Резюме:

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

Значок

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

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

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


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

Расширения общего доступа отображаются в средней строке, а расширения действий - в нижней строке.

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

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

Примечание. Большинство действий обеспечивается самим хост-приложением с использованием UIActivity и API-интерфейсы UIActivityViewController. О них есть отличная статья на NSHipster.

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

Примеры из симулятора iOS 9.1:

  • Contacts:
    • Share (1): Mail
    • Мероприятия (0):
  • Maps:
    • Share (4): Mail, Reminders, Twitter, Facebook
    • Действия (2): Добавить в избранное, Распечатать
  • News:
    • Share (4): Mail, Reminders, Twitter, Facebook
    • Действия (5): добавить в список для чтения, скопировать, открыть в Safari, сообщить о проблеме, отключить канал
  • Photos:
    • Share (4): Mail, Twitter, Facebook, Flickr
    • Действия (6): копирование, слайд-шоу, скрытие, назначение контакту, использование в качестве обоев, печать
  • Safari:
    • Share (4): Mail, Reminders, Twitter, Facebook
    • Действия (10): добавить в избранное, добавить закладку, добавить в список для чтения, добавить на главный экран, добавить в общие ссылки, добавить в новости, скопировать, распечатать, найти на странице, запросить сайт рабочего стола
  • (Highlighted Text):
    • Share (3): Mail, Twitter, Facebook
    • Действия (1): Копировать

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


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

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

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

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


Намерение

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

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


То же самое

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

использованная литература

person Senseful    schedule 12.11.2015
comment
Очень информативно! Вопрос: Можно ли использовать расширения для структурированных данных, например, списка книг [{name: x, author: y}...]? Это, конечно, потребует, чтобы расширение было доступно только на экране книг, а хост мог экспортировать данные в определенном формате. - person User; 03.06.2016
comment
Можете ли вы иметь по одному из каждого (действие и поделиться) для приложения? Мне кажется, что я где-то читал этот ответ, но я вернулся к документам и не могу его найти. - person SAHM; 05.06.2017
comment
А как насчет доступности? Обратная совместимость с iOS? Также, почему некоторые приложения показывают только одну из строк, а не обе? - person Rivera; 12.12.2017
comment
Для намерения в Руководстве Apple по человеческому интерфейсу содержится страница Совместное использование и действия, которые также помогают различать их (это может быть новым). Расширения общего доступа предоставляют удобный способ обмена информацией из текущего контекста с приложениями, учетными записями социальных сетей и другими службами. Расширения действий позволяют людям запускать задачи, связанные с содержанием, такие как добавление закладки, копирование ссылки или сохранение изображения. - person wardw; 20.03.2018