Interaktivní uživatelská rozhraní pro oznámení v Xamarin.iOS

Rozšíření obsahu oznámenízavedená v iOSu 10 umožňuje vytvářet vlastní uživatelská rozhraní pro oznámení. Počínaje iOSem 12 mohou uživatelská rozhraní oznámení obsahovat interaktivní prvky, jako jsou tlačítka a posuvníky.

Ukázková aplikace: RedGreenNotifications

Ukázková aplikace RedGreenNotifications obsahuje rozšíření obsahu oznámení s interaktivním uživatelským rozhraním.

Fragmenty kódu v této příručce pocházejí z této ukázky.

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

Soubor Info.plist v projektu RedGreenNotificationsContentExtension v ukázkové aplikaci obsahuje 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, nastaví rozšíření obsahu oznámení UNNotificationExtensionUserInteractionEnabled klíč na true .
  • Klíč určuje počáteční poměr výšky a šířky pro rozhraní UNNotificationExtensionInitialContentSizeRatio 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 a obsahuje zobrazení obrázku, tři tlačítka NotificationViewController a posuvník. Scénář přidruží tyto ovládací prvky k obslužnám rutinám definovaným v souboru NotificationViewController.cs:

  • Obslužná rutina tlačítka Spustit aplikaci volá metodu akce na ExtensionContext , která spustí aplikaci:

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

    V aplikaci může centrum oznámení uživatele (v ukázkové aplikaci) reagovat na DelegateAppDelegate 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");
            // ...
    
  • Obslužná rutina tlačítka Zavřít oznámení volá ExtensionContext metodu , která oznámení zavře:

    partial void HandleDismissNotificationButtonTap(UIButton sender)
    {
        ExtensionContext.DismissNotificationContentExtension();
    }
    
  • Obslužná rutina tlačítka Odebrat oznámení zavře oznámení a odebere ho 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;
    }