Sdílet prostřednictvím


Správa oznámení v Xamarin.iOS

V iOSu 12 může operační systém přímý odkaz z Centra oznámení a aplikace Nastavení na obrazovku správy oznámení aplikace. Tato obrazovka by uživatelům měla umožnit, aby se odhlásili a odhlásili z různých typů oznámení, která aplikace odesílá.

Obrazovka správy oznámení

V ukázkové aplikaci definuje uživatelské rozhraní, ManageNotificationsViewController které umožňuje uživatelům nezávisle povolit a zakázat červená oznámení a zelená oznámení. Jedná se o standardní UIViewController obsahující typ UISwitch oznámení. Přepnutí přepínače pro některý typ uložení oznámení ve výchozím nastavení uživatele u daného typu oznámení:

partial void HandleRedNotificationsSwitchValueChange(UISwitch sender)
{
    NSUserDefaults.StandardUserDefaults.SetBool(sender.On, RedNotificationsEnabledKey);
}

Poznámka:

Obrazovka správy oznámení také zkontroluje, jestli má uživatel pro aplikaci úplně zakázaná oznámení. Pokud ano, skryje přepínače pro jednotlivé typy oznámení. Chcete-li to provést, obrazovka pro správu oznámení:

  • Zavolá UNUserNotificationCenter.Current.GetNotificationSettingsAsync a zkontroluje AuthorizationStatus vlastnost.
  • Skryje přepínače jednotlivých typů oznámení, pokud byla oznámení pro aplikaci zcela zakázaná.
  • Znovu zkontroluje, jestli byla oznámení při každém přesunutí aplikace do popředí zakázaná, protože uživatel může kdykoli povolit nebo zakázat oznámení v iOSu Nastavení.

Třída ukázkové aplikace ViewController , která odesílá oznámení, před odesláním místního oznámení zkontrolujte předvolby uživatele, aby se zajistilo, že oznámení je typu, který chce uživatel skutečně přijmout:

partial void HandleTapRedNotificationButton(UIButton sender)
{
    bool redEnabled = NSUserDefaults.StandardUserDefaults.BoolForKey(ManageNotificationsViewController.RedNotificationsEnabledKey);
    if (redEnabled)
    {
        // ...

Přímé odkazy na obrazovku správy oznámení aplikace z Centra oznámení a nastavení oznámení aplikace v aplikaci Nastavení. Aby se to usnadnilo, musí aplikace:

  • Naznačte, že je k dispozici obrazovka pro správu oznámení předáním UNAuthorizationOptions.ProvidesAppNotificationSettings žádosti o autorizaci oznámení aplikace.
  • Implementujte metodu OpenSettings z IUNUserNotificationCenterDelegate.

Žádost o autorizaci

Chcete-li indikovat operační systém, že je k dispozici obrazovka pro správu oznámení, měla by aplikace předat UNAuthorizationOptions.ProvidesAppNotificationSettings možnost (spolu s dalšími možnostmi doručení oznámení, které potřebuje) RequestAuthorization metodě na kartě UNUserNotificationCenter.

Například v ukázkové aplikaci AppDelegate:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    // Request authorization to send notifications
    UNUserNotificationCenter center = UNUserNotificationCenter.Current;
    var options = UNAuthorizationOptions.ProvidesAppNotificationSettings | UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Provisional;
    center.RequestAuthorization(options, (bool success, NSError error) =>
    {
        // ...

Metoda Open Nastavení

OpenSettings Metoda, kterou systém volá k přímému propojení na obrazovku správy oznámení aplikace, by měla uživatele přejít přímo na danou obrazovku.

V ukázkové aplikaci provede tato metoda v případě potřebygue ManageNotificationsViewController :

[Export("userNotificationCenter:openSettingsForNotification:")]
public void OpenSettings(UNUserNotificationCenter center, UNNotification notification)
{
    var navigationController = Window.RootViewController as UINavigationController;
    if (navigationController != null)
    {
        var currentViewController = navigationController.VisibleViewController;
        if (currentViewController is ViewController)
        {
            currentViewController.PerformSegue(ManageNotificationsViewController.ShowManageNotificationsSegue, this);
        }

    }
}