封装APP的教程可以看:https://blog.csdn.net/mojocube/article/details/117567233?spm=1001.2014.3001.5501
HBuilder设置:
开通:
获取Key:
C#服务器端代码:
using System;
using System.Collections.Generic;
using System.Text;
using com.igetui.api.openservice;
using com.igetui.api.openservice.igetui;
using com.igetui.api.openservice.igetui.template;
/// <summary>
/// PushApi 的摘要说明
/// </summary>
public class PushApi
{
//本DEMO采用个推推送,详细文档参考 https://docs.getui.com/
//参数设置 <-----参数需要重新设置----->
//http的域名
//private String HOST = "http://api.getui.com/apiex.htm";
//https的域名
private String HOST = "https://api.getui.com/apiex.htm";
//定义常量, appId、appKey、masterSecret 申请成功后可以在后台获取
private String APPID = "XXXXXXXXXXXX";
private String APPKEY = "XXXXXXXXXXXX";
private String MASTERSECRET = "XXXXXXXXXXXXXXXXX";
public String TITLE = ""; //标题(传入参数,必填)
public String CONTENT = ""; //内容(传入参数,必填)
public String CLIENTID = ""; //客户ID(传入参数,不填则默认为群发)
public String RESULT = ""; //返回结果
public void Send()
{
//toList接口每个用户状态返回是否开启,可选
//Console.OutputEncoding = Encoding.GetEncoding(936);
//Environment.SetEnvironmentVariable("gexin_pushList_needDetails", "true");
pushMessage();
新开线程执行推送,不用等待服务器返回,便于其他操作
//System.Threading.Thread thread;
//thread = new System.Threading.Thread(pushMessage);
//try
//{
// thread.Start();
//}
//catch
//{
// thread.Abort();
//}
}
//推送接口
private void pushMessage()
{
IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET);
NotificationTemplate template = new NotificationTemplate();
template.AppId = APPID;
template.AppKey = APPKEY;
//应用启动类型,1:强制应用启动 2:等待应用启动
template.TransmissionType = 1;
//通知栏标题
template.Title = TITLE;
//通知栏内容
template.Text = CONTENT;
//接收到消息是否响铃
template.IsRing = true;
//接收到消息是否震动
template.IsVibrate = true;
//接收到消息是否可消除
template.IsClearable = true;
if (CLIENTID == "")
{
// 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)
AppMessage message = new AppMessage();
message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选
message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选
message.Data = template;
//判断是否客户端是否wifi环境下推送,2:4G/3G/2G,1为在WIFI环境下,0为无限制环境
//message.PushNetWorkType = 0;
//message.Speed = 1000;
List<String> appIdList = new List<string>();
appIdList.Add(APPID);
List<String> phoneTypeList = new List<string>(); //通知接收者的手机操作系统类型
//phoneTypeList.Add("ANDROID");
//phoneTypeList.Add("IOS");
List<String> provinceList = new List<string>(); //通知接收者所在省份
//provinceList.Add("浙江");
//provinceList.Add("上海");
//provinceList.Add("北京");
List<String> tagList = new List<string>();
//tagList.Add("中文");
message.AppIdList = appIdList;
message.PhoneTypeList = phoneTypeList;
message.ProvinceList = provinceList;
message.TagList = tagList;
RESULT = push.pushMessageToApp(message);
}
else
{
SingleMessage message = new SingleMessage();
message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选
message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选
message.Data = template;
Target target = new Target();
target.appId = APPID;
target.clientId = CLIENTID;
//target.alias = ALIAS;//别名
RESULT = push.pushMessageToSingle(message, target);
}
}
}
调用:
PushApi push = new PushApi();//实例化类
push.CLIENTID = txtClientID.Text.Trim();//客户ID,不填则群发
push.TITLE = txtTitle.Text.Trim();//标题
push.CONTENT = txtContent.Text.Trim();//内容
push.Send();//发送
lblMsg.Text = push.RESULT;//返回结果
这样就可以实现服务器端发推送,APP接收的功能了,如果需要给个别APP用户单推,可以在前端获取客户ID,然后进行单推:
<script type="text/javascript">
//监听plusready事件
document.addEventListener("plusready", function () {
var pinf = plus.push.getClientInfo();
var cid = pinf.clientid;// 客户端标识
document.getElementById("ShowClientID").innerHTML = cid;// App 的 CID
}, false);
</script>
<body>
<div id="ShowClientID">
</div>
</body>
效果:
DEMO下载:
https://download.csdn.net/download/mojocube/19682226?spm=1001.2014.3001.5501