HBuilder封装APP集成推送功能

8 篇文章 1 订阅
5 篇文章 0 订阅

封装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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值