• 移动app整合个推进行消息推送


    首先前端代码写好之后进行发行打包:

    然后再进行发行打包:

    然后登录个推官网:

    测试:

    点击推送,在手机端就可以获取到信息了.

    java代码测试:

    package com.cxy.bean;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.gexin.rp.sdk.base.IAliasResult;
    import com.gexin.rp.sdk.base.IBatch;
    import com.gexin.rp.sdk.base.IIGtPush;
    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.base.uitls.AppConditions;
    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.NotificationTemplate;
    import com.gexin.rp.sdk.template.TransmissionTemplate;
    import com.gexin.rp.sdk.template.style.Style0;
    
    public class GetuiUtils {
        
        /*AppID: 
        kk36iGrKYvAPFLdEVhfru6
        AppSecret: 
        qXTAXKDSye5hd2QA3FjsP2
        AppKey: 
        Jux7ogPLMUAybHJcSOmgC7
        MasterSecret: 
        II9oWPnaZK9heOl4keBmS9*/
    
        private static String appId = "kk36iGrKYvAPFLdEVhfru6";
        private static String appKey = "Jux7ogPLMUAybHJcSOmgC7";
        private static String masterSecret = "II9oWPnaZK9heOl4keBmS9";
        public static String host = "https://sdk.open.api.igexin.com/apiex.htm";
        public static String CID_A = "81a3d3c3bee1adb51d306771af2aeb6a";//在打包后的APP的js中获取 var cId = plus.push.getClientInfo().clientid;
        public static String CID_B = "bae837b470994d614f0773097b92dbf3";
        public static IGtPush push;
    
        static {
            push = new IGtPush(host, appKey, masterSecret);
        }
    
        /**
         * 绑定用户cid 别名
         *
         * @param Alias
         * @param CID
         * @return
         */
        public static boolean bindAlias(String alias, String CID) {
            IAliasResult bindSCid = push.bindAlias(appId, alias, CID);
            if (bindSCid.getResult()) {
                return true;
            }
            return false;
        }
    
        /**
         * 对单个用户推送消息
         *
         * @param alias
         * @param msg
         * @return
         */
        public static boolean pushMessageToSingle(String cid, String text, String transMsg) {
            IGtPush push = new IGtPush(host, appKey, masterSecret);
            NotificationTemplate template = notificationTemplate("title", text, transMsg);
            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(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 && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
                System.out.println(ret.getResponse().toString());
                if (ret.getResponse().get("result").toString().equals("ok") && ret.getResponse().containsKey("status")) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         * 指定应用的所有用户群发推送消息
         *
         * @param msg
         */
        public static boolean pushtoAPP(String text, String transMsg) {
            IGtPush push = new IGtPush(host, appKey, masterSecret);
    
            NotificationTemplate template = notificationTemplate("title", text, transMsg);
            AppMessage message = new AppMessage();
            message.setData(template);
    
            message.setOffline(true);
            //离线有效时间,单位为毫秒,可选
            message.setOfflineExpireTime(24 * 1000 * 3600);
            //推送给App的目标用户需要满足的条件
            AppConditions cdt = new AppConditions();
            List<String> appIdList = new ArrayList<String>();
            appIdList.add(appId);
            message.setAppIdList(appIdList);
            //手机类型
            List<String> phoneTypeList = new ArrayList<String>();
            //省份
            List<String> provinceList = new ArrayList<String>();
            //自定义tag
            List<String> tagList = new ArrayList<String>();
    
            cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList);
            cdt.addCondition(AppConditions.REGION, provinceList);
            cdt.addCondition(AppConditions.TAG, tagList);
            message.setConditions(cdt);
    
            IPushResult ret = push.pushMessageToApp(message, "msg_toApp");
    
            if (ret != null && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
                System.out.println(ret.getResponse().toString());
                if (ret.getResponse().get("result").toString().equals("ok")) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         * 对单个用户推送透传消息
         *
         * @param alias
         * @param title
         * @param content
         * @return
         */
        public static boolean pushTransMessageToSingle(String cid, String msg) {
            TransmissionTemplate template = transTemplate(cid, msg);
            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(cid);
            IPushResult ret = null;
            try {
                ret = push.pushMessageToSingle(message, target);
            } catch (RequestException e) {
                e.printStackTrace();
                ret = push.pushMessageToSingle(message, target, e.getRequestId());
            }
            if (ret != null && ret.getResponse() != null && ret.getResponse().containsKey("result")) {
                System.out.println(ret.getResponse().toString());
                if (ret.getResponse().get("result").toString().equals("ok") && ret.getResponse().containsKey("status")) {
                    return true;
                }
            }
            return false;
        }
    
        public static void pushMessageToIBatch(List<String> alias, String msg) {
            IBatch batch = push.getBatch();
            IPushResult ret = null;
            try {
                for (int i = 0; i < alias.size(); i++) {
                    // 构建客户a的透传消息a
                    constructClientTransMsg(alias.get(i), msg, batch);
                }
                // 构建客户B的点击通知打开网页消息b
                // constructClientLinkMsg(CID_B,"msgB",batch);
                ret = batch.submit();
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(ret.getResponse().toString());
        }
    
        private static NotificationTemplate notificationTemplate(String title, String text, String obj) {
            NotificationTemplate template = new NotificationTemplate();
            // 设置APPID与APPKEY
            template.setAppId(appId);
            template.setAppkey(appKey);
            // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
            template.setTransmissionType(1);
            template.setTransmissionContent(obj);
            // 设置定时展示时间
            // template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
            Style0 style = new Style0();
            // 设置通知栏标题与内容
            style.setTitle(title);
            style.setText(text);
            // 配置通知栏图标
            style.setLogo("XXX");
            // 配置通知栏网络图标
            //style.setLogoUrl("");
            // 设置通知是否响铃,震动,或者可清除
            style.setRing(true);
            style.setVibrate(true);
            style.setClearable(true);
            template.setStyle(style);
    
            return template;
        }
    
        private static TransmissionTemplate transTemplate(String cid, String msg) {
            TransmissionTemplate template = new TransmissionTemplate();
            // 设置APPID与APPKEY
            template.setAppId(appId);
            template.setAppkey(appKey);
            template.setTransmissionContent(msg);
            template.setTransmissionType(0); // 这个Type为int型,填写1则自动启动app
    
            return template;
        }
        //点击通知打开应用模板
        public static void constructClientTransMsg(String cid, String msg, IBatch batch) throws Exception {
    
            SingleMessage message = new SingleMessage();
            NotificationTemplate template = new NotificationTemplate();
    //        TransmissionTemplate template = new TransmissionTemplate();//自定义模板
            template.setAppId(appId);
            template.setAppkey(appKey);
            template.setTransmissionContent(msg);//消息内容
            template.setTransmissionType(1); // 这个Type为int型,填写1则自动启动app
            Style0 style = new Style0();        // 设置通知栏标题与内容
            style.setTitle("第一个通知");
            style.setText(msg);        // 配置通知栏图标
            style.setLogo("icon.png");        // 配置通知栏网络图标
            style.setLogoUrl("");//网络图标地址
            // 设置通知是否响铃,震动,或者可清除
            style.setRing(true);
            style.setVibrate(true);
            style.setClearable(true);
            template.setStyle(style);
    
            message.setData(template);
            message.setOffline(true);
            message.setOfflineExpireTime(60 * 60 * 1000);
    
            // 设置推送目标,填入appid和clientId
            Target target = new Target();
            target.setAppId(appId);
            target.setClientId(cid);
            batch.add(message, target);
        }
    
        //点击通知打开网页消息
        public static void constructClientLinkMsg(String cid, String msg, IBatch batch) throws Exception {
    
            SingleMessage message = new SingleMessage();
            LinkTemplate template = new LinkTemplate();
            template.setAppId(appId);
            template.setAppkey(appKey);
            template.setTitle("title");
            template.setText(msg);
            template.setLogo("push.png");
            template.setLogoUrl("logoUrl");
            template.setUrl("http://www.baidu.com");
    
            message.setData(template);
            message.setOffline(true);
            message.setOfflineExpireTime(60 * 1000);
    
            // 设置推送目标,填入appid和clientId
            Target target = new Target();
            target.setAppId(appId);
            target.setClientId(cid);
            batch.add(message, target);
        }
    
    }

    测试:

    public static void main(String[] args) throws IOException {
    
            IIGtPush push = new IGtPush(host, appKey, masterSecret);
            IBatch batch = push.getBatch();
    
            try {
                //构建客户a的透传消息a
                GetuiUtils.constructClientTransMsg(CID_A, "msgA", batch);
                //构建客户B的点击通知打开网页消息b
    //            constructClientLinkMsg(CID_B, "msgB", batch);
            } catch (Exception e) {
                e.printStackTrace();
            }
            batch.submit();
        }

    注意也可以进行异步推送,在springboot中使用@async这个来进行异步推送

    首先需要引入pom依赖:

    将下边的依赖放到maven项目的 pom.xml 中:
    <dependency>
        <groupId>com.gexin.platform</groupId>
        <artifactId>gexin-rp-sdk-http</artifactId>
        <version>4.1.0.0</version>
    </dependency>
    
    然后再增加一个repository到 pom.xml 中:
     <repositories>
        <repository>
            <id>getui-nexus</id>
            <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
        </repository>
     </repositories>
    在pom文件中引入:

    在安卓4.0以后需要花钱集成厂商sdk,由于厂商的系统会自动杀死相关未使用的app,从而导致不能推送,需要跟个推客服联系

     如果需要单独推送的话需要前端获取cid,然后存入数据,再进行存储,和推送

  • 相关阅读:
    oc之数组反序输出示例
    OC--有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 倒序输出字符串
    oc--截取字符串(从网址中截取用户名和密码)
    iOS 第七期考核题(字符串以及字典的使用 数组内容转换成字符串)
    iOS 第六期考核题(字典的使用)
    iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)
    Linux服务启动报错日志分析
    新手Linux命令-1
    新手Linux命令-2
    计划任务服务
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10373145.html
Copyright © 2020-2023  润新知