个推 推送消息到app

一、个推推送消息到app

1、引入依赖:

      <!--个推依赖-->
        <dependency>
            <groupId>com.getui.push</groupId>
            <artifactId>restful-sdk</artifactId>
            <version>1.0.0.15</version>
        </dependency>


2、后台代码:

package com.wxgc.base.getui.util;


import com.alibaba.fastjson.JSON;
import com.getui.push.v2.sdk.ApiHelper;
import com.getui.push.v2.sdk.GtApiConfiguration;
import com.getui.push.v2.sdk.api.PushApi;
import com.getui.push.v2.sdk.common.ApiResult;
import com.getui.push.v2.sdk.dto.req.Audience;
import com.getui.push.v2.sdk.dto.req.AudienceDTO;
import com.getui.push.v2.sdk.dto.req.Settings;
import com.getui.push.v2.sdk.dto.req.message.PushChannel;
import com.getui.push.v2.sdk.dto.req.message.PushDTO;
import com.getui.push.v2.sdk.dto.req.message.PushMessage;
import com.getui.push.v2.sdk.dto.req.message.android.AndroidDTO;
import com.getui.push.v2.sdk.dto.req.message.android.GTNotification;
import com.getui.push.v2.sdk.dto.req.message.android.ThirdNotification;
import com.getui.push.v2.sdk.dto.req.message.android.Ups;
import com.getui.push.v2.sdk.dto.req.message.ios.Alert;
import com.getui.push.v2.sdk.dto.req.message.ios.Aps;
import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO;
import com.getui.push.v2.sdk.dto.res.TaskIdDTO;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Slf4j
public class AppNoticeUtils {

