Files
HeartRateMonitorAndroid/Services/NotificationService.cs

85 lines
2.6 KiB
C#

using HeartRateMonitorAndroid.Services.Platform;
namespace HeartRateMonitorAndroid.Services
{
/// <summary>
/// 通知服务工厂
/// </summary>
public static class NotificationService
{
private static readonly INotificationService _instance;
/// <summary>
/// 静态构造函数,根据平台创建对应的通知服务实现
/// </summary>
static NotificationService()
{
if (DeviceInfo.Platform == DevicePlatform.Android)
_instance = new AndroidNotificationService();
else if (DeviceInfo.Platform == DevicePlatform.iOS)
_instance = new IosNotificationService();
else if (DeviceInfo.Platform == DevicePlatform.WinUI)
_instance = new WindowsNotificationService();
else _instance = new NullNotificationService();
// 初始化通知服务
_instance.Initialize();
}
/// <summary>
/// 获取当前平台的通知服务实例
/// </summary>
public static INotificationService Current => _instance;
#region 便
/// <summary>
/// 显示心率通知
/// </summary>
public static void ShowHeartRateNotification(int currentHeartRate, double avgHeartRate, int minHeartRate, int maxHeartRate, TimeSpan duration)
{
_instance.ShowHeartRateNotification(currentHeartRate, avgHeartRate, minHeartRate, maxHeartRate, duration);
}
/// <summary>
/// 取消通知
/// </summary>
public static void CancelNotification()
{
_instance.CancelNotification();
}
/// <summary>
/// 显示重连通知
/// </summary>
public static void ShowReconnectionNotification(string title, string message, int attemptCount)
{
_instance.ShowReconnectionNotification(title, message, attemptCount);
}
#endregion
/// <summary>
/// 空实现,用于不支持的平台
/// </summary>
private class NullNotificationService : INotificationService
{
public void Initialize() { }
public void ShowHeartRateNotification(int currentHeartRate, double avgHeartRate, int minHeartRate, int maxHeartRate, TimeSpan duration)
{
// 空实现
}
public void CancelNotification()
{
// 空实现
}
public void ShowReconnectionNotification(string title, string message, int attemptCount)
{
// 空实现
}
}
}
}