热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

小米推送Java代码

今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

maven

 
  com.xiaomi
  json-simple
  1.1.1
 
 
  com.xiaomi
  MiPush_SDK_Server
  2.2.18
 

java util

package com.tjg99.commons.util;
import com.xiaomi.xmpush.server.Constants;
import com.xiaomi.xmpush.server.Message;
import com.xiaomi.xmpush.server.Sender;
import com.xiaomi.xmpush.server.Sender.BROADCAST_TOPIC_OP;
import net.sf.json.JSONObject;
import org.json.simple.parser.ParseException;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 小米推送工具类
 **/
public class MiPushUtil {
  private static String APP_SECRET_KEY_ANDROID = "asdasdasdasdasdasd";
  private static String APP_SECRET_KEY_IOS = "asdasdasdasdasd==";
  private static String MY_PACKAGE_NAME = "com.tjg99";
  /**
   * 向所有设备发送推送
   * @param messagePayload 消息
   * @param title     消息标题
   * @param description  消息描述
   * @param ads_type    消息类型
   * @param ads_links   消息链接
   * @throws IOException
   * @throws ParseException
   **/
  public static void sendAllBroadcast(String messagePayload, String title, String description, String ads_type,
                    String ads_links) throws IOException, ParseException {
    Constants.useOfficial();
    Map map = new HashMap();
    map.put("ads_type", ads_type);
    map.put("ads_links", ads_links);
    Message message = new Message.Builder().title(title).description(description).payload(messagePayload)
        .extra("data", JSONObject.fromObject(map).toString()).restrictedPackageName(MY_PACKAGE_NAME)
        .notifyType(1).passThrough(0) // 使用默认提示音提示
        .build();
    //安卓推送
    Sender sender_android = new Sender(APP_SECRET_KEY_ANDROID);
    // 根据topicList做并集运算, 发送消息到指定一组设备上
    sender_android.broadcastAll(message, 3);
    //ios推送
    Sender sender_ios = new Sender(APP_SECRET_KEY_IOS);
    // 根据topicList做并集运算, 发送消息到指定一组设备上
    sender_ios.broadcastAll(message, 3);
  }
  /**
   * 指定标签推送(推送指定类型用户)
   * @param messagePayload 消息
   * @param title     消息标题
   * @param description  消息描述
   * @param ads_type    消息类型
   * @param ads_links   消息链接
   * @param topicList   指定推送类型
   * @throws IOException
   * @throws ParseException
   **/
  public static void sendBroadcast(String messagePayload, String title, String description, String ads_type,
                   String ads_links, List topicList) throws IOException, ParseException {
    Constants.useOfficial();
    Map map = new HashMap();
    map.put("ads_type", ads_type);
    map.put("ads_links", ads_links);
    Message message = new Message.Builder().title(title).description(description).payload(messagePayload)
        .extra("data", JSONObject.fromObject(map).toString()).restrictedPackageName(MY_PACKAGE_NAME)
        .notifyType(1).passThrough(0) // 使用默认提示音提示
        .build();
    // 安卓推送
    Sender sender_android = new Sender(APP_SECRET_KEY_ANDROID);
    // 根据topicList做并集运算, 发送消息到指定一组设备上
    sender_android.multiTopicBroadcast(message, topicList, BROADCAST_TOPIC_OP.UNION, 3);
    // ios推送
 //Constants.useSandbox();
    Sender sender_ios = new Sender(APP_SECRET_KEY_IOS);
    // 根据topicList做并集运算, 发送消息到指定一组设备上
    sender_ios.multiTopicBroadcast(message, topicList, BROADCAST_TOPIC_OP.UNION, 3);
  }
  /**
   * 指定alias推送(单个或多个)
   * @param messagePayload 消息
   * @param title     消息标题
   * @param description  消息描述
   * @param ads_type    消息类型
   * @param ads_links   消息链接
   * @param aliasList   指定alias
   * @throws IOException
   * @throws ParseException
   **/
  public static void sendMessageToAliases(String messagePayload, String title, String description, String ads_type,
                      String ads_links, List aliasList) throws IOException, ParseException {
    Constants.useOfficial();
    Map map = new HashMap();
    map.put("ads_type", ads_type);
    map.put("ads_links", ads_links);
    Message message = new Message.Builder().title(title).description(description).payload(messagePayload)
        .extra("data", JSONObject.fromObject(map).toString()).restrictedPackageName(MY_PACKAGE_NAME)
        .notifyType(1).passThrough(0) // 使用默认提示音提示
        .build();
    //安卓推送
    Sender sender_android = new Sender(APP_SECRET_KEY_ANDROID);
    sender_android.sendToAlias(message, aliasList, 3);
    //ios推送
 //Constants.useSandbox();
    Sender sender_ios = new Sender(APP_SECRET_KEY_IOS);
    sender_ios.sendToAlias(message, aliasList, 3);
  }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接


推荐阅读
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • 如何解决TS1219:实验性装饰器功能可能在未来版本中更改的问题
    本文介绍了两种方法来解决TS1219错误:通过VSCode设置启用实验性装饰器,或在项目根目录下创建配置文件(jsconfig.json或tsconfig.json)。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • Visual Studio 2019 安装指南
    作为一名拥有三年经验的程序员,由于长期专注于C语言,我意识到自己的技术栈过于单一。在转型为Android驱动开发工程师后,这种局限性更加明显。本文将介绍如何安装Visual Studio 2019,并配置C++开发环境,以帮助读者拓宽技术视野。 ... [详细]
  • 本文介绍了一种支付平台异步风控系统的架构模型,旨在为开发类似系统的工程师提供参考。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
  • Manacher算法详解:寻找最长回文子串
    本文将详细介绍Manacher算法,该算法用于高效地找到字符串中的最长回文子串。通过在字符间插入特殊符号,Manacher算法能够同时处理奇数和偶数长度的回文子串问题。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • Python多线程详解与示例
    本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
author-avatar
默然b并不是我的选择
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有