Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Расширения содержимого уведомлений, представленные в 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; }