Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Руководство по программированию расширения приложения

PDF
На этой странице

Доля

Расширения доли дают пользователям удобный способ совместно использовать содержание с другими объектами, такими как социальные веб-сайты совместного использования или службы загрузки. Например, в приложении, включающем кнопку Share, пользователи могут выбрать расширение Share, представляющее социальный веб-сайт совместного использования, и затем используйте его для добавления комментария или другого содержания.

Поймите расширения доли

На обеих платформах должно расширение Доли:

  • Упростите для пользователей отправлять содержание

  • Позвольте пользовательскому предварительному просмотру, редактированию, аннотируйте и сконфигурируйте содержание, в подходящих случаях

  • Проверьте содержание пользователя прежде, чем отправить его

Пользователи заставляют доступ Совместно использовать расширения в предоставленном системой UI. В iOS пользователи касаются кнопки Share и выбирают расширение Share из области совместного использования появляющегося контроллера представления действия. В OS X пользователи могут показать список совместного использования служб несколькими различными способами. Например:

  • Нажмите кнопку Share в приложении.

  • Просмотрите область Social в Центре Уведомления.

  • Выберите некоторое содержание, Щелчок управления, чтобы показать контекстное меню и выбрать Share.

Когда пользователи выбирают Ваше расширение Доли, Вы выводите на экран представление, в котором они составляют свое содержание и отправляют его. Можно базироваться представление о предоставленном системой составляют контроллер представления, или можно создать абсолютно пользовательское, составляют представление. Предоставленные системой составляют сборки контроллера представления в некоторой поддержке общих задач, таких как предварительный просмотр и проверка стандартных товаров, синхронизация содержания и просматривают анимацию и конфигурирование сообщения.

Используйте шаблон доли XCode

Шаблон Xcode Share обеспечивает заголовок по умолчанию и файлы реализации для основного класса контроллера представления (вызванный SharingViewController), Info.plist файл и интерфейсный файл (т.е. раскадровка или xib файл).

Когда Вы создаете цель, использующую стандарт, составляют представление UI, основной класс контроллера представления наследовался от SLComposeServiceViewController и файлы по умолчанию включают тупики для методов такой как didSelectPost и isContentValid.

По умолчанию шаблон Share предоставляет следующий Info.plist ключи и значения (показанный здесь для цели iOS):

  • <key>NSExtension</key>
  • <dict>
  • <key>NSExtensionMainStoryboard</key>
  • <string>MainInterface</string>
  • <key>NSExtensionPointIdentifier</key>
  • <string>com.apple.share-services</string>
  • </dict>

В зависимости от функциональности Вашего расширения Доли Вы, возможно, должны были бы добавить ключи и значения к списку свойств по умолчанию. Например, для обеспечения файла JavaScript, получающего доступ к веб-странице добавьте NSExtensionAttributes ключ и словарь, указывающий файл. (Чтобы узнать больше, как использовать JavaScript для доступа к веб-странице, посмотрите Доступ к Веб-странице.) Вы также добавляете ключи и значения, если Вы хотите указать типы данных Ваши дополнительные работы с (для узнавания больше, посмотрите Объявление Поддерживаемых Типов данных для Расширения Доли или Действия).

Расширение Доли использует свой основной контроллер представления extensionContext свойство для получения NSExtensionContext объект, содержащий первоначальный текст пользователя и любые присоединения для сообщения, такие как ссылки, изображения или видео. Дополнительный объект контекста также содержит информацию о состоянии работы регистрации. (Чтобы узнать больше, как расширение может взаимодействовать со своим контекстом, посмотрите, Реагируют на Запрос Приложения Узла.)

Значение по умолчанию SLComposeServiceViewController объект включает текстовое представление, выводящее на экран доступное для редактирования текстовое содержание пользователя. Когда пользователь выбирает Post, расширение Share проверяет текстовое содержание представления (в дополнение к присоединениям, если таковые имеются) и вызывает completeRequestReturningItems:expirationHandler:completion: метод NSExtensionContext, использование кода как следующее:

  • NSExtensionItem *outputItem = [[NSExtensionItem alloc] init];
  • // Set the appropriate value in outputItem
  • NSArray *outputItems = @[outputItem];
  • [self.extensionContext completeRequestReturningItems:outputItems expirationHandler:nil completion:nil];

Разработайте UI

Совместное использование UI на обеих платформах ограничивается в размере. В частности Ваше расширение Доли не может увеличиться по ширине, и несмотря на то, что оно может увеличиться в высоте, Вы не хотите вынуждать пользователей прокрутить слишком много.

Если предоставленные систему сочиняют, представление удовлетворяет Ваши потребности, Вы не должны предоставлять пользовательский UI.

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

Когда у Вас есть дополнительное содержание для отображения, можно полагаться на Автоматические Ограничения макета для регулирования высоты представления как надлежащей. Если Вы не используете Автоматическое Расположение, можно использовать UIViewController свойство preferredContentSize указать новую высоту представления.

iOS. Если Вы хотите анимировать дисплей своего содержания для совпадения с изменять размеры анимацией, реализацией viewWillTransitionToSize:withTransitionCoordinator:, использование animateAlongsideTransition:completion: добавить Ваши анимации к coordinator параметр.

Регистрация содержания

Основная цель расширения Доли состоит в том, чтобы помочь пользователям отправить содержание. Когда пользователь выбирает кнопку Post или Send в Вашем расширении Доли, предоставленная системой анимация обеспечивает обратную связь, что обрабатывается действие. Система тогда вызывает didSelectPost метод SLComposeServiceViewController класс. Реализуйте этот метод к:

  • Установите фоновый режим сеанс URL (использующий NSURLSession класс), который включает содержание для регистрации

  • Инициируйте загрузку

  • Вызовите completeRequestReturningItems:completionHandler: метод, сигнализирующий приложение узла, что его исходный запрос завершен

  • Подготовьте быть завершенными системой

