Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Расширения содержимого уведомлений, представленные в iOS 10, позволяют создавать пользовательские пользовательские интерфейсы для уведомлений. Начиная с iOS 12, пользовательские интерфейсы уведомлений могут содержать интерактивные элементы, такие как кнопки и ползунки.
Файл расширения содержимого уведомления Info.plist
В примере приложения файл Info.plist в проекте RedGreenNotificationsContentExtension содержит следующую конфигурацию:
<!-- ... -->
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>UNNotificationExtensionCategory</key>
<array>
<string>red-category</string>
<string>green-category</string>
</array>
<key>UNNotificationExtensionUserInteractionEnabled</key>
<true/>
<key>UNNotificationExtensionDefaultContentHidden</key>
<true/>
<key>UNNotificationExtensionInitialContentSizeRatio</key>
<real>0.6</real>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.content-extension</string>
<key></key>
<true/>
</dict>
<!-- ... -->
Обратите внимание на следующие функции:
- Массив
UNNotificationExtensionCategoryзадает тип категорий уведомлений, которые обрабатывает расширение содержимого. - Чтобы поддерживать интерактивное содержимое, расширение содержимого
UNNotificationExtensionUserInteractionEnabledуведомления задает для ключа значениеtrue. - Ключ
UNNotificationExtensionInitialContentSizeRatioзадает начальное соотношение высоты и ширины интерфейса расширения содержимого.
Интерактивный интерфейс
MainInterface.storyboard, который определяет интерфейс для расширения содержимого уведомления, является стандартной раскадровки, содержащей один контроллер представления. В примере приложения контроллер представления имеет тип NotificationViewControllerи содержит представление изображения, три кнопки и ползунок. Раскадровка связывает эти элементы управления с обработчиками, определенными в NotificationViewController.cs:
Обработчик кнопки "Запустить приложение" вызывает
PerformNotificationDefaultActionметод действия,ExtensionContextв котором запускается приложение:partial void HandleLaunchAppButtonTap(UIButton sender) { ExtensionContext.PerformNotificationDefaultAction(); }В приложении центр
Delegateуведомлений пользователя (в примере приложенияAppDelegate) может реагировать на взаимодействие в методеDidReceiveNotificationResponse:[Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")] public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, System.Action completionHandler) { if (response.IsDefaultAction) { Console.WriteLine("ACTION: Default"); // ...Обработчик кнопки "Закрыть уведомление " вызывается
DismissNotificationContentExtension,ExtensionContextв котором закрывается уведомление:partial void HandleDismissNotificationButtonTap(UIButton sender) { ExtensionContext.DismissNotificationContentExtension(); }Обработчик кнопки "Удалить уведомление " закрывает уведомление и удаляет его из Центра уведомлений:
partial void HandleRemoveNotificationButtonTap(UIButton sender) { ExtensionContext.DismissNotificationContentExtension(); UNUserNotificationCenter.Current.RemoveDeliveredNotifications(new string[] { notification.Request.Identifier }); }Метод, который обрабатывает изменения значений на ползунке, обновляет альфа-файл изображения, отображаемого в интерфейсе уведомления:
partial void HandleSliderValueChanged(UISlider sender) { Xamagon.Alpha = sender.Value; }