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:
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);
Chcete-li naplánovat místní oznámení, vytvořte UILocalNotification
objekt, nastavte FireDate
a 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á:
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 alert
badge
klíč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 AppDelegate
souboru .