首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)
2014
05-19

Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)

         现在的游戏里一般都会有本地消息,比如每天定时12点或者下午6点告诉玩家进入游戏领取体力。这种东西没必要服务器去推送,客户端就可以完成。Unity里面提供了本地任务的功能但是只有IOS上才支持,开始我有点不解为什么Android上不支持,当我把Android的本地通知做完后,我才明白。IOS源生的API中就支持固定时间循环推送,而Android上需要自己开启一个Services,启动一个AlarmManager的定时器任务,还好我之前开发过Android, 言归正传今天我们先说IOS上的本地通知。

代码其实很简单,我先说下原理后面给出实现步骤。

1.当游戏进入后台的时候注册本地通知

2.当游戏进入前台的时候关闭本地通知

下面上代码。

Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七) - 雨松MOMO程序研究院 - 1 

弹出的消息通知。

Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七) - 雨松MOMO程序研究院 - 2

最后是本工程的下载地址,雨松MOMO祝大家学习愉快。

 

http://vdisk.weibo.com/s/qDm4IY-bnMQb

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七)》有 72 条评论

  1. 强 Rambo 说:

    松哥,问一下,自定义 提示声音 怎么做?

  2. 826008 说:

    坐等android 插件版推送 Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七) - 雨松MOMO程序研究院 - 1

  3. Darling_Zhao 说:

    没有声音提示啊 ~ ~ 默认声音提示了。

  4. IndexOne 说:

    unity5.2以上要先注册才能生效

  5. 崔斌 说:

    想问一下:我也是类似的办法,但是这个app右上角的小红点一直存在,消除不了

  6. 王湃 说:

    远程推送呢,松大大,求帮助啊~

    • 雨松MOMO 说:

      远程推送 这个就和客户端没关系了 得你们服务器去对接苹果的推送协议了

      • 王湃 说:

        有一点疑问,以前我们游戏在按下Home键挂在后台的时候,在回到游戏里面去,会按着原来的状态回到,可是加了这个之后,回到游戏变成了重开游戏,跟这个有关系的不,很确定是加了这个之后出的问题。

  7. 说:

    楼主把android的推送也放出来吧

  8. helloWorld 说:

    大神,为什么现在是用不了的呢?unity4.6.3,build后用Xcode发布ios8.2的版本,确认脚本是有执行的,但是在手机上就是无法推送。.是否是在手机上需要开启通知,但是没有从渠道出来的包装在手机上怎么管理?在设置里没办法找到自己安装的那个软件

    • helloWorld 说:

      可以支持ios8以上的设备,不过要在NotificationMessage函数中调用NotificationServices.RegisterForLocalNotificationTypes(LocalNotificationType.Badge | LocalNotificationType.Alert | LocalNotificationType.Sound);。在手机上如果注册成功推送的话,会弹出提示框,让用户选择是否允许通知。至于出的裸包安装到手机上,但是在设置里看不到,还是不知道是什么原因。

      • 2sky 说:

        谢谢~好在有你的提醒

        • 2sky 说:

          测试了一下,现在的版本badge的数量要想按每次提醒增加应该:localNotification.applicationIconBadgeNumber = NotificationServices.scheduledLocalNotifications.Length + 1;
          进入应用消除badge,在执行完 NotificationServices.PresentLocalNotificationNow(l);需要等一帧才执行NotificationServices.CancelAllLocalNotifications();和NotificationServices.ClearLocalNotifications();要不然消除不了。

          • 2sky 说:

            还有一点newDate > System.DateTime.Now在创建循环推送最好不要用,因为会出现假如我今天下午3点退出程序,它只会创建3点后的推送,到了第二天原本早上9点是有个推送的,而假如在昨天下午3点到第二天都没打开过程序,所以第二天早上9点的推送就不会出现了。

          • 杨彭 说:

            Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七) - 雨松MOMO程序研究院 - 1 为毛要等一帧

        • 2sky 说:

          测试了一下,现在的版本badge的数量要想按每次提醒增加应该:localNotification.applicationIconBadgeNumber = NotificationServices.scheduledLocalNotifications.Length 1;
          进入应用消除badge,在执行完 NotificationServices.PresentLocalNotificationNow(l);需要等一帧才执行NotificationServices.CancelAllLocalNotifications();和NotificationServices.ClearLocalNotifications();要不然消除不了。

    • 哥哥miss 说:

      #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { // use registerUserNotificationSettings [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [application registerForRemoteNotifications]; } else { // use registerForRemoteNotifications [application registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; } #else // use registerForRemoteNotifications [application registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; #endif 在UnityAppController.mm中的 didFinishLaunchingWithOptions函数添加以上代码,就可以收到本地推送了

  9. 张艳磊 说:

    为啥现在不好使了啊,发布到iOS设备上没反应

  10. 万书饭 说:

    这个好像是没得到用户允许,

  11. 万书饭 说:

    我将这个build后用Xcode发布 iOS7.1,我的unity是4.6.3,发现接受不到本地消息。问一下为何。

  12. 海牛-陈峰 说:

    用新xcode打包ipa 在 ios8系统上 运行 会接收不到 本地推送消息,这个unity 还没有修复吧!我们可以什么修复下吗?

  13. 李浩 说:

    貌似即使启动游戏后调用CleanNotification,应用图标上的数字标记仍然不会清除。。。

  14. 梁腾达 说:

    请问大神,有研究过Android本地推送怎么做吗,最近自己搞了个推送插件,基本功能可以实现了。就是不知道,推送服务被用户强行杀掉后,如何重新启动。Android3.0后,强杀应用,此应用就监听不到系统广播了,所以通过监听系统广播的方式,重启也行不通了。求指教~~~@@~!

  15. 我android推送成功了,但是点击推送进入游戏,就给游戏干死了,直接闪屏退出,,后来我又换了个Activity,Intent,从这个activity跳回继承UnityPlayerActivity的类,还是不行,,求大神解答

  16. 张浩 说:

    能加下联系方式吗??我这里安卓碰到问题 求指点

  17. yy 说:

    我发现10秒后的发送 都能成功,但是定时发送的很不好用,还没成功过。

  18. nam 说:

    Unity3D研究院之IOS本地消息通知LocalNotification的使用(六十七) - 雨松MOMO程序研究院 - 1 才发现原来unity自己封装了 ios的通知 感谢

  19. bootload 说:

    大神们---此方法---不支持IOS8系统,有解决方法吗?????

  20. muziazheng 说:

    楼主,有安卓的吗?

  21. 阿精 说:

    MOMO大大请问ANDROID的本地如何制作?谢谢

  22. momo大神,想请教一下,为什么使用startservice方法开启一个service之后,结束掉unity主进程,service就不会再起作用了?我使用的是unity4.3.4创建的eclipse工程,在工程中直接进行相关代码的添加。

  23. 三流学生_ 说:

    MOMO大神,求回复,项目需要实现远程桌面监控,服务器端可以查看客户端的画面和操作。不知道你有没有相关的项目和经验?

  24. 小貓 说:

    大大很高興的~我的安卓已經可以順利傳入intent參數~也遇到不少困難~順利的成功了~不過ios這邊卻有個問題~就是當我由notification center 點了這訊息~有辦法由unity讓訊息從center中心消失嗎? 目前只有寫-1 只有badge數字消失 , Cancel clear 也都沒消除center 的是只能由xcode 去執行嗎

  25. Fighter 说:

    你好,怎么实时获取手机垂直和水平的旋转角度,谢谢!

  26. 小貓 说:

    大大好~ 我剛好在做這個~安卓我用了別人的plugin~但遇到了個問題~就是click notification 後~ 我該如何把參數傳遞入給app呢?~ intent 該怎在unity 接收?

  27. 老夫子wfz 说:

    雨凇momo,这种东西Android要怎么做啊,我试着用Unity调用Android里面的Notification,但是发现没有用

  28. 秋水 说:

    能分享一个安卓的吗

  29. 小郭 说:

    还有,你上面进入之后首先就把所有本地通知都清除了,那如果是每日提醒的,是不是也都删除了?是不是还要判断?

  30. 小郭 说:

    这几天也都在看这个,我的app添加了本地通知,然后装在ipod上面,在系统的设置-通知中心-包括 里面就有我的app对应的一条,这里面可以开关各种通知,这里和程序里面的通知有什么关系?

  31. Revover 说:

    大大求助啊!要做一个虚拟漫游项目,要求是动态加载地形,随着漫游移动实时加载外部提供的模型转化为新的地形。但是不知道unity下怎么实现,我现在的思路是每隔一段时间将下载的模型资源通过脚本转化为地形,要怎么实现呢??

  32. cwwqq 说:

    因为我想要可以生成ios之后都能添加图片,所以放在了Cache文件里,unity用绝对路径都能读,但是生成iOS之后无论是用file://” Application.temporaryCachePath “/x.png” 还是用file:// 绝对路径都不能,而用网络图片ios里也只有黑色一遍.

  33. cwwqq 说:

    想请教一下,我用WWW读取本地图片的时候,在unity里面读取完全没问题,但是转成ios之后就读取不出来,变成红色问号了,知道是什么问题么。

留下一个回复

你的email不会被公开。