Доля
Расширения доли дают пользователям удобный способ совместно использовать содержание с другими объектами, такими как социальные веб-сайты совместного использования или службы загрузки. Например, в приложении, включающем кнопку 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
метод.
- (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 символов.
- (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 в ответ на некоторое другое пользовательское действие.
При необходимости можно заменить список элементов конфигурации с пользовательским контроллером представления, выводящим на экран пользовательские предложения автозавершения, в то время как пользователь вводит текст. Вы могли бы хотеть сделать это, если Ваше совместное использование службы определяет определенные текстовые элементы, которые, вероятно, введут пользователи.