文档章节

java服务端集成小米推送

skygongle
 skygongle
发布于 2016/12/23 15:21
字数 524
阅读 120
收藏 0

MiPush_SDK_Server_2_2_17

#单元测试

测试广播发送所有client

 PushMsg p = PushMsg.Builder
                .create()
                .ios()
                .passThrough()
//                .title("xx")
                .content("xxx")
                .extra("json", " {\"code\":0,\"count\":88888888888}")
                .build();
        Result result = miPushManager.pushMsg(p);
        System.out.println("发送结果" + result.toString());

#发送方法

@Component
public class MiPushManager {

    private final static int PASS_THROUGH_MESSAGE = 0;//1表示透传消息
    private final static int NOTIFICATION_MESSAGE = 0;//0表示通知栏消息
    private final static int PASS_THROUGH = NOTIFICATION_MESSAGE;//1表示透传消息,0表示通知栏消息

    private final static int DEFAULT_ALL = -1;
    private final static int DEFAULT_SOUND = 1; // 使用默认提示音提
    private final static int DEFAULT_VIBRATE = 2; // 使用默认震动提示
    private final static int DEFAULT_LIGHTS = 4; // 使用默认led灯光提示
    private final static int NOTIFY_TYPE = DEFAULT_ALL;


    @Value("${mipush.model}")
    private String model;
    @Value("${mipush.androidPackageName}")
    private String androidPackageName;
    @Value("${mipush.androidAppSecret}")
    private String androidAppSecret;
    @Value("${mipush.iosPackageName}")
    private String iosPackageName;
    @Value("${mipush.iosAppSecret}")
    private String iosAppSecret;



    public Result pushMsg(PushMsg pushMsg) throws Exception {
        reStartPush(pushMsg.getDeviceType());
        Sender sender = null;
        Message message = null;
        if (pushMsg.getDeviceType().value == DeviceType.ANDROID.value) {
            sender = new Sender(androidAppSecret); //需要根据appSecert来发送
            ////1表示透传消息 //0表示通知栏消息
            Message.Builder b = new Message.Builder()
                    .title(pushMsg.getTitile())
                    .description(pushMsg.getContent())
                    .payload(pushMsg.getContent())
                    .restrictedPackageName(androidPackageName)//设置包名
                    .passThrough(pushMsg.isPassThroughFlag() ? 1 : 0)  //消息使用透传方式
                    .notifyType(NOTIFY_TYPE) // 使用默认提示音提示
                    .enableFlowControl(true);//控制消息是否需要进行平缓发送

            Iterator it = pushMsg.getExtra().entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<String, String> entry = (Map.Entry) it.next();
                b.extra(entry.getKey(), entry.getValue());
            }
            message = b.build();
        } else if (pushMsg.getDeviceType().value == DeviceType.IOS.value) {
            sender = new Sender(iosAppSecret); //需要根据appSecert来发送
            Message.IOSBuilder b = new Message.IOSBuilder()
                    .description(pushMsg.getContent())
                    .badge(1);// 数字角标

            Iterator it = pushMsg.getExtra().entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<String, String> entry = (Map.Entry) it.next();
                b.extra(entry.getKey(), entry.getValue());
            }

            message = b.build();

        }
        Result result = null;
        //执行发送操作
        if (pushMsg.getSendType() == 0) { //broadcastAll
            result = sender.broadcastAll(message, 0);
        }
        //TODO

        return result;
    }

#push bean 


public class PushMsg {
    private MiPushManager.DeviceType deviceType;
    private String titile;
    private String content;
    private Map<String, String> extra = new HashMap<>();
    private boolean passThroughFlag = false;
    private int sendType = 0;//0 广播,1 topic

    public int getSendType() {
        return sendType;
    }

    public MiPushManager.DeviceType getDeviceType() {
        return deviceType;
    }

    public String getTitile() {
        return titile;
    }

    public String getContent() {
        return content;
    }

    public Map<String, String> getExtra() {
        return extra;
    }

    public boolean isPassThroughFlag() {
        return passThroughFlag;
    }

    public static class Builder {

        PushMsg p = new PushMsg();

        public static Builder create() {
            return new Builder();
        }

        public Builder ios() {
            this.p.deviceType = MiPushManager.DeviceType.IOS;
            return this;
        }

