Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)
2016-01-13 18:38
681 查看
现在的游戏里一般都会有本地消息,比如每天定时12点或者下午6点告诉玩家进入游戏领取体力。这种东西没必要服务器去推送,客户端就可以完成。Unity里面提供了本地任务的功能但是只有IOS上才支持,开始我有点不解为什么Android上不支持,当我把Android的本地通知做完后,我才明白。IOS源生的API中就支持固定时间循环推送,而Android上需要自己开启一个Services,启动一个AlarmManager的定时器任务,还好我之前开发过Android, 言归正传今天我们先说IOS上的本地通知。
代码其实很简单,我先说下原理后面给出实现步骤。
1.当游戏进入后台的时候注册本地通知
2.当游戏进入前台的时候关闭本地通知
下面上代码。
弹出的消息通知。
代码其实很简单,我先说下原理后面给出实现步骤。
1.当游戏进入后台的时候注册本地通知
2.当游戏进入前台的时候关闭本地通知
下面上代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { //本地推送 public static void NotificationMessage(string message,int hour ,bool isRepeatDay) { int year = System.DateTime.Now.Year; int month = System.DateTime.Now.Month; int day= System.DateTime.Now.Day; System.DateTime newDate = new System.DateTime(year,month,day,hour,0,0); NotificationMessage(message,newDate,isRepeatDay); } //本地推送 你可以传入一个固定的推送时间 public static void NotificationMessage(string message,System.DateTime newDate,bool isRepeatDay) { //推送时间需要大于当前时间 if(newDate > System.DateTime.Now) { LocalNotification localNotification = new LocalNotification(); localNotification.fireDate =newDate; localNotification.alertBody = message; localNotification.applicationIconBadgeNumber = 1; localNotification.hasAction = true; if(isRepeatDay) { //是否每天定期循环 localNotification.repeatCalendar = CalendarIdentifier.ChineseCalendar; localNotification.repeatInterval = CalendarUnit.Day; } localNotification.soundName = LocalNotification.defaultSoundName; NotificationServices.ScheduleLocalNotification(localNotification); } } void Awake() { //第一次进入游戏的时候清空,有可能用户自己把游戏冲后台杀死,这里强制清空 CleanNotification(); } void OnApplicationPause(bool paused) { //程序进入后台时 if(paused) { //10秒后发送 NotificationMessage("雨松MOMO : 10秒后发送",System.DateTime.Now.AddSeconds(10),false); //每天中午12点推送 NotificationMessage("雨松MOMO : 每天中午12点推送",12,true); } else { //程序从后台进入前台时 CleanNotification(); } } //清空所有本地消息 void CleanNotification() { LocalNotification l = new LocalNotification (); l.applicationIconBadgeNumber = -1; NotificationServices.PresentLocalNotificationNow (l); NotificationServices.CancelAllLocalNotifications (); NotificationServices.ClearLocalNotifications (); } } |
弹出的消息通知。
相关文章推荐
- Unity3d 综合性能窍门
- 【Unity Shader】浅析Unity shader中RenderType的作用及_CameraDepthNormalsTexture
- Unity3D游戏开发创建桌面快捷方式
- Unity3D 游戏开发构架篇 ——输入控制
- Unity 使用自定义资源(.asset)配置数据
- unity让shader支持UGUI Mask
- unity3d远程加载资源模型到本地并加载(二)第一次加载资源后写到本地后从本地加载。
- 在unity中调用某个程序运行
- unity3d 中IDropHandler 和 IEndDragHandler 优先级别
- unity, undo
- Unity中LoadLevel与LoadLevelAsync的区别
- unity3d 音频无缝循环
- Unity中使用ulua的个人经验总结
- 微软IOC容器Unity简单代码示例1
- 微软IOC容器Unity简单代码示例2-配置文件方式
- Unity3D OnBecameVisible OnBecameInVisible 无效 没有用
- unity对于网址编码和解码EscapeURL和UnEscapeURL
- Unity3D-深入剖析NGUI的游戏UI架构
- unity 在菜单中添加 复制文件菜单项(简易版)
- Unity中数据库建立与读写详情