first commit
This commit is contained in:
102
Platforms/Android/AndroidNotificationHelper.cs
Normal file
102
Platforms/Android/AndroidNotificationHelper.cs
Normal file
@ -0,0 +1,102 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using AndroidX.Core.App;
|
||||
using Application = Android.App.Application;
|
||||
namespace HeartRateMonitorAndroid.Platforms.Android
|
||||
{
|
||||
// Android平台特定的通知帮助类
|
||||
public static class AndroidNotificationHelper
|
||||
{
|
||||
// 创建通知渠道
|
||||
public static void CreateNotificationChannel(string channelId, string channelName, string description)
|
||||
{
|
||||
if (OperatingSystem.IsAndroidVersionAtLeast(26))
|
||||
{
|
||||
var context = Application.Context;
|
||||
var channel = new NotificationChannel(channelId, channelName, NotificationImportance.High)
|
||||
{
|
||||
Description = description
|
||||
};
|
||||
|
||||
var notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager;
|
||||
notificationManager?.CreateNotificationChannel(channel);
|
||||
}
|
||||
}
|
||||
|
||||
// 显示通知
|
||||
public static void ShowNotification(string channelId, int notificationId, string title, string content, int iconResourceId, bool ongoing = true)
|
||||
{
|
||||
var context = Application.Context;
|
||||
|
||||
// 创建PendingIntent用于点击通知时打开应用
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
// 创建通知内容
|
||||
var notificationBuilder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetOngoing(ongoing)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetPriority(NotificationCompat.PriorityHigh);
|
||||
|
||||
// 显示通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notificationBuilder.Build());
|
||||
}
|
||||
// 显示普通通知 - 用于重连提示等
|
||||
public static void ShowNormalNotification(string channelId, int notificationId, string title, string content, int iconResourceId, bool isForeground)
|
||||
{
|
||||
var context = Application.Context;
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
var builder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetAutoCancel(true);
|
||||
|
||||
var notification = builder.Build();
|
||||
// 普通通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notification);
|
||||
|
||||
}
|
||||
|
||||
// 显示带有扩展内容的通知
|
||||
public static void ShowBigTextNotification(string channelId, int notificationId, string title, string content, string bigText, int iconResourceId, bool ongoing = true)
|
||||
{
|
||||
var context = Application.Context;
|
||||
|
||||
// 创建PendingIntent用于点击通知时打开应用
|
||||
var intent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName);
|
||||
var pendingIntent = PendingIntent.GetActivity(context, 0, intent, PendingIntentFlags.Immutable);
|
||||
|
||||
// 创建通知内容
|
||||
var notificationBuilder = new NotificationCompat.Builder(context, channelId)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(content)
|
||||
.SetSmallIcon(iconResourceId)
|
||||
.SetOngoing(ongoing)
|
||||
.SetContentIntent(pendingIntent)
|
||||
.SetPriority(NotificationCompat.PriorityHigh)
|
||||
.SetStyle(new NotificationCompat.BigTextStyle().BigText(bigText));
|
||||
|
||||
// 显示通知
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Notify(notificationId, notificationBuilder.Build());
|
||||
}
|
||||
|
||||
// 取消通知
|
||||
public static void CancelNotification(int notificationId)
|
||||
{
|
||||
var context = Application.Context;
|
||||
var notificationManager = NotificationManagerCompat.From(context);
|
||||
notificationManager.Cancel(notificationId);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user