java mui 个推推送

首先给大家讲一下有哪些坑

     1.这个推送  必须要打包才可以发送推送(后台自定义的发送推送)

     2.这个有一个弊端:就是 当我的手机关闭了app的情况下,我后台管理员发送一条推送消息,你会接受不到,除非,你充钱         (也就是成为VIP )因为,这个 个推 也是集成了厂家的sdk来进行推送的,当然啦,也不是集成了所有的厂家,目前只有 小米,魅族,华为,oppo,vivo 的通道

     3.辣么在关闭了app的情况下,管理员发送的消息也不会被删除的,只是,你要在管理员发送推送消息的72小时之内打开               app,还是可以收到几天前发送的推送消息的,因为个推他们吧消息放在了离线库里面存着的,放行使用

然后给大家普及一下,也是我当时这么认为的  什么是推送!

这个就是推送 ,由第三方工具给你的手机发送一条消息(JAVA开发),(辣么这个是怎么给你发送的了?)

首先,你得安装一个app ,这个app也就是你现在正在开发的app,通过manifest.json 里面的  plus.push 进行配置  

辣么  这个配置里面的appid 、 appkey 、appsecret 是怎么来的了? 

个推开发者中心  这里去注册一个,以自己的身份就可以注册的,不需要用公司的,注册之后,

第一步:应用管理  --》 创建应用

第二步:填写对应的信息

其中这里的Android包名Android签名是这样获取的   

Android包名:

在hbuilder上对应的项目里  

Android签名:

在你的电脑安卓 jdk(我的是1.8的jdk) ,进入这个bin目录  

然后这个样子 

输入 keytool -genkey -alias android.keystore -keyalg RSA -validity 36500 -keystore android.keystore

然后对应的填写信息即可 ,最后 keytool -list -keystore "android.keystore"  即可得到 安卓签名

这样,完成简单的注册

点击这里的应用信息:即  mui的manifest.json里面的信息~~~~~

然后,咱们开始调用后台 前端的写法以及后端的写法

(对了,先补充一下,这个推送是可以给某个用户推送消息和给全部用户推送消息的,当然啦,给全部用户推送消息的话,可以什么都不用传)

前端代码就这样:

/**
 * 获取客户端推送标识
 * 开发者可以调用“getClientInfo”方法获取推送标识信息,如IOS平台的token,应用的APPID和设置的Appkey等信息。
 */
function getPushInfo() {
	return plus.push.getClientInfo();
}

function getui(){
	var cidInfo = getPushInfo();
	console.log(JSON.stringify(cidInfo))
	mui.ajax(basePath + "/api/v1/app/user/geTui", {
		data: {"CID": JSON.stringify(cidInfo.clientid)},
		dataType: "json",
		type: "post",
		success: function(data) {
			if(data.code=="200"){
//				document.getElementById("tuiSong").innerHTML = parseInt(document.getElementById("tuiSong").innerHTML)+1;
			}else{
				console.log("网络异常")
			}
		}
	});
}

后端代码:

maven路径 

<repositories>
    <repository>
        <id>getui-nexus</id>
        <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
    </repository>
 </repositories>

<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-http</artifactId>
    <version>4.1.0.1</version>
</dependency>

import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.exceptions.RequestException;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.LinkTemplate;
import com.gexin.rp.sdk.template.style.Style0;


/**
* 给某个用户推送消息
*/
	@PostMapping(value="geTui")
	public R geTui(@RequestParam(value="CID")String CID) throws Exception {
		String geTui = geTui(CID);
		if(geTui.equals("ok")) {
			return R.ok(200, "推送成功");
		}else {
			return R.ok(100, "推送失败");
		}
		
	}


public static void main(String[] args) throws Exception {
	getGeTuis("标题", "内容", "http://www.baidu.com");
	geTui("772a654dd131b2eaf1b01f2ff9f98284");//772a654dd131b2eaf1b01f2ff9f98284 打包的cid
}



/**
* 这个类是给某个人推送消息(安装了app的)
*/
	    public static String geTui(String CID) throws Exception {
	    	IGtPush push = new IGtPush(AppPushConf.host, AppPushConf.appKey, AppPushConf.masterSecret);
	        LinkTemplate template = linkTemplateDemo(AppPushConf.appId,AppPushConf.appKey);
	        SingleMessage message = new SingleMessage();
	        message.setOffline(true);
	        // 离线有效时间,单位为毫秒,可选
	        message.setOfflineExpireTime(24 * 3600 * 1000);
	        message.setData(template);
	        // 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
	        message.setPushNetWorkType(0);
	        Target target = new Target();
	        target.setAppId(AppPushConf.appId);
	        target.setClientId(CID);
	        //target.setAlias(Alias);
	        IPushResult ret = null;
	        try {
	            ret = push.pushMessageToSingle(message, target);
	        } catch (RequestException e) {
	            e.printStackTrace();
	            ret = push.pushMessageToSingle(message, target, e.getRequestId());
	        }
	        if (ret != null) {
	        	System.out.println(ret.getResponse().toString());
				return "ok";
	        } else {
				return "error";
	        }
	    }

/**
	 * 这个类是给全部人推送消息(安装了app的)
	 * 
	 */
	public static Map<String, Object> getGeTuis(String title,String content,String url) throws IOException {
    	IGtPush push = new IGtPush(AppPushConf.host, AppPushConf.appKey, AppPushConf.masterSecret);
        // 定义"点击链接打开通知模板",并设置标题、内容、链接
        LinkTemplate template = new LinkTemplate();
        template.setAppId(AppPushConf.appId);
        template.setAppkey(AppPushConf.appKey);
//        template.setDuration(begin, end);
        template.setTitle(title);
        template.setText(content);
        template.setUrl(url);
        
        List<String> appIds = new ArrayList<String>();
        appIds.add(AppPushConf.appId);

        // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)
        AppMessage message = new AppMessage();
        message.setData(template);
        message.setAppIdList(appIds);
        message.setOffline(true);
        message.setOfflineExpireTime(1000 * 600);
        IPushResult ret = push.pushMessageToApp(message);
        System.out.println(ret.getResponse().toString());
        return ret.getResponse();
    }


public static LinkTemplate linkTemplateDemo(String appId,String appKey) {
	        LinkTemplate template = new LinkTemplate();
	        // 设置APPID与APPKEY
	        template.setAppId(appId);
	        template.setAppkey(appKey);

	        Style0 style = new Style0();
	        // 设置通知栏标题与内容
	        style.setTitle("看书啦");
	        style.setText("读好书,好读书,读书好");
	        // 配置通知栏图标
	        style.setLogo("icon.png");
	        // 配置通知栏网络图标
	        style.setLogoUrl("");
	        // 设置通知是否响铃,震动,或者可清除
	        style.setRing(true);
	        style.setVibrate(true);
	        style.setClearable(true);
	        template.setStyle(style);

	        // 设置打开的网址地址
	        template.setUrl("http://www.baidu.com/");
	        return template;
	    }


注意: 我这里的 AppPushConf.host,  AppPushConf.appKey,  AppPushConf.masterSecret  是这样得到的:

就是这一坨了

好,代码到这里就结束了,后台调用第三方平台接口,前端调用 ,欢迎下面评论。欢迎指正。如还有什么不懂的加我 QQ:517861659 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值