iOS 每天在 Xamarin Forms 中重复闹钟

Repeat alarm every day in Xamarin Forms in iOS

我试图在我的 Xamarin Forms 中每天同时重复一个闹钟。但是 iOS 版本不会重复,但只会在指定的日期和时间出现一次。我正在将 DateTime 转换为 NSPDateComponents 并将其传递给 UNCalendarNotificationTrigger 以创建警报。日期时间值正确,但重复无效。

public static NSDateComponents ToNSDateComponents(this DateTime dt)
{
  var d = new NSDateComponents
  {
     Hour = dt.Hour,
     Minute = dt.Minute,
     Second = dt.Second,
     Month = dt.Month,
     Year = dt.Year,
     Day = dt.Day,
     TimeZone = NSTimeZone.SystemTimeZone
  };
  return d;
}

// notifyDate returns (e.g 16/11/2020 10:00 so I want the alarm to repeat every day at 10:00)
var trigger = UNCalendarNotificationTrigger.CreateTrigger(notifyDate.ToNSDateComponents(), true);
var requestID = "request_" + id;
var request = UNNotificationRequest.FromIdentifier(requestID, content, trigger);
UNUserNotificationCenter.Current.AddNotificationRequest(request, (err) => {
if (err != null){
}
});

您设置的是特殊日期,因此只能重复一次。

这里是每天09:30重复闹钟的例子,你可以看看:

// 1
var dateComponents = new NSDateComponents();
dateComponents.Hour = 9;
dateComponents.Minute = 30;
var trigger = UNCalendarNotificationTrigger.CreateTrigger(dateComponents, true);

// 2
var content = new UNMutableNotificationContent();
content.Title = "Daily reminder";
content.Body = "Enjoy your day!";

var requestID = "request_" + id;
var request = UNNotificationRequest.FromIdentifier(requestID, content, trigger);

// 3
UNUserNotificationCenter.Current.AddNotificationRequest(request, (err) => {
    if (err != null)
    {
    }
});