Перечисление 6-1 показывает один способ реализовать didSelectPost метод.

Перечисление 6-1An реализации в качестве примера didSelectPost
  • - (void)didSelectPost {
  • // Perform the post operation.
  • // When the operation is complete (probably asynchronously), the Share extension should notify the success or failure, as well as the items that were actually shared.
  • NSExtensionItem *inputItem = self.extensionContext.inputItems.firstObject;
  • NSExtensionItem *outputItem = [inputItem copy];
  • outputItem.attributedContentText = [[NSAttributedString alloc] initWithString:self.contentText attributes:nil];
  • // Complete this implementation by setting the appropriate value on the output item.
  • NSArray *outputItems = @[outputItem];
  • [self.extensionContext completeRequestReturningItems:outputItems expirationHandler:nil completion:nil];
  • // Or call [super didSelectPost] to use the superclass's default completion behavior.
  • }

Если сообщение отменяется по некоторой другой причине, системные вызовы расширение Доли, если пользователь отменяет сообщение, или didSelectCancel метод, когда завершается анимация обратной связи. Реализуйте этот метод, если он целесообразен настраивать работу завершения дополнительного контекста.

Проверка ввода

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

Если Вы используете стандарт, составляют контроллер представления (экземпляр SLComposeServiceViewController класс), проверьте законность текущего содержания пользователя путем реализации isContentValid метод. Системные вызовы isContentValid когда пользователь изменяется, текст в стандарте составляют представление, таким образом, можно вывести на экран количество текущего символа и включить кнопку Post в надлежащих случаях. Перечисление 6-2 показывает реализацию в качестве примера isContentValid метод для службы совместного использования, требующей, чтобы сообщения содержали меньше чем 100 символов.

Перечисление 6-2An реализации в качестве примера isContentValid
  • - (BOOL)isContentValid {
  • NSInteger messageLength = [[self.contentText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length];
  • NSInteger charactersRemaining = 100 - messageLength;
  • self.charactersRemaining = @(charactersRemaining);
  • if (charactersRemaining >= 0) {
  • return YES;
  • }
  • return NO;
  • }

Если Ваше расширение Доли должно проверить содержание пользовательскими способами, сделайте проверку в реализации validateContent метод. В зависимости от результата можно возвратить правильное значение в Вашем isContentValid метод.

Например, если необходимо уменьшить актив прежде, чем позволить пользователям загрузить его, Вы не хотите включать кнопку Post, пока уменьшение не завершено. Чтобы узнать, сделано ли уменьшение, вызвать validateContent в Вашем isContentValid метод и возврат надлежащий результат.

Предварительный просмотр содержания (только iOS)

Чтобы помочь пользователям предварительно просмотреть свое выбранное содержание, предоставленные системой составляют контроллер представления (SLComposeServiceViewController) обеспечивает представление по умолчанию, которое может автоматически вывести на экран предварительные просмотры стандартных типов данных, такие как фотографии, видео и веб-страницы. Если Ваше расширение Доли iOS может обработать нестандартные типы данных, можно реализовать loadPreviewView метод для отображения их. Как правило, расширение Доли iOS регистрирует содержание attachments свойство дополнительного элемента и обеспечивает пользовательское представление предварительного просмотра, в подходящих случаях.

iOS выводит на экран представления предварительного просмотра рядом с областью редактирования текста в совместном использовании UI. Как можно больше, необходимо создать маленькие представления предварительного просмотра, чтобы избежать делать текстовую область неприятно небольшой. И несмотря на то, что совместное использование, которое UI может развернуть в высоте, большая высота, может заставить Ваше содержание отображать позади клавиатуры, вынудив пользователей прокрутить.

Конфигурирование сообщения (только iOS)

SLComposeSheetConfigurationItem класс упрощает для расширений Доли iOS обеспечивать список элементов, помогающих пользователям сконфигурировать сообщение. Например, Вы могли бы позволить пользователям выбрать учетную запись, чтобы отправить от, указать настройки конфиденциальности или автоматически заполнить запись пользовательского текста, такую как упоминание Twitter. По умолчанию, стандарт составляют контроллер представления (SLComposeServiceViewController) выводит на экран Ваши элементы конфигурации в табличном представлении у основания совместного использования UI.

Расширение Доли использует configurationItems свойство SLComposeServiceViewController класс для возврата массива SLComposeSheetConfigurationItem экземпляры, каждый из которых идентифицирует тип конфигурации пользователь, могут сделать. Когда пользователь касается элемента конфигурации, элемент может вывести на экран пользовательский контроллер представления, позволяющий пользователю выполнить конфигурацию.

Для отображения пользовательской конфигурации просматривают контроллер, Вы обычно определяете блок типа SLComposeSheetConfigurationItemTapHandler (в котором Вы создаете контроллер представления), и затем вызовите pushConfigurationViewController: вывести на экран его. Стандарт составляет использование контроллера представления a UINavigationController экземпляр для отображения контроллера представления конфигурации, таким образом, пользователи могут коснуться Кнопки «Назад» для возврата совместному использованию UI. Можно также вызвать popConfigurationViewController возвратить совместному использованию UI в ответ на некоторое другое пользовательское действие.

При необходимости можно заменить список элементов конфигурации с пользовательским контроллером представления, выводящим на экран пользовательские предложения автозавершения, в то время как пользователь вводит текст. Вы могли бы хотеть сделать это, если Ваше совместное использование службы определяет определенные текстовые элементы, которые, вероятно, введут пользователи.