文档章节

C# 实现本地推送示例

木木情深
 木木情深
发布于 2015/01/07 17:25
字数 669
阅读 993
收藏 0

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


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


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


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


下面上代码。


C#

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

}

}


本文转载自:http://www.xuanyusong.com/archives/2632

木木情深
粉丝 37
博文 189
码字总数 26451
作品 0
广州
程序员
私信 提问
加载中

评论(1)

w
wallance1
GoEasyweb 推送基于websocket 和polling两种实现,兼容IE6-IE11的所有IE浏览器以及其它主流浏览器。它提供了Restful API支持各个开发语言。服务稳定,文档齐全。官网:http://goeasy.io
远程推送IOS

一,IOS远程通知服务APNs 苹果的APNs(苹果推送通知服务Apple Push Notification server)允许设备和苹果的推送通知服务器保持链接,支持开发者推送消息到给用户设备对应的应用程序。 苹果的APN...

海二少
2016/03/05
124
0
C# 8中的Async Streams

关键要点 异步编程技术提供了一种提高程序响应能力的方法。 Async/Await模式在C# 5中首次亮相,但只能返回单个标量值。 C# 8添加了异步流(Async Streams),允许异步方法返回多个值,从而扩...

dotNET跨平台
2018/09/21
0
0
微信公众号开发C#系列-7、消息管理-接收事件推送

1、概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息。其中,某些事件...

NET快速开发框架
04/10
0
0
基于.net 消息推送 SignalR

需求 两个HTML页面 页面A 展示界面 显示 一些资料之类的。 页面B 操作页面 根据AJAX 调用C#接口后 操作完成后 推送到页面A 实现推送 现在想到的是用C# SignalR 实现该功能 还有其他比较好的实...

TodaErika
2018/05/07
507
0
C# Web实时消息后台服务器推送技术---GoEasy

越来越多的项目需要用到实时消息的推送与接收,怎样用C# 实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推...

Xiqincai
2016/09/20
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
29分钟前
5
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
34分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
40分钟前
4
0
Golang net/http处理表单请求

代码示范: package mainimport ("fmt""html/template""net/http")const tpl = `<html><head><title>Hey</title></head><body><form method="POST" action="/">......

听夜深窗外风
47分钟前
5
0
博客迁移 开源中国博客不再更新 之后考虑关停

博客迁移 开源中国博客不再更新 之后考虑关停 我的博客地址:blog.mrpei.cc

MrPei
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部