    //单推
    public static boolean pushToSingleByCid(GtApiConfiguration configuration, String cid, String title, String content, String payload) {
        ApiHelper apiHelper = ApiHelper.build(configuration);
        PushApi pushApi = apiHelper.creatApi(PushApi.class);
        //推送消息体
        PushDTO<Audience> pushDTO = buildPushDTO(title, content, payload);
        //设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.addCid(cid);// cid
        //进行cid单推
        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
        if (apiResult.isSuccess()) {
            log.info("Push succeeded. cid:" + cid + ",msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
            return true;
        } else {
            log.info("Push failed. cid:" + cid + ",code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
            return false;
        }
    }

    //批量推
    public static boolean pushListByCid(GtApiConfiguration configuration, List<String> cidList, String title, String content, String payload) {
        ApiHelper apiHelper = ApiHelper.build(configuration);
        PushApi pushApi = apiHelper.creatApi(PushApi.class);
        //批量发送
        AudienceDTO audienceDTO = new AudienceDTO();

        PushDTO<Audience> pushDTO = buildPushDTO(title, content, payload);

        //创建消息
        ApiResult<TaskIdDTO> createApiResult = pushApi.createMsg(pushDTO);
        if (!createApiResult.isSuccess()) {
            log.info("批量推送:创建消息失败" + createApiResult.getMsg());
            log.error("批量推送:创建消息失败" + createApiResult.getMsg());
            return false;
        }
        // 设置接收人信息
        Audience audience = new Audience();
        pushDTO.setAudience(audience);
        audience.setCid(cidList);
        audienceDTO.setAudience(audience);
        audienceDTO.setTaskid(createApiResult.getData().getTaskId());
        audienceDTO.setAsync(true);

        ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushListByCid(audienceDTO);
        if (apiResult.isSuccess()) {
            log.info("Batch push succeeded. msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
            log.error("Batch push succeeded. msg:" + apiResult.getMsg() + ",data:" + apiResult.getData());
            return true;
        } else {
            log.info("Batch push failed. code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
            log.error("Batch push failed. code:" + apiResult.getCode() + ", msg: " + apiResult.getMsg());
            return false;
        }
    }


    //组装请求数据
    public static PushDTO<Audience> buildPushDTO(String tile, String content, String payload) {
        PushDTO<Audience> pushDTO = new PushDTO<>();
        // 设置推送参数
        pushDTO.setRequestId(System.currentTimeMillis() + "");

        //配置推送条件
        Settings settings = new Settings();
        pushDTO.setSettings(settings);

        //消息有效期,走厂商消息需要设置该值
        settings.setTtl(3600000);

        //安卓在线通道走个推推送时的消息体(在线通道不支持ios)
        PushMessage pushMessage = new PushMessage();
        pushDTO.setPushMessage(pushMessage);

        //通知消息
        GTNotification notification = new GTNotification();
        pushMessage.setNotification(notification);
        notification.setTitle(tile);//个推消息标题长度限制≤ 50字
        notification.setBody(content);//个推消息内容长度限制≤ 256字
        notification.setPayload(payload);
        notification.setClickType("payload");//之前打开应用首页,打开网页地址,打开应用内特定页面,当前设置纯通知,后续有需求可自定义选择

        //设置离线推送时的消息体
        PushChannel pushChannel = new PushChannel();

        //安卓离线厂商通道推送的消息体
        AndroidDTO androidDTO = new AndroidDTO();
        Ups ups = new Ups();

        //通知消息
        ThirdNotification thirdNotification = new ThirdNotification();
        ups.setNotification(thirdNotification);
        thirdNotification.setTitle(tile);//安卓厂商标题长度限制不统一,取最小值20汉字
        thirdNotification.setBody(content);//最小值50汉字
        thirdNotification.setPayload(payload);
        thirdNotification.setClickType("payload");
        androidDTO.setUps(ups);
        pushChannel.setAndroid(androidDTO);

        //ios离线apn通道推送的消息体
        Alert alert = new Alert();
        alert.setTitle(tile);
        alert.setBody(content);
        Aps aps = new Aps();
        aps.setContentAvailable(0);//0表示普通通知消息(默认为0);1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。苹果建议1小时最多推送3条静默消息
        aps.setSound("default");//自定义铃声:系统铃声设置为:default; 无声设置为:com.gexin.ios.silence,或不填
        aps.setAlert(alert);
        IosDTO iosDTO = new IosDTO();
        iosDTO.setAps(aps);
        iosDTO.setType("notify");//消息类型voip:voip语音推送,notify:apns通知消息
        pushChannel.setIos(iosDTO);
        pushDTO.setPushChannel(pushChannel);

        return pushDTO;
    }


    //测试
    public static void main(String[] args) {
        GtApiConfiguration gtApiConfiguration = new GtApiConfiguration();
        gtApiConfiguration.setAppId("XkCqfelJnR9FpCEIUUez35");
        gtApiConfiguration.setAppKey("8weznWhQHT9HKFDawZqha8");
        gtApiConfiguration.setMasterSecret("Pps2Wt7V0aA9V7Npo6nTT3");
        gtApiConfiguration.setDomain("https://restapi.getui.com/v2/");
        List<String> cidList = new ArrayList<>();
        cidList.add("4416d7064d27e38d31d6dc27fc09182e");
//        String coontent = "{\n" +
//                "       \"id\": \"2b13f7d8d7eaef037a8978adbe29ab86\",\n" +
//                "        }";

        String coontent = "{\"id\":\"2b13f7d8d7eaef037a8978adbe29ab86\"}";
        pushListByCid(gtApiConfiguration, cidList,"报警消息","有一条水稳拌合站数据预警",coontent);
    }

}

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Gateway worker是一种可以将消息APP iOS和Android的解决方案。通常情况下,这种技术需要服务器端与客户端进行交互来传达消息,但是Gateway worker的出现可以极大地简化这个过程,将消息的传递变得更加高效和简便。 Gateway worker的实现方法比较简单,需要在服务器端添加一个插件,使其可以与客户端实现双向通信。这个插件需要支持Swoole协议,这是一种最为流行的网络通信协议。通过这个插件,HTTP请求可以转换为WebSocket请求,从而实现消息的功能。 在使用Gateway worker消息时,通过设置一个设备ID和Token,可以将消息到iOS或Android设备。这个过程非常快速,基本上可以在几毫秒内完成。因此,Gateway worker尤其适合需要进行实时信息的应用程序。 在总结上述,Gateway worker可以快速高效地将消息APP iOS和Android,通过设置设备ID和Token,可以实现消息的快速传递。Gateway worker主要基于Swoole协议和WebSocket通信协议,因此在使用前需要对这些技术进行深入理解。但是,一旦掌握了这些知识,使用Gateway worker将变得非常容易和便利。 ### 回答2: Gatewayworker是一款支持消息的工具,可以将消息通过网关传输到移动应用程序(如iOS和Android)。使用Gatewayworker消息服务,需要先在开发者平台上创建一个应用程序,并生成对应的应用程序ID和应用程序Key。 在应用程序中,需要将Gatewayworker SDK集成到应用程序中,将应用程序ID和应用程序Key配置为Gatewayworker SDK的参数,并获取设备标识符(如设备ID、APNS或GCM的token等)。在使用Gatewayworker SDK的过程中,需要先向Gatewayworker服务器注册设备,然后才能够向设备消息。 要消息到设备,在应用程序中需要将消息封装为Gatewayworker SDK支持的格式,并指定接收消息的设备标识符。然后,将消息到Gatewayworker服务器,并由Gatewayworker服务器转发到接收方设备。接收方设备通过Gatewayworker SDK接收消息,并在应用程序中处理消息。 总的来说,Gatewayworker是一个强大的服务工具,使得移动应用程序开发人员可以方便地向iOS和Android设备消息,提高了应用程序的使用体验和用户满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值