我是靠谱客的博主 要减肥白猫,最近开发中收集的这篇文章主要介绍消息推送-个推 简易工具类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本工具类只是抽取了官方demo中的部分,实现简单的消息推送(群推+单推), 更加多的功能请参考官方文档。

使用springboot集成,构建工具采用gradle

引入相关jar包:

compile("com.gexin.platform:gexin-rp-sdk-http:4.0.1.17")
compile("com.gexin.platform:gexin-rp-sdk-template:4.0.0.16")

maven引入方式:

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

<dependency>
  <groupId>com.gexin.platform</groupId>
  <artifactId>gexin-rp-sdk-template</artifactId>
  <version>4.0.0.16</version>
</dependency>

相关配置信息我写在配置文件里:

这些信息从个推官方开发者中心创建的应用获取:

然后工具类

GeTuiUtil:
package com.hsny.common.util.getui;

import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.PushResult;
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.NotificationTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
import com.hsny.common.constant.ErrorCode;
import com.hsny.common.vo.ResultVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.*;

/**
 * @Author ouzhicheng
 * @Date 2018/12/13  11:20
 */
@Component
public class GeTuiUtil {

    //定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
    private static String appId;
    private static String appKey;
    private static String masterSecret;
    private static String url;

    @Value("${getui.appId}")
    public void setAppId(String appId2) {
        appId = appId2;
    }

    @Value("${getui.appKey}")
    public void setAppKey(String appKey2) {
        appKey = appKey2;
    }

    @Value("${getui.masterSecret}")
    public void setMasterSecret(String masterSecret2) {
        masterSecret = masterSecret2;
    }

    @Value("${getui.url}")
    public void setUrl(String url2) {
        url = url2;
    }

    /**
     * 推送到所有app用户
     * @param title 通知栏主题
     * @param content 通知栏内容
     * @param transmissionContent 透传消息
     * @return
     */
    public static Map pushMessageToApp(String title,String content,String transmissionContent){
        try{
            IGtPush push = new IGtPush(url, appKey, masterSecret);
            push.connect();

            // 定义"点击链接打开通知模板",并设置标题、内容、链接
            NotificationTemplate template=notificationTemplate(title,content,transmissionContent);

            List<String> appIds = new ArrayList<String>();
            appIds.add(appId);

            // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)
            AppMessage message = new AppMessage();
            message.setData(template);
            message.setAppIdList(appIds);
            message.setOffline(true);
            //离线过期时间 24h
            message.setOfflineExpireTime(1000 * 60 * 24);

            IPushResult ret = push.pushMessageToApp(message);
            System.out.println(ret.getResponse().toString());
            return ret.getResponse();
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 推送到单个app用户
     * @param title 通知栏主题
     * @param content 通知栏内容
     * @param transmissionContent 透传消息
     * @param clientId 推送客户端id
     * @return
     */
    public static Map pushMessageToSingle(String title,String content,String transmissionContent,String clientId) throws Exception{
        IGtPush push = new IGtPush(url, appKey, masterSecret);
        NotificationTemplate template=notificationTemplate(title,content,transmissionContent);
        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(appId);
        target.setClientId(clientId);
        //别名推送
        //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) {
            return ret.getResponse();
        } else {
            return null;
        }
    }

    private static NotificationTemplate notificationTemplate(String title,String content,String transmissionContent) {
        NotificationTemplate template = new NotificationTemplate();
        // 设置APPID与APPKEY
        template.setAppId(appId);
        template.setAppkey(appKey);
        // 设置通知栏标题与内容
        template.setTitle(title);
        template.setText(content);
        // 配置通知栏图标
        template.setLogo("icon.png");
        // 配置通知栏网络图标
        template.setLogoUrl("");
        // 设置通知是否响铃,震动,或者可清除
        template.setIsRing(true);
        template.setIsVibrate(true);
        template.setIsClearable(true);
        // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
        template.setTransmissionType(1);
        template.setTransmissionContent(transmissionContent);
        // 设置定时展示时间
        // template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
        return template;
    }
}

ios推送可见官方文档

最后

以上就是要减肥白猫为你收集整理的消息推送-个推 简易工具类的全部内容,希望文章能够帮你解决消息推送-个推 简易工具类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部