Sdílet prostřednictvím


Oznámení v Xamarin.iOS

Důležité

Informace v této části se týkají iOS 9 a předchozích verzí. Informace o iOSu 10 a novějších verzích najdete v příručce k uživatelskému rozhraní pro oznámení.

iOS má tři způsoby, jak uživatele indikovat, že oznámení bylo přijato:

  • Zvuk nebo vibrace – iOS může přehrát zvuk, který uživatele upozorní. Pokud je zvuk zakázaný, je možné zařízení nakonfigurovat tak, aby vibroval.
  • Výstrahy – na obrazovce je možné zobrazit dialogové okno s informacemi o oznámení.
  • Odznáčky – Když je oznámení publikováno, může se na ikoně aplikace zobrazit číslo (odznak).

IOS také poskytuje Centrum oznámení, které uživateli zobrazí všechna oznámení, místní i vzdálená. Uživatelé k tomu mají přístup potáhnutím prstem z horní části obrazovky:

Centrum oznámení

Vytváření místních oznámení v iOSu

iOS usnadňuje vytváření a zpracování místních oznámení. Za prvé, iOS 8 vyžaduje, aby aplikace požádaly o oprávnění uživatele zobrazovat oznámení. Před pokusem o odeslání místního oznámení přidejte do aplikace následující kód, obvykle v metodě FinishedLaunching appDelegate:

var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(
    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
);
application.RegisterUserNotificationSettings(notificationSettings);

Potvrzení možnosti odeslání místního oznámení

Chcete-li naplánovat místní oznámení, vytvořte UILocalNotification objekt, nastavte FireDatea naplánujte ho prostřednictvím ScheduleLocalNotification metody objektu UIApplication.SharedApplication . Následující fragment kódu ukazuje, jak naplánovat oznámení, které se aktivuje jednu minutu v budoucnu, a zobrazit upozornění se zprávou:

UILocalNotification notification = new UILocalNotification();
notification.FireDate = NSDate.FromTimeIntervalSinceNow(15);
//notification.AlertTitle = "Alert Title"; // required for Apple Watch notifications
notification.AlertAction = "View Alert";
notification.AlertBody = "Your 15 second alert has fired!";
UIApplication.SharedApplication.ScheduleLocalNotification(notification);

Následující snímek obrazovky ukazuje, jak tato výstraha vypadá:

Příklad upozornění

Upozorňujeme, že pokud se uživatel rozhodl nepovolit oznámení, nezobrazí se nic.

Pokud chcete u ikony aplikace použít odznáček s číslem, můžete ho nastavit tak, jak je znázorněno v následujícím řádku kódu:

notification.ApplicationIconBadgeNumber = 1;

Pokud chcete přehrát zvuk s ikonou, nastavte vlastnost SoundName v oznámení, jak je znázorněno v následujícím fragmentu kódu:

notification.SoundName = UILocalNotification.DefaultSoundName;

Pokud je zvuk oznámení delší než 30 sekund, iOS místo toho přehraje výchozí zvuk.

Důležité

V simulátoru iOS došlo k chybě, která dvakrát aktivuje oznámení delegáta. K tomuto problému by nemělo dojít při spuštění aplikace na zařízení.

Zpracování oznámení

Aplikace pro iOS zpracovávají vzdálená a místní oznámení téměř stejným způsobem. Při spuštění aplikace bude ReceivedLocalNotification volána metoda nebo ReceivedRemoteNotification metoda třídy AppDelegate a informace o oznámení budou předány jako parametr.

Aplikace může oznámení zpracovat různými způsoby. Aplikace může například jenom zobrazit upozornění, které uživatelům připomene nějakou událost. Nebo se oznámení může použít k zobrazení výstrahy uživateli, že proces dokončil, například synchronizace souborů na server.

Následující kód ukazuje, jak zpracovat místní oznámení a zobrazit upozornění a resetovat číslo odznáček na nulu:

public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
{
    // show an alert
    UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert);
    okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));

    Window.RootViewController.PresentViewController(okayAlertController, true, null);

    // reset our badge
    UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
}

Pokud aplikace není spuštěná, iOS přehraje zvuk nebo aktualizuje odznáček ikony podle potřeby. Když uživatel spustí aplikaci přidruženou k upozornění, aplikace se spustí a FinishedLaunching zavolá se metoda delegáta aplikace a informace o oznámení se předají prostřednictvím parametru launchOptions . Pokud slovník možností obsahuje klíč UIApplication.LaunchOptionsLocalNotificationKey, pak AppDelegate ví, že aplikace byla spuštěna z místního oznámení. Tento proces ukazuje následující fragment kódu:

// check for a local notification
if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
{
    var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
    if (localNotification != null)
    {
        UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert);
        okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));

        Window.RootViewController.PresentViewController(okayAlertController, true, null);

        // reset our badge
        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
    }
}

U vzdáleného oznámení launchOptions bude obsahovat přidruženou LaunchOptionsRemoteNotificationKey NSDictionary datovou část vzdáleného oznámení. Datovou část oznámení můžete extrahovat prostřednictvím alertbadgeklíče a sound . Následující fragment kódu ukazuje, jak získat vzdálená oznámení:

NSDictionary remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey];
if(remoteNotification != null)
{
    string alert = remoteNotification["alert"];
}

Shrnutí

Tato část ukázala, jak vytvořit a publikovat oznámení v Xamarin.iOS. Ukazuje, jak aplikace může reagovat na oznámení přepsáním ReceivedLocalNotification metody nebo ReceivedRemoteNotification metody v AppDelegatesouboru .