Мне нужно отправить два разных уведомления, каждое с разным идентификатором категории.
Когда я устанавливаю только одно из этих уведомлений, действия отображаются правильно. Однако, если я установлю оба уведомления когда-нибудь в будущем, второе будет иметь соответствующие действия.
if(condition){
var content = new UNMutableNotificationContent();
content.Title = "Notification1";
content.Body = "blah blah balh";
content.Badge = 1;
content.CategoryIdentifier = "cat1";
var requestID = pos1.ToString();
var date = new NSDateComponents();
date.Hour = this.time.Hour;
date.Minute = this.time.Minute;
date.Weekday = i + 1;
var trigger = UNCalendarNotificationTrigger.CreateTrigger(date, true);
var request = UNNotificationRequest.FromIdentifier(requestID, content, trigger);
UNUserNotificationCenter.Current.AddNotificationRequest(request, (error) => {
if (error != null) {
Console.WriteLine($"Error: {error.LocalizedDescription ?? ""}");
}
else {
Console.WriteLine("Scheduled alarm for " + date);
}
});
// Create actions
var action1 = UNNotificationAction.FromIdentifier("action1", "Action1", UNNotificationActionOptions.Foreground);
var cancelID = "cancel";
var cancel_title = "Cancel";
var cancel_action = UNNotificationAction.FromIdentifier(cancelID, cancel_title, UNNotificationActionOptions.Destructive);
// Create Category
var actions = new UNNotificationAction[] { action1, cancel_action };
var intentIDs = new string[] { };
var categoryOptions = new UNNotificationCategoryOptions[] { };
var category = UNNotificationCategory.FromIdentifier("cat1", actions, intentIDs, UNNotificationCategoryOptions.None);
// Register Category
var categories = new UNNotificationCategory[] { category };
UNUserNotificationCenter.Current.SetNotificationCategories(new NSSet<UNNotificationCategory>(categories));
}
if(condition2){
var content = new UNMutableNotificationContent();
content.Title = "Notification2";
content.Body = "blah";
content.Badge = 1;
content.CategoryIdentifier = "Cat2";
var requestID = pos2.ToString();
var date = new NSDateComponents();
date.Hour = this.time.Hour;
date.Minute = this.time.Minute;
date.Weekday = i + 1;
var trigger = UNCalendarNotificationTrigger.CreateTrigger(date, true);
var request = UNNotificationRequest.FromIdentifier(requestID, content, trigger);
UNUserNotificationCenter.Current.AddNotificationRequest(request, (error) => {
if (error != null) {
Console.WriteLine($"Error: {error.LocalizedDescription ?? ""}");
}
else {
Console.WriteLine("Scheduled alarm for " + date);
}
});
var action2 = UNNotificationAction.FromIdentifier("action2","Action2", UNNotificationActionOptions.Foreground);
var cancelID = "cancel";
var cancel_title = "Cancel";
var cancel_action = UNNotificationAction.FromIdentifier(cancelID, cancel_title, UNNotificationActionOptions.Destructive);
// Create Category
var actions = new UNNotificationAction[] { action2, cancel_action };
Console.WriteLine(this.time + actions[0].ToString());
var intentIDs = new string[] { };
var categoryOptions = new UNNotificationCategoryOptions[] { };
var category = UNNotificationCategory.FromIdentifier("Cat2", actions, intentIDs, UNNotificationCategoryOptions.None);
// Register Category
var categories = new UNNotificationCategory[] { category };
UNUserNotificationCenter.Current.SetNotificationCategories(new NSSet<UNNotificationCategory>(categories));
}
Если верно только условие или условие2, одно уведомление будет отправлено правильно, при этом будут показаны два действия. Когда оба условия выполняются, оба уведомления будут отправлены, однако только второе уведомление будет иметь действия.