Xamarin.iOS'ta gruplandırılmış bildirimler
Varsayılan olarak, iOS 12 bir uygulamanın tüm bildirimlerini bir gruba yerleştirir. Kilit ekranı ve Bildirim Merkezi bu grubu en son bildirimin en üstte olduğu bir yığın olarak görüntüler. Kullanıcılar, içerdiği tüm bildirimleri görmek ve grubu bir bütün olarak kapatmak için grubu genişletebilir.
Uygulamalar ayrıca bildirimleri iş parçacığına göre gruplandırarak kullanıcıların ilgilendikleri belirli bilgileri bulmalarını ve bunlarla etkileşim kurmalarını kolaylaştırır.
Yetkilendirme isteme ve ön plan bildirimlerine izin verme
Bir uygulamanın yerel bildirimler gönderebilmesi için önce izin istemesi gerekir. Örnek uygulamanın AppDelegate
FinishedLaunching
dosyasında yöntemi şu izni istemektedir:
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;
}
Delegate
için UNUserNotificationCenter
(yukarıdaki küme) ön plan uygulamasının uygulamasına WillPresentNotification
geçirilen tamamlama işleyicisini çağırarak gelen bir bildirim görüntüleyip görüntülemeyeceğine karar verir:
[Export("userNotificationCenter:willPresentNotification:withCompletionHandler:")]
public void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, System.Action<UNNotificationPresentationOptions> completionHandler)
{
completionHandler(UNNotificationPresentationOptions.Alert);
}
UNNotificationPresentationOptions.Alert
parametresi, uygulamanın uyarıyı göstermesi gerektiğini ancak ses çalmaması veya rozeti güncelleştirmemesi gerektiğini gösterir.
Yazışma bildirimleri
Alice adlı bir arkadaşınızla yapılan bir konuşma için bildirim göndermesini sağlamak için örnek uygulamanın Alice ile İleti düğmesine art arda dokunun. Bu konuşmanın bildirimleri aynı yazışmanın parçası olduğundan kilit ekranı ve Bildirim Merkezi bunları birlikte gruplandırıyor.
Farklı bir arkadaşınızla konuşma başlatmak için Yeni bir arkadaş seçin düğmesine dokunun. Bu konuşmanın bildirimleri ayrı bir grupta görünür.
ThreadIdentifier
Örnek uygulama yeni bir iş parçacığı başlattığında benzersiz bir iş parçacığı tanımlayıcısı oluşturur:
void StartNewThread()
{
threadId = $"message-{friend}";
// ...
}
İş parçacıklı bildirim göndermek için örnek uygulama:
- Uygulamanın bildirim gönderme yetkisi olup olmadığını denetler.
- Bir oluşturur
UNMutableNotificationContent
bildirimin içeriği için nesnesi veThreadIdentifier
öğesini yukarıda oluşturulan iş parçacığı tanımlayıcısına ekleyin. - bir istek oluşturur ve bildirimi zamanlar:
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);
// ...
}
Aynı uygulamadan gelen ve aynı iş parçacığı tanımlayıcısı olan tüm bildirimler aynı bildirim grubunda görünür.
Not
Uzaktan bildirimde bir iş parçacığı tanımlayıcısı ayarlamak için, anahtarı bildirimin JSON yüküne ekleyin thread-id
. Daha fazla ayrıntı için Apple'ın Uzaktan Bildirim Oluşturma belgesine bakın.
SummaryArgument
SummaryArgument
bildirimin, bildirimin ait olduğu bildirim grubunun sol alt köşesinde görünen özet metni nasıl etkileyeceğini belirtir. iOS, genel bir özet açıklaması oluşturmak için aynı gruptaki bildirimlerden özet metni toplar.
Örnek uygulama, özet bağımsız değişkeni olarak iletinin yazarını kullanır. Bu yaklaşımı kullanarak, Alice ile altı bildirimden oluşan bir grubun özet metni Alice ve Ben'den 5 bildirim daha olabilir.
Okunmamış bildirimler
Örnek uygulamanın Randevu anımsatıcı düğmesinin her dokunuşu, çeşitli randevu anımsatıcı bildirimlerinden birini gönderir. Bu anımsatıcılar yazışmalı olmadığından, kilit ekranında ve Bildirim Merkezi'nde uygulama düzeyi bildirim grubunda görünür.
Okunmamış bildirim göndermek için örnek uygulamanın ScheduleUnthreadedNotification
yöntemi yukarıdakine benzer bir kod kullanır.
Ancak nesnesinde UNMutableNotificationContent
öğesini ayarlamazThreadIdentifier
.