Powiadomienia grupowane w środowisku Xamarin.iOS
Domyślnie system iOS 12 umieszcza wszystkie powiadomienia aplikacji w grupie. Ekran blokady i Centrum powiadomień wyświetlają tę grupę jako stos z najnowszym powiadomieniem u góry. Użytkownicy mogą rozwinąć grupę, aby wyświetlić wszystkie powiadomienia, które zawiera, i odrzucić grupę jako całość.
Aplikacje mogą również grupować powiadomienia według wątku, ułatwiając użytkownikom znajdowanie i interakcję z określonymi informacjami, które cię interesują.
Żądaj autoryzacji i zezwalaj na powiadomienia pierwszego planu
Aby aplikacja mogła wysyłać powiadomienia lokalne, musi zażądać uprawnień, aby to zrobić. W przykładowej aplikacji AppDelegate
FinishedLaunching
metoda żąda tego uprawnienia:
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;
}
Element Delegate
(ustawiony powyżej) UNUserNotificationCenter
dla elementu decyduje, czy aplikacja pierwszego planu powinna wyświetlać przychodzące powiadomienie przez wywołanie procedury obsługi uzupełniania przekazanej do WillPresentNotification
elementu :
[Export("userNotificationCenter:willPresentNotification:withCompletionHandler:")]
public void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, System.Action<UNNotificationPresentationOptions> completionHandler)
{
completionHandler(UNNotificationPresentationOptions.Alert);
}
Parametr UNNotificationPresentationOptions.Alert
wskazuje, że aplikacja powinna wyświetlać alert, ale nie odtwarzać dźwięku ani aktualizować wskaźnika.
Powiadomienia wątkowe
Naciśnij przycisk Wiadomość przykładowej aplikacji z Alicją wielokrotnie, aby wysyłać powiadomienia o konwersacji z przyjacielem o nazwie Alice. Ponieważ powiadomienia tej konwersacji są częścią tego samego wątku, ekran blokady i Centrum powiadomień grupują je razem.
Aby rozpocząć rozmowę z innym przyjacielem, naciśnij przycisk Wybierz nowego znajomego . Powiadomienia dotyczące tej konwersacji są wyświetlane w oddzielnej grupie.
ThreadIdentifier
Za każdym razem, gdy przykładowa aplikacja uruchamia nowy wątek, tworzy unikatowy identyfikator wątku:
void StartNewThread()
{
threadId = $"message-{friend}";
// ...
}
Aby wysłać powiadomienie wątkowe, przykładowa aplikacja:
- Sprawdza, czy aplikacja ma autoryzację do wysyłania powiadomienia.
- Tworzy element
UNMutableNotificationContent
obiekt dla zawartości powiadomienia i ustawia goThreadIdentifier
do identyfikatora wątku utworzonego powyżej. - Tworzy żądanie i planuje powiadomienie:
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);
// ...
}
Wszystkie powiadomienia z tej samej aplikacji o tym samym identyfikatorze wątku będą wyświetlane w tej samej grupie powiadomień.
Uwaga
Aby ustawić identyfikator wątku w powiadomieniu zdalnym, dodaj thread-id
klucz do ładunku JSON powiadomienia. Aby uzyskać więcej informacji, zobacz Dokument Generowanie powiadomienia zdalnego przez firmę Apple.
PodsumowanieArgument
SummaryArgument
Określa, jak powiadomienie będzie miało wpływ na tekst podsumowania wyświetlany w lewym dolnym rogu grupy powiadomień, do której należy powiadomienie. System iOS agreguje tekst podsumowania z powiadomień w tej samej grupie, aby utworzyć ogólny opis podsumowania.
Przykładowa aplikacja używa autora komunikatu jako argumentu podsumowania. Korzystając z tego podejścia, tekst podsumowania dla grupy sześciu powiadomień z Alice może być 5 więcej powiadomień od Alice i Me.
Nieprzeczytane powiadomienia
Każde naciśnięcie przycisku przypomnienia terminów przykładowej aplikacji wysyła jedno z różnych powiadomień przypomnienia o terminach. Ponieważ te przypomnienia nie są wątkowe, są one wyświetlane w grupie powiadomień na poziomie aplikacji na ekranie blokady i w Centrum powiadomień.
Aby wysłać nieprzeczytane powiadomienie, metoda przykładowej aplikacji ScheduleUnthreadedNotification
używa podobnego kodu, jak pokazano powyżej.
Nie ustawia ThreadIdentifier
jednak obiektu na UNMutableNotificationContent
obiekcie .