.net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新
最近刚从极光推送官网上看到V2版本要停用,不得不有重新写V3版本的。这里用到了 HTTP Basic Authentication
http://www.cnblogs.com/pingming/p/4165057.html
1、首先需要将你的app在极光官网上进行注册,获取一个ApiKey,一个APIMasterSecret(密码),将这两个值保存在配置文件(app/web.config)中,具体手机开发端需要做什么操作我们.net平台不管
<appSettings>
<add key="ApiKey" value="**********"/>
<add key="APIMasterSecret" value="*******"/>
</appSettings>
2、读取配置中的值
private readonly string ApiKey = "";
private readonly string APIMasterSecret = "";
ApiKey = ConfigurationManager.AppSettings["ApiKey"].ToString();//Android ApiKey
APIMasterSecret = ConfigurationManager.AppSettings["APIMasterSecret"].ToString();//Android密码
3、开始推送方法
/// <summary>
/// 极光推送V3版本
/// </summary>
/// <param name="content"></param>
public string PushV3(string content)
{
string app_key = ApiKey;
string masterSecret = APIMasterSecret; string u_ = app_key + ":" + masterSecret;//对应推送 -u string base64_ = EncodeBase64(u_);//编码 u_
StringBuilder sbs = new StringBuilder();
            sbs.Append("{");
            sbs.Append("\"platform\": \"all\",");
            sbs.Append("\"audience\": \"all\",");
            sbs.Append("\"notification\": {");
            sbs.Append("\"android\": {");
            sbs.Append("\"alert\": \"" + content + "\",");
            sbs.Append("\"title\": \"武林国小\",");
            sbs.Append("\"builder_id\": 1,");
            sbs.Append("\"extras\": {");
            sbs.Append("\"newsid\": 321");
            sbs.Append("}");
            sbs.Append(" },");
            sbs.Append("\"ios\": {");
            sbs.Append("\"alert\": \"" + content + "\",");
            sbs.Append("\"sound\": \"default\",");
            sbs.Append("\"badge\": \"+1\",");
            sbs.Append("\"extras\": {");
            sbs.Append("\"news_id\": 134");
            sbs.Append(" }");
            sbs.Append(" }");
            sbs.Append("},");
            sbs.Append("\"message\": {");
            sbs.Append("\"msg_content\": \"" + content + "\",");
            sbs.Append("\"content_type\": \"text\",");
            sbs.Append("\"title\": \"武林国小\",");
            sbs.Append("\"extras\": {");
            sbs.Append("\"key\": \"value\"");
            sbs.Append("}");
            sbs.Append("},");
            sbs.Append("\"sms_message\":{");
            sbs.Append("\"content\":\"" + content + "\",");
            sbs.Append("\"delay_time\":3600");
            sbs.Append("},");
            sbs.Append("\"options\": {");
            sbs.Append("\"time_to_live\": 60,");
            sbs.Append("\"apns_production\": true");
            sbs.Append("}");
            sbs.Append("}");
byte[] data = Encoding.UTF8.GetBytes(sbs.ToString());
//使用 HTTP Basic Authentication 的方式做访问授权
//http Post方式调用极光的推送服务
            Uri url = new Uri("https://api.jpush.cn/v3/push");
            CredentialCache mycache = new CredentialCache();
            mycache.Add(url, "Basic", new NetworkCredential(app_key, masterSecret));
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);//
            myRequest.Method = "POST";//极光http请求方式为post
            myRequest.ContentType = "application/json";////按照极光的要求
            myRequest.ContentLength = data.Length;
            myRequest.Credentials = mycache;
            myRequest.KeepAlive = true;
            myRequest.Headers.Add("Authorization", "Basic "+base64_);//http头添加
            Stream newStream = myRequest.GetRequestStream();
            // Send the data.
            newStream.Write(data, , data.Length);
            newStream.Close();
            // Get response
            var response = (HttpWebResponse)myRequest.GetResponse();
            string staCode= response.StatusCode.ToString();//返回状态码:200 OK
            using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
            {
                string result = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return staCode;
            }
        }
.net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新的更多相关文章
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
		
atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消 ...
 - 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco
		
Android studio 集成极光推送(Jpush) (华为手机)报错, E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!] W/Sy ...
 - Android开发之极光推送基本步骤
		
[转]:http://wyong.blog.51cto.com/1115465/1402842 两天在研究推送的问题,后来确定了用极光推送,本人将整个过程整理一下: 1.到极光官网注册账号:https ...
 - 制作IOS 后台极光推送时,遇到的小问题
		
推送广义上分为两种, 一种是 程序在前台的时候,不想在任务栏里面显示通知,直接在app中进行某种操作.这个叫做自定义消息.这个是在前台时,app与极光后台建立了一个长链接. 另一种是 程序处于前. ...
 - .net平台借助第三方推送服务在推送Android消息(极光推送)
		
最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS ...
 - iOS:极光推送控制器跳转
		
在前面已经做完了极光消息的推送,那么有消息了,如何跳转到需要的控制器呢?其实,主要还是在userInfo这个消息里面做判断来处理,具体如下: 下面这两个是远程推送时接收消息的方法,这是应用程序提供的方 ...
 - Android端 配置极光推送
		
由于业务须要,androidclient须要加推送.原来採用的百度推送.可是小米手机有时候收不到.后来换成了极光推送,极光的话全部设备都能收到推送,可是在高峰的时候会推迟.博主说的免费版的,收费的没用 ...
 - iOS开发——极光推送
		
1.到极光官网 https://www.jpush.cn/ 下载极光推送SDK. 具体如何集成最好参考官网的文档,以及一些失败的原因.文档非常详细,我也是参考集成的. 2.到极光推送官网注册自己的应用 ...
 - iOS 集成极光推送
		
最近极光推送更新到V3版本之后,推送又不成功!配合服务器联调了半天,发现是服务器环境配置有问题. 想着就把极光推送的步骤给记录下来. 一.配置push证书 这个可以到极光文档里写,很详细 二.导入必要 ...
 
随机推荐
- python学习——面向对象的三大特性
			
一.继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 1.python中类的继承分为:单继承和多继承 class P ...
 - python学习之文件读写入门(文件读的几种方式比较)
			
1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...
 - Java异常链
			
是什么 一种面向对象的编程技术,将捕获到的异常重新封装到一个新的异常中,并重新抛出. 有什么用 可以保留每一层的异常信息,用户查看异常的时候,能够从顶层异常信息看到底层异常信息. 怎么用 catch异 ...
 - Goland的常用快捷键
			
文件相关快捷键: CTRL+E,打开最近浏览过的文件. CTRL+SHIFT+E,打开最近更改的文件. CTRL+N,可以快速打开struct结构体. CTRL+SHIFT+N,可以快速打开文件. 代 ...
 - 从国内下载Linux的CentOS系统
			
http://mirror.nsc.liu.se/centos-store/7.3.1611/isos/x86_64/
 - 【BZOJ3611】大工程(虚树,动态规划)
			
[BZOJ3611]大工程(虚树,动态规划) 题面 BZOJ Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树 ...
 - C#防止程序重新运行
			
//禁止重复运行 bool ret; Mutex mutex = new Mutex(true, Application.ProductName, out ret); if (ret) { Appli ...
 - php session存入redis
			
php的会话默认以文件的形式存在,可以配知道NOSQL中,既可以提高访问速度又能好好的实现回话共享,在后期做负载均衡时实现多台服务器session 同步也是比较方便: 一:在php配置文件中改 修改p ...
 - hdu1869六度分离(floyd)
			
六度分离 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
 - Qt-第一个QML程序-2-关键代码分析,TEXT,Image,Mouseare
			
qml语言开始写的时候有点不习惯,后面用的多了感觉很好,很顺手,用于快速搭建项目界面,真的很好. 目前用到的还是比较简单的 隐藏标题栏,而依附任务栏 flags: Qt.Window | Qt.Fra ...