Unity3D研究院之IOS本地消息通知LocalNotification的使用

原地址:http://www.xuanyusong.com/archives/2632

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

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

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 ();

}

}

 

弹出的消息通知。

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

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

Unity3D研究院之IOS本地消息通知LocalNotification的使用

时间: 2024-08-01 22:46:03

Unity3D研究院之IOS本地消息通知LocalNotification的使用的相关文章

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

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

Unity3D 研究院之IOS高级界面发送消息与Unity3D消息的接收

今天和盆友们讨论IOS的高级界面与unity3d游戏引擎的交互,这个在开发中是非常重要的,unity3d 毕竟是一个面向多平台的一个游戏引擎,它不可能全部为IOS 考虑的面面俱到,引擎中也不存在针对IOS的高级界面的控件的使用. 本例实现游戏背景是Unity3D 的游戏世界,前面添加4个IOS的高级界面的按钮,并且点击这些按钮可以将消息传递给背景的Unity3D ,让它做一些事情. 上一章介绍了触摸IOS屏幕 移动摄像机的位置,下面有盆友问我说他不想移动摄像机的位置,就想移动物体的位置,我在这里

IOS 新消息通知提示-声音、震动

一.APNS 1.注册 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];复制代码2.服务器推送(JAVA) PushNotificationPayload payLoad =  PushNotificationPayl

Unity3D研究院之IOS全自动打包生成ipa

接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿.. 建议大家先看一下上一篇文章.http://www.xuanyusong.com/archives/2720 首先我们要先搞清楚nity全自动打包的重要步骤. 1.自动生成xcode工程. 2.自动生成.ipa和dsym文件. 3.上传appstore(本篇略) 首先我们在做渠道包时,一般每个渠道都有自己一些特殊的需求,比如 游戏名子 .游戏图标.SDK.等等.那么我在在做自动化

Unity3D研究院之IOS全自动编辑framework、plist、oc代码

Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了..而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生成的oc代码,每次打包都要修改的话,那太累了..这篇文章就是全自动打包的第一步..建议使用XUPorter,我在它的基础上拓展了两个类,一个用来修改plist,一个用来修改unity生成出来的OC代码.文章的最后我会给出代码.. 那么我用一个比较变态的SDK举个例子ShareSDK,它就需要自动添加

如何使用 UserNotifications 做本地消息通知

最终效果 请求通知权限 import UserNotifications UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (allowed, error) in if !allowed { // User prohibited notification authority } } 上面这段代码就是请求通知权限的代码,把它放在你想要请求权限的地方即可,这里我把它

IOS本地消息推送(UILocalNotification)

IOS本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notification的方法就完成了整个Notification流程了. IOS本地的Notification有UILocalNotification对象完成.它包括的主要属性有:fireDate.timeZone.repeatInt

iOS开发-消息通知机制(NSNotification和NSNotificationCenter)

iOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页面A,页面C的值改变也需要映射到页面A,那么就需要需要两个委托解决问题.NSNotificaiton则是一对多注册一个通知,之后回调很容易解决以上的问题. 基础概念 iOS消息通知机制算是同步的,观察者只要向消息中心注册, 即可接受其他对象发送来的消息,消息发送者和消息接受者两者可以互相一无所知,完

使用UILocalNotification给App添加本地消息通知

使用过的代码,直接贴上 1 UILocalNotification *notification = [[UILocalNotification alloc] init]; 2 if (notification!=nil) { 3 NSDate *now = [NSDate new]; 4 //从现在开始,10秒以后通知 5 notification.fireDate=[now addTimeInterval:10]; 6 //使用本地时区 7 notification.timeZone=[NST