【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知

目录

【目标和效果】

【准备】

【HBuilderX】

【UniPush开通】

【C# 发起接口通知推送】

【温馨提示】

【总结】

【互动一刻】


【目标和效果】

hbuilderx+h5+unipush+.net framework+C#,实现H5封装成安卓app,给在线用户(cid)推送通知消息

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第1张图片

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第2张图片

【准备】

1、HBuilderX

前端封装app开发工具,任何最新版本即可

2、UniPush

申请推送需要的appid等信息,DCloud与个推联合打造

AppSecret、MasterSecret、Legancy server key由个推保存,DCloud并不保存

所以,通过接口发起的通知推送和透传,实质上还是个推的接口地址
 

【HBuilderX】

1、下载-HBuilderX.2.7.5.20200519

无需安装,这点倒是不错,直接点击exe即可

2、创建项目

文件>新建项目>项目>5+app(这个根据自己选一个)

3、获取app客户端唯一标识

通过app客户端唯一标识-clientid-来推送信息和通知对应的客户端

  • app客户端唯一标识值

  • index.html代码如下



    
    
    标题测试
    


	
测试cid值

4、H5页面打包APP

发行>原生App-云打包

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第3张图片

1)App id

  • 方法一:直接进入dcloud开发者中心创建

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第4张图片

方法二:HBuilderX开发工具基础配置里-重新获取,自动创建一个App id,开发者后台也会自动有一条记录

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第5张图片

2)Android包名

自定义名称或域名+点(.)+刚刚申请的App id,比如:xxx.appid

5、SDK配置

推送 - 勾选 - uniPush(集成各家手机厂商系统推送及个推,是个推的升级版)

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第6张图片

6、打包

直接赋值下载地址即可安装,安卓安装相对简单

【UniPush开通】

1、在开发者中心,我创建的应用列表

在列表选择对应的应用名称,如果没有开通,那么会跳转到下图提示开通,开通是免费的,根据信息进行填写

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第7张图片

2、Android应用签名

Android包名在上面步骤已经知道如何取得,现在就是签名的获取

1)安装java的sdk

版本可能会随着时间不断更新,我这里最新的是14

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第8张图片

 

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第9张图片

2)管理员方式运行安装

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第10张图片

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第11张图片

3)cmd命令定位到安装所在目录

记得cmd要以管理员身份运行

cd C:\Program Files\Java\jdk-14.0.1\bin

4)口令密码,初始为123456

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000

然后填写一些信息即可,最后就会在文件夹下生成一个文件估计就是保存一些填写的信息等

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第12张图片

5)激动时刻来了,签名到手 - 获取SHA256

keytool -list -v -keystore debug.keystore

【C# 发起接口通知推送】

1、查看应用配置信息 - appid和key等api接口值

【小5聊】使用HBuilderX打包H5页面实现C#调个推接口,进行app消息推送和消息通知_第13张图片

2、推送通知信息代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Google.ProtocolBuffers;
using com.gexin.rp.sdk.dto;
using com.igetui.api.openservice;
using com.igetui.api.openservice.igetui;
using com.igetui.api.openservice.igetui.template;
using System.Net;

namespace GetuiServerApiSDKDemo
{
    public class demo
    {

        //采用"C# SDK 快速入门", "第二步 获取访问凭证 "中获得的应用配置,用户可自行替换
        private static String APPID = "你的配置信息appid";
        private static String APPKEY = "你的配置信息appkey";
        private static String MASTERSECRET = "你的配置信息mastersecret";
        //您获取的clientID
        private static String CLIENTID = "app客户端的clientid";
        //别名推送方式
        //private static String ALIAS = "";
        //HOST:OpenService接口地址
        private static String HOST = "http://sdk.open.api.igexin.com/apiex.htm";

        //static void Main(string[] args)
        //{
        //    //toList接口每个用户状态返回是否开启,可选
        //    Console.OutputEncoding = Encoding.GetEncoding(936);
        //    Environment.SetEnvironmentVariable("needDetails", "true");


        //    PushMessageToSingle();
        //}

        public static void PushMessageToSingle(string title, string content)
        {
            IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET);

            //消息模版:TransmissionTemplate:透传模板

            NotificationTemplate template = NotificationTemplateDemo(title,content); // TransmissionTemplateDemo();


            // 单推消息模型
            SingleMessage message = new SingleMessage();
            message.IsOffline = true;                         // 用户当前不在线时,是否离线存储,可选
            message.OfflineExpireTime = 1000 * 3600 * 12;            // 离线有效时间,单位为毫秒,可选
            message.Data = template;
            //判断是否客户端是否wifi环境下推送,2为4G/3G/2G,1为在WIFI环境下,0为不限制环境
            message.PushNetWorkType = 0;  

            com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target();
            target.appId = APPID;
            target.clientId = CLIENTID;
            //target.alias = ALIAS;
            try
            {
                String pushResult = push.pushMessageToSingle(message, target);

                System.Console.WriteLine("-----------------------------------------------");
                System.Console.WriteLine("-----------------------------------------------");
                System.Console.WriteLine("----------------服务端返回结果:" + pushResult);
            }
            catch (RequestException e)
            {
                String requestId = e.RequestId;
                //发送失败后的重发
                String pushResult = push.pushMessageToSingle(message, target, requestId);
                System.Console.WriteLine("-----------------------------------------------");
                System.Console.WriteLine("-----------------------------------------------");
                System.Console.WriteLine("----------------服务端返回结果:" + pushResult);
            }
        }

        public static NotificationTemplate NotificationTemplateDemo(string title, string content)
        {
            NotificationTemplate template = new NotificationTemplate();
            template.AppId = APPID;
            template.AppKey = APPKEY;
            //通知栏标题
            template.Title = title;
            //通知栏内容    
            template.Text = content;
            //通知栏显示本地图片 
            template.Logo = "";
            //通知栏显示网络图标
            template.LogoURL = "";
            //应用启动类型,1:强制应用启动  2:等待应用启动 
            template.TransmissionType = "1";
            //透传内容
            template.TransmissionContent = content;
            //接收到消息是否响铃,true:响铃 false:不响铃
            template.IsRing = true;
            //接收到消息是否震动,true:震动 false:不震动
            template.IsVibrate = true;
            //接收到消息是否可清除,true:可清除 false:不可清除
            template.IsClearable = true;
            //设置客户端展示时间
            //String begin = DateTime.Now.AddMinutes(-6).ToString("yyyy-MM-dd HH:mm:ss");
            //String end = DateTime.Now.AddSeconds(10).ToString("yyyy-MM-dd HH:mm:ss");
            //template.setDuration(begin, end);
            return template;
        }
    }
}

【温馨提示】

1、设置应用的通知,默认可能是关闭装填

2、亮屏显示,需要手机设置开启

【总结】

        这里的通知信息推送,存在的发送成功率的问题,如果想要达到通知的即时提示,那么这个是不能满足的,适合APP在运行状态接收通知信息,否则可能不会即时提示在锁屏和app不存进程情况下。离线通知推送这个又是另一个阶层了,适合充值玩家,这里适合了解和熟悉整个推送的过程。

【互动一刻】

相互学习,共同进步

 

 

你可能感兴趣的:(基础知识,C#,个推,个推)