Seskupené oznámení v Xamarin.iOS
Ve výchozím nastavení iOS 12 umístí všechna oznámení aplikace do skupiny. Na zamykací obrazovce a v Centru oznámení se tato skupina zobrazuje jako zásobník s nejnovějším oznámením nahoře. Uživatelé můžou skupinu rozbalit a zobrazit všechna oznámení, která obsahuje, a zavřít skupinu jako celek.
Aplikace můžou také seskupovat oznámení podle vláken, což uživatelům usnadňuje hledání a interakci s konkrétními informacemi, které mají zájem.
Vyžádání autorizace a povolení oznámení na popředí
Aby aplikace mohl posílat místní oznámení, musí požádat o oprávnění k tomu. V ukázkové aplikaci AppDelegate
metoda FinishedLaunching
požaduje toto oprávnění:
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
UNUserNotificationCenter center = UNUserNotificationCenter.Current;
center.RequestAuthorization(UNAuthorizationOptions.Alert, (bool success, NSError error) =>
{
// Set the Delegate regardless of success; users can modify their notification
// preferences at any time in the Settings app.
center.Delegate = this;
});
return true;
}
Hodnota Delegate
(nastavená výše) pro UNUserNotificationCenter
rozhodnutí, zda by aplikace v popředí měla zobrazit příchozí oznámení zavoláním obslužné rutiny dokončení předané:WillPresentNotification
[Export("userNotificationCenter:willPresentNotification:withCompletionHandler:")]
public void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, System.Action<UNNotificationPresentationOptions> completionHandler)
{
completionHandler(UNNotificationPresentationOptions.Alert);
}
Parametr UNNotificationPresentationOptions.Alert
označuje, že aplikace by měla zobrazit upozornění, ale ne přehrát zvuk nebo aktualizovat odznáček.
Oznámení s vlákny
Klepněte na tlačítko Zpráva ukázkové aplikace s tlačítkem Alice, aby opakovaně odesílala oznámení pro konverzaci s přítelem jménem Alice . Vzhledem k tomu, že oznámení této konverzace jsou součástí stejného vlákna, zamykací obrazovka a Centrum oznámení je seskupí dohromady.
Pokud chcete zahájit konverzaci s jiným přítelem, klepněte na tlačítko Zvolit nového přítele . Oznámení pro tuto konverzaci se zobrazí v samostatné skupině.
ThreadIdentifier
Kdykoli ukázková aplikace spustí nové vlákno, vytvoří jedinečný identifikátor vlákna:
void StartNewThread()
{
threadId = $"message-{friend}";
// ...
}
Pokud chcete odeslat oznámení s vlákny, ukázková aplikace:
- Zkontroluje, jestli má aplikace autorizaci k odeslání oznámení.
- Vytvoří
UNMutableNotificationContent
objekt pro obsah oznámení a nastaví jehoThreadIdentifier
identifikátoru vlákna vytvořeného výše. - Vytvoří žádost a naplánuje oznámení:
async partial void ScheduleThreadedNotification(UIButton sender)
{
var center = UNUserNotificationCenter.Current;
UNNotificationSettings settings = await center.GetNotificationSettingsAsync();
if (settings.AuthorizationStatus != UNAuthorizationStatus.Authorized)
{
return;
}
string author = // ...
string message = // ...
var content = new UNMutableNotificationContent()
{
ThreadIdentifier = threadId,
Title = author,
Body = message,
SummaryArgument = author
};
var request = UNNotificationRequest.FromIdentifier(
Guid.NewGuid().ToString(),
content,
UNTimeIntervalNotificationTrigger.CreateTrigger(1, false)
);
center.AddNotificationRequest(request, null);
// ...
}
Všechna oznámení ze stejné aplikace se stejným identifikátorem vlákna se zobrazí ve stejné skupině oznámení.
Poznámka:
Pokud chcete nastavit identifikátor vlákna na vzdáleném oznámení, přidejte thread-id
klíč do datové části JSON oznámení. Další podrobnosti najdete v dokumentu Apple Generování vzdáleného oznámení .
SummaryArgument
SummaryArgument
určuje, jak oznámení ovlivní souhrnný text, který se zobrazí v levém dolním rohu skupiny oznámení, do které oznámení patří. IOS agreguje souhrnný text z oznámení ve stejné skupině a vytvoří tak celkový souhrnný popis.
Ukázková aplikace používá autora zprávy jako souhrnný argument. Pomocí tohoto přístupu může být souhrnný text pro skupinu šesti oznámení s Alicemi 5 dalších oznámení od Alice a Me.
Nečtená oznámení
Každé klepnutí na tlačítko připomenutí události ukázkové aplikace odešle jedno z různých oznámení připomenutí události. Vzhledem k tomu, že tato připomenutí nejsou podprocesy, zobrazí se ve skupině oznámení na úrovni aplikace na zamykací obrazovce a v Centru oznámení.
K odeslání nečteného oznámení používá metoda ukázkové aplikace ScheduleUnthreadedNotification
podobný kód jako výše.
Nenastaví však objekt ThreadIdentifier
na UNMutableNotificationContent
objekt.