Sdílet prostřednictvím


Uživatelská rozhraní interaktivního oznámení v Xamarin.iOS

Rozšíření obsahu oznámení představená v iOSu 10 umožňují vytvářet vlastní uživatelská rozhraní pro oznámení. Od iOSu 12 můžou uživatelská rozhraní oznámení obsahovat interaktivní prvky, jako jsou tlačítka a posuvníky.

Soubor s příponou obsahu oznámení Info.plist

V ukázkové aplikaci obsahuje soubor Info.plist v projektu RedGreenNotificationsContentExtension následující konfiguraci:

<!-- ... -->
<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>
<!-- ... -->

Všimněte si následujících funkcí:

  • Pole UNNotificationExtensionCategory určuje typ kategorií oznámení, které rozšíření obsahu zpracovává.
  • Aby bylo možné podporovat interaktivní obsah, rozšíření obsahu oznámení nastaví UNNotificationExtensionUserInteractionEnabled klíč na true.
  • Klíč UNNotificationExtensionInitialContentSizeRatio určuje počáteční poměr výšky a šířky pro rozhraní rozšíření obsahu.

Interaktivní rozhraní

MainInterface.storyboard, který definuje rozhraní pro rozšíření obsahu oznámení, je standardní scénář obsahující jeden kontroler zobrazení. V ukázkové aplikaci je kontroler zobrazení typu NotificationViewControllera obsahuje zobrazení obrázků, tři tlačítka a posuvník. Scénář přidruží tyto ovládací prvky k obslužným rutinám definovaným v NotificationViewController.cs:

  • Obslužná rutina tlačítka Spustit aplikaci volá metodu PerformNotificationDefaultAction akce, ExtensionContextkterá spustí aplikaci:

    partial void HandleLaunchAppButtonTap(UIButton sender)
    {
        ExtensionContext.PerformNotificationDefaultAction();
    }
    

    V aplikaci může centrum Delegate oznámení uživatele (v ukázkové aplikaci AppDelegate) reagovat na interakci v DidReceiveNotificationResponse metodě:

    [Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")]
    public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, System.Action completionHandler)
    {
        if (response.IsDefaultAction)
        {
            Console.WriteLine("ACTION: Default");
            // ...
    
  • Volání obslužné rutiny DismissNotificationContentExtensionExtensionContexttlačítka Zavřít oznámení , která zavře oznámení:

    partial void HandleDismissNotificationButtonTap(UIButton sender)
    {
        ExtensionContext.DismissNotificationContentExtension();
    }
    
  • Obslužná rutina tlačítka Odebrat oznámení zavře oznámení a odebere ji z Centra oznámení:

    partial void HandleRemoveNotificationButtonTap(UIButton sender)
    {
        ExtensionContext.DismissNotificationContentExtension();
        UNUserNotificationCenter.Current.RemoveDeliveredNotifications(new string[] { notification.Request.Identifier });
    }
    
  • Metoda, která zpracovává změny hodnot na posuvníku, aktualizuje alfa obrázku zobrazeného v rozhraní oznámení:

    partial void HandleSliderValueChanged(UISlider sender)
    {
        Xamagon.Alpha = sender.Value;
    }