说实话并不会写.net,公司后台用的.net所有配合他们弄了一个简单的试了一下。
常规
到jpush官网注册成为开发者,然后配置好自己的应用,获得appkey和Master Secret。
android端集成
android端集成jpush的sdk最快的就是看官方demo,里面的东西很详细传送门。
.net调用api
本文的重点
我用的是vs2017,创建项目为.mvc框架的。
直接在Controller里面发送请求给jpush
public void getMsg()
{
try
{
//拼接数据
string postData = "{\"platform\":\"all\",\"audience\":\"all\",\"notification\":{\"alert\" : \"Hi, JPush!\", \"android\" : { \"extras\" : { \"newsid\" : 321}}}}";
byte[] data = Encoding.UTF8.GetBytes(postData);
string resCode = GetPostRequest(data);//调用极光的接口获取返回值
}
catch (Exception ex)
{
}
}
本文只是介绍这种最基本的方法,至于其中各种参数,还有数据的类型可以参照官方的介绍,这里
/// <summary>
/// Post方式请求获取返回值
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public string GetPostRequest(byte[] data)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://api.jpush.cn/v3/push");
myRequest.Method = "POST";//极光http请求方式为post
myRequest.ContentType = "application/json";//按照极光的要求
myRequest.ContentLength = data.Length;
string myHeader = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(app_key + ":" + masterSecret));
myRequest.Headers.Add("Authorization", "Basic "+ myHeader);
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
// Get response
var response = (HttpWebResponse)myRequest.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
{
string result = reader.ReadToEnd();
reader.Close();
response.Close();
return result;
}
}
然后把项目跑起来,直接在浏览器里面掉对应接口的方法,比如http://localhost:55568/home/getMsg
然后手机端就会收到通知。
遇到的问题
首先保证android端能收到通知,可以先在jpush后台发送通知测试。
然后controller里面调用方法后返回401,检查自己的app_key 和masterSecret是否正确,可能会多一个空格哦。