运行时API分为两部分:AndroidNotificationCenter和iOSNotificationCenter。这些可用于计划和管理其各自平台的通知。您可以从我们的GitHub页面下载一个NotificationsSamples示例项目,该项目实现了一个高级封装,可用于使用相同的API向Android和iOS发送通知,或查看下面的代码示例。
该软件包支持以下功能:
计划安排本地一次或可重复的通知。
取消已经显示的和即将发生的(计划的)通知。
安卓:
在Android Oreo及更高版本上创建和修改通知渠道(类别)。
设备重新启动时保留通知。
设置自定义通知图标。
iOS:
使用Apple Push Notification Service(APN)接收远程通知。
如果设备在您的应用程序运行时收到来自其他应用程序的通知,请修改远程通知内容。
将通知分组为线程(仅在iOS 12+上受支持)。
要求:
支持Android 4.4(API 19)和iOS 10或更高版本。
与Unity 2018.3或更高版本兼容。
安卓
建立通知频道
每个本地通知必须属于一个通知通道。通知通道仅在Android 8.0 Oreo及更高版本上受支持。在较旧的Android版本上,此程序包模拟通知通道的行为。Importance为通知频道设置的优先级(重要)之类的设置适用于单个通知,即使在8.0之前的Android版本上也是如此。
var c = new AndroidNotificationChannel()
{
Id = "channel_id",
Name = "Default Channel",
Importance = Importance.High,
Description = "Generic notifications",
};
AndroidNotificationCenter.RegisterNotificationChannel(c);
发送一个简单的通知
本示例说明如何安排简单的文本通知并将其发送到上一步中创建的通知通道。
var notification = new AndroidNotification();
notification.Title = "SomeTitle";
notification.Text = "SomeText";
notification.FireTime = System.DateTime.Now.AddMinutes(5);
AndroidNotificationCenter.SendNotification(notification, "channel_id");
如果您没有为每个通知指定自定义图标,则默认的Unity图标显示在状态栏中。您可以在“项目设置” **窗口(菜单:**“编辑” >“项目设置” >“移动通知设置”)中配置通知图标。每当您在脚本中安排通知时,请使用在“移动通知设置”窗口中定义的图标ID 。
notification.SmallIcon = "my_custom_icon_id";
您可以选择设置一个大图标,该图标也会显示在通知视图中。较小的图标显示为大图标上方的小徽章。
notification.LargeIcon = "my_custom_large_icon_id";
安排通知后,Unity会为每个通知分配一个唯一的标识符。您可以使用标识符来跟踪通知状态或取消通知状态。通知状态跟踪仅适用于Android 6.0棉花糖及更高版本。
var identifier = AndroidNotificationCenter.SendNotification(n, "channel_id");
使用以下代码示例检查您的应用程序是否已将通知传递到设备,并根据结果执行任何操作。
if ( AndroidNotificationCenter.CheckScheduledNotificationStatus(identifier) == NotificationStatus.Scheduled)
{
// Replace the currently scheduled notification with a new notification.
AndroidNotificationCenter.UpdateScheduledNotification(identifier, newNotification, channel);