64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using Foundation;
|
|
using UserNotifications;
|
|
|
|
namespace HeartRateMonitorAndroid.Platforms.iOS
|
|
{
|
|
// iOS平台特定的通知帮助类
|
|
public static class IosNotificationHelper
|
|
{
|
|
// 请求通知权限
|
|
public static async Task RequestNotificationPermission()
|
|
{
|
|
var options = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound;
|
|
var center = UNUserNotificationCenter.Current;
|
|
var result = await center.RequestAuthorizationAsync(options);
|
|
|
|
// 权限请求结果处理
|
|
if (result.Item1)
|
|
{
|
|
// 已获得权限
|
|
Console.WriteLine("通知权限获取成功");
|
|
}
|
|
else
|
|
{
|
|
// 权限被拒绝
|
|
Console.WriteLine("通知权限被拒绝");
|
|
}
|
|
}
|
|
|
|
// 显示本地通知
|
|
public static void ShowNotification(string title, string body, double timeIntervalSeconds = 0.1)
|
|
{
|
|
var content = new UNMutableNotificationContent
|
|
{
|
|
Title = title,
|
|
Body = body,
|
|
Sound = UNNotificationSound.Default
|
|
};
|
|
|
|
// 设置触发器
|
|
var trigger = UNTimeIntervalNotificationTrigger.CreateTrigger(timeIntervalSeconds, false);
|
|
|
|
// 创建请求
|
|
var requestId = Guid.NewGuid().ToString();
|
|
var request = UNNotificationRequest.FromIdentifier(requestId, content, trigger);
|
|
|
|
// 添加请求
|
|
UNUserNotificationCenter.Current.AddNotificationRequest(request, (error) =>
|
|
{
|
|
if (error != null)
|
|
{
|
|
Console.WriteLine($"通知发送失败: {error}");
|
|
}
|
|
});
|
|
}
|
|
|
|
// 取消所有通知
|
|
public static void CancelAllNotifications()
|
|
{
|
|
UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests();
|
|
UNUserNotificationCenter.Current.RemoveAllDeliveredNotifications();
|
|
}
|
|
}
|
|
}
|