Xamarin.iOS'ta etkileşimli bildirim kullanıcı arabirimleri
iOS 10'da kullanıma sunulan bildirim içeriği uzantıları, bildirimler için özel kullanıcı arabirimleri oluşturmayı mümkün hale getirir. iOS 12'den başlayarak bildirim kullanıcı arabirimleri düğmeler ve kaydırıcılar gibi etkileşimli öğeler içerebilir.
Bildirim içerik uzantısı Info.plist dosyası
Örnek uygulamada, RedGreenNotificationsContentExtension projesindeki Info.plist dosyası aşağıdaki yapılandırmayı içerir:
<!-- ... -->
<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>
<!-- ... -->
Aşağıdaki özelliklere dikkat edin:
- dizi,
UNNotificationExtensionCategory
içerik uzantısının işlediği bildirim kategorilerinin türünü belirtir. - Etkileşimli içeriği desteklemek için bildirim içeriği uzantısı anahtarı olarak
true
ayarlarUNNotificationExtensionUserInteractionEnabled
. - anahtar,
UNNotificationExtensionInitialContentSizeRatio
içerik uzantısının arabirimi için ilk yükseklik/genişlik oranını belirtir.
Etkileşimli arabirim
Bildirim içerik uzantısı arabirimini tanımlayan MainInterface.storyboard, tek bir görünüm denetleyicisi içeren standart bir görsel taslaktır. Örnek uygulamada, görünüm denetleyicisi türündedir NotificationViewController
ve bir görüntü görünümü, üç düğme ve kaydırıcı içerir. Görsel taslak, bu denetimleri NotificationViewController.cs tanımlanan işleyicilerle ilişkilendirir:
Uygulamayı Başlat düğme işleyicisi, uygulamasını başlatan üzerinde
ExtensionContext
eylem yöntemini çağırırPerformNotificationDefaultAction
:partial void HandleLaunchAppButtonTap(UIButton sender) { ExtensionContext.PerformNotificationDefaultAction(); }
Uygulamada, kullanıcı bildirim merkezinin
Delegate
(örnek uygulamadaAppDelegate
) yöntemindekiDidReceiveNotificationResponse
etkileşime yanıt verebilir:[Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")] public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, System.Action completionHandler) { if (response.IsDefaultAction) { Console.WriteLine("ACTION: Default"); // ...
Bildirimi Kapat düğmesi işleyicisi, bildirimi kapatan öğesini
ExtensionContext
çağırırDismissNotificationContentExtension
:partial void HandleDismissNotificationButtonTap(UIButton sender) { ExtensionContext.DismissNotificationContentExtension(); }
Bildirimi Kaldır düğme işleyicisi bildirimi kapatıp Bildirim Merkezi'nden kaldırır:
partial void HandleRemoveNotificationButtonTap(UIButton sender) { ExtensionContext.DismissNotificationContentExtension(); UNUserNotificationCenter.Current.RemoveDeliveredNotifications(new string[] { notification.Request.Identifier }); }
Kaydırıcıdaki değer değişikliklerini işleyen yöntem, bildirimin arabiriminde görüntülenen görüntünün alfasını güncelleştirir:
partial void HandleSliderValueChanged(UISlider sender) { Xamagon.Alpha = sender.Value; }