Unity For Android(安卓)iOS 的本地推送
这是我在CSDN上面的正经发表的第一篇文章,希望能开个好头。本文主要讲解了如何在iOS和Android开启本地推送
1.先说iOS
Unity原生支持iOS的本地推送,需要引用UnityEngine.IOS.
1.1 注册
NotificationServices.RegisterForNotifications(NotificationType.Alert | NotificationType.Badge | NotificationType.Sound);
/
NotificationType通知类型
NotificationType.Alert是指消息
Notification.Badge
Notification.Sound是指通知声音
1.2注册完之后需要写一个方法,就是推送的具体具体实现,Unity原生的方法就是,在NotificationService类中
public static void ScheduleLocalNotification(iOS.LocalNotification notification);
首先需要简单了解一下iOS.LocalNotification 这个类,这个类定义本地通知的,我主要用的到了其中的这几个属性
alertBody:定义了推送的内容,是string类型
fireDate:通知的时间.类型为DateTime。
alertAcion:简单理解为通知的标题,string类型
soundName:通知的声音,string 类型
hasAction:bool 类型,用来控制action是否可见,true为可见。
定义好了LocalNotification之后,就可以使用NotificationService.ScheduleLocalNotification(你定义的LocalNotification)就可以了
1.3. 清除和取消本地通知
还是Unity中的方法,
取消所有本地通知:NotificationService.CancelAllLocalNotifications
取消本地通知:NotificationService.CancelLocalNotification(iOS.LocalzNotifiation localNotification)
清除所有本地通知:NotificationService.ClearLocalNotifications()
这几个方法我只用到了取消所有本地通知和清除所有本地通知,ApplicationPause和Awake里面
不知道小伙伴们看到这里的时候是不是有点懵,反正刚开始的时候我看取消和清除是一样的,感觉很懵逼。举个例子给懵逼的小伙伴们。
ex:有一个app每天10点的时候都会固定发送本地通知,小明是这个app的用户,上午9:00-11:00的时候,小明一直运行这个App,小明打开程序之后,程序清除了昨天十点发送的本地通知,在通知栏里面看不到了这个通知。也会取消今天十点要发送的通知。小明在今天十点的时候不会接收到通知。
public class iOSLocalzNotificationTest : MonoBehaviour { /// ///定义并且给本地通知赋值 /// UnityEngine.iOS.LocalNotification localNotification = new UnityEngine.iOS.LocalNotification() { alertAction = "test", alertBody = "this is a test", hasAction = true, fireDate = DateTime.Now.AddSeconds(10), }; /// /// 在程序启动时注册通知并取消清除所有通知 /// private void Awake() { ClearNotification(); UnityEngine.iOS.NotificationServices.RegisterForNotifications( UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Sound); } /// /// 计划通知 /// /// 本地通知 private void ScheduleLocalNotification(UnityEngine.iOS.LocalNotification localNotification) { UnityEngine.iOS.NotificationServices.ScheduleLocalNotification(localNotification); } /// /// 清除取消通知 /// private void ClearNotification() { UnityEngine.iOS.NotificationServices.ClearLocalNotifications(); UnityEngine.iOS.NotificationServices.CancelAllLocalNotifications(); } /// /// 程序转入前台时,取消并清除通知,程序转入后台时,计划通知 /// /// private void OnApplicationPause(bool pause) { if (pause) { ScheduleLocalNotification(localNotification); } else { ClearNotification(); } } }
2Android
由于Unity中没有安卓的通知方法,我在用了一个开源的安卓本地通知的一个插件。
地址是
https://github.com/Agasper/unity-android-notifications
如果有任何疑问,欢迎找博主交流。如需转载,请说明出处
更多相关文章
- Android(安卓)AlertDialog的各种用法总结
- EditTextView:取消焦点&自动获取焦点
- android 带清除功能的EditText
- android 状态栏(StatusBar)
- android 卸载程序、清除数据、停止服务用法
- android studio接入支付宝
- Android(安卓)中单选框或复选框点击其中一个,其余取消操作
- Android之AppWidget的按钮事件开启Activity
- Android使用Notification通知栏功能的封装