app消息推送

复制代码
<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-http</artifactId>
    <version>4.1.2.1</version>
</dependency>
<repositories>
    <repository>
        <id>getui-nexus</id>
        <url>http://mvn.gt.getui.com/nexus/content/repositories/releases/</url>
    </repository>
</repositories>
复制代码
复制代码
public class AppPush {//以下参数找前端拿
        private static String appId = "xxxxxxxxxxx";
        private static String appKey = "xxxxxxxxxxx";
        private static String masterSecret = "xxxxxxxxxxxx";
        // 如果需要使用HTTPS,直接修改url即可
        //private static String url = "https://api.getui.com/apiex.htm";
        private static String url = "http://api.getui.com/apiex.htm";

    public static void AppPush(PushMessage pushMessage, List<String> appPushList) {
        IGtPush push = new IGtPush(url, appKey, masterSecret);
//
//        Style0 style = new Style0();
//        // STEP2:设置推送标题、推送内容
//        style.setTitle(pushMessage.getTitle());
//        style.setText(pushMessage.getContent());
//        style.setLogo(pushMessage.getLogo());
////        style.setLogo("push.png"); // 设置推送图标
//        // STEP3:设置响铃、震动等推送效果
//        style.setRing(true);  // 设置响铃
//        style.setVibrate(true);  // 设置震动
//
//        // STEP4:选择通知模板
//        NotificationTemplate template = new NotificationTemplate();
//        template.setAppId(appId);
//        template.setAppkey(appKey);
//        template.setStyle(style);
//        // 点击消息打开应用
//        template.setTransmissionType(1);
//        // 传递自定义消息
//        template.setTransmissionContent(JSONUtil.toJsonStr(pushMessage));
        NotificationTemplate template = buildNotificationTemplate(pushMessage);


        // STEP5:定义"AppMessage"类型消息对象,设置推送消息有效期等推送参数
        // 采用toList方案,定义ListMessage消息类型
//        List<String> appIds = new ArrayList<String>();
//        appIds.add(appId);
        ListMessage message = new ListMessage();
        message.setData(template);
//        message.setAppIdList(appIds);
        message.setOffline(true);
        // 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
        message.setPushNetWorkType(0);
        message.setOfflineExpireTime(1000 * 600);  // 时间单位为毫秒

        String contentId = push.getContentId(message);
        // 获取推送目标
        List targets = new ArrayList();
        for (String ap : appPushList) {
            Target target = new Target();
            target.setAppId(appId);
            target.setClientId(ap);
            targets.add(target);
        }

        // STEP6:执行推送,不采用toApp方案,采用toList方案
//        IPushResult ret = push.pushMessageToApp(message);
        IPushResult ret = push.pushMessageToList(contentId, targets);
        System.out.println(ret.getResponse().toString());

    }


    //通知栏透传模板
    public static NotificationTemplate buildNotificationTemplate(PushMessage pushMessage) {
        NotificationTemplate template = new NotificationTemplate();
        // 设置APPID与APPKEY
        template.setAppId(appId);
        template.setAppkey(appKey);

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

        Notify notify = new Notify();
        String intent = "intent:#Intent;action=android.intent.action.com.xiaokun.jzyz;launchFlags=0x14000000;component=/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title={0};S.content={1};S.payload=test;end";
        intent.replace("{0}", pushMessage.getTitle());
        intent.replace("{1}", pushMessage.getContent());
        notify.setTitle(pushMessage.getTitle());
        notify.setContent(pushMessage.getContent());
        notify.setIntent(intent);
        template.set3rdNotifyInfo(notify);

        // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动
        template.setTransmissionType(2);
        String o = JSONObject.toJSON(pushMessage).toString();
        System.out.println(o);
        template.setTransmissionContent(o);
        return template;
    }

    public static Map<String, Object> sendMessage(PushMessage pushMessage, List<String> appPushList) {
        try {
            // 使用透传模板
            TransmissionTemplate template = new TransmissionTemplate();
            // 1:收到通知直接激活app,2:客服端自行处理
            template.setTransmissionType(2);
            // 透传内容
            template.setTransmissionContent(pushMessage.getContent());
            template.setAppId(appId);
            template.setAppkey(appKey);
            APNPayload payload = new APNPayload();//设置ios
            payload.setAutoBadge("+1");
            payload.setContentAvailable(0);
            payload.setSound("default");
            payload.setAlertMsg(new APNPayload.SimpleAlertMsg(pushMessage.getTitle()));
            //在已有数字基础上加1显示,设置为-1时,在已有数
            template.setAPNInfo(payload);
            String intent = "intent:#Intent;action=android.intent.action.com.xiaokun.jzyz;launchFlags=0x14000000;component=/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title={0};S.content={1};S.payload=test;end";
            intent.replace("{0}", pushMessage.getTitle());
            intent.replace("{1}", pushMessage.getContent());
            Notify notify = new Notify();
            // 通知栏显示标题
            notify.setTitle(pushMessage.getTitle());
            // 通知栏内容
            notify.setContent(pushMessage.getContent());
            notify.setIntent(intent);
            // 设置第三方通知
            template.set3rdNotifyInfo(notify);

            ListMessage message = new ListMessage();
            message.setData(template);
            // 设置消息离线
            message.setOffline(true);
            // 离线消息有效时间为7天
            message.setOfflineExpireTime(1000 * 3600 * 24 * 7);
            //添加要推送的终端
            List<Target> targets = new ArrayList<Target>();
            for (String ap : appPushList) {
                Target target = new Target();
                target.setAppId(appId);
                target.setClientId(ap);
                targets.add(target);
            }

            //推送前通过该接口申请“ContentID”
            IGtPush push = new IGtPush(url, appKey, masterSecret);
            String contentId = push.getContentId(message);
            IPushResult ret = push.pushMessageToList(contentId, targets);
            System.out.println(ret);
            return ret.getResponse();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }


}
复制代码
@Data
public class PushMessage {
    private String title="故障通知";
    private String content;
    private String logo="push.png";
    private String payload;
}

 

posted @   古家杰  阅读(139)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示