        public Builder android() {
            this.p.deviceType = MiPushManager.DeviceType.ANDROID;
            return this;
        }

        public Builder passThrough() {
            this.p.passThroughFlag = true;
            return this;
        }


        /**
         * 注意:IOS推送不能设置title
         */
        public Builder title(String titile) {
            this.p.titile = titile;
            return this;
        }

        public Builder content(String content) {
            this.p.content = content;
            return this;
        }

        public Builder extra(String k, String v) {
            p.getExtra().put(k, v);
            return this;
        }

        public PushMsg build() {
            return p;
        }
    }
}


© 著作权归作者所有

skygongle
粉丝 0
博文 2
码字总数 788
作品 0
浦东
高级程序员
私信 提问
加载中

评论(1)

m
miaomiaogong1
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的推送,我们项目用的就是GoEasy推送,他们提供的OTP (one-time-password)能有效杜绝他人通过在页面上获取 appkey的方式,进行非法操作,十分安全!此外GoEasy目前除了在中国有服务器外还在美国,新加坡也开了服务器来支持外海推送的需求,据他们客服说接下来还会有更多的机房在世界各地……如果有全球推送需求的项目可以考虑它。
谁有完整的小米推送服务端Java代码

谁有完整的小米推送服务端Java代码,网上都是不完整的,没头没尾都看不懂

荭塵参夢
2017/10/12
113
2
CIM 3.5.0 版本更新,全面重写 websocket 实现

项目介绍 CIM是基于mina和netty框架下的推送系统,我们平常使用第三方的推送SDK,如极光推送,百度推送,小米推送,以及腾讯信鸽等来支撑自己的移动端的业务,或许有一些用户自己实现即时通讯...

远方夕阳
2018/08/24
797
4
JBoss EAP 7.0 Alpha 发布,支持 Java EE 7

Red Hat JBoss Enterprise Application Platform 7 (JBoss EAP 7) 是个中间件平台,基于开放标准构建,和 Java EE 7 规范编译。JBoss EAP 集成了 WildFly Application Server 10,包含其高可...

oschina
2015/11/16
1K
5
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:无 mz_java后台:伦比商城后台功能,新增2个推送功能 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:推送及秒币功能UI界...

风化的骆驼
2017/01/03
0
0
分享一个简单易用的RPC开源项目—Tatala

这个项目最早(2008年)是用于一个网络游戏的Cache Server,以及一个电子商务的Web Session服务。后来不断增加新的功能,除了Java还支持C#,到现在已经可以用它来开发网络游戏的服务器。等过些...

zijan
2014/04/08
0
1

没有更多内容

加载失败,请刷新页面

加载更多

一文读懂深度学习:从神经元到BERT

阿里妹导读:自然语言处理领域的殿堂标志 BERT 并非横空出世,背后有它的发展原理。今天,蚂蚁金服财富对话算法团队整理对比了深度学习模型在自然语言处理领域的发展历程。从简易的神经元到当...

阿里云云栖社区
14分钟前
4
0
诊断修复 TiDB Operator 在 K8s 测试中遇到的 Linux 内核问题

作者:张文博 Kubernetes(K8s)是一个开源容器编排系统,可自动执行应用程序部署、扩展和管理。它是云原生世界的操作系统。 K8s 或操作系统中的任何缺陷都可能使用户进程存在风险。作为 Pi...

TiDB
23分钟前
5
0
分享一个vue项目“脚手架”项目的实现步骤

搭建缘由 源于公司每次新启动一个由多人协同开发的项目都由负责人初始化项目之后,每个人再去从私服pull一下项目才开始开发。但是每次初始化工程都是一步步的造轮子,一个个依赖去安装,新建...

开元中国2015
今天
4
0
Odoo 自定义Widgets 基础教程(章节2)

大家好, 本文将进一步解释odoo widget 的相关原理,其中首先会讲述:1. 什么是widgets 中的继承;2. 为什么有很多 init : function 语法;3. widgets 系统结构; 首先,让我们来看看结构:(...

openerp
今天
3
0
我的Linux常用软件

我的Linux常用软件 本帖记录我在Linux下常用的软件,系统是Deepin Linux, 以备查询用, 不定期更新。 Sougou Pinyin 这个不用多说, 装系统第一个要找输入法。 TeamViewer Linux有时候需要远...

Frank1126lin
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部