栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

App推送消息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

App推送消息

首先文档链接:开发者中心

上代码:

列播:
package com.cqjd.message.service.impl;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.cqjd.message.constant.AppPushFilterKeyConstant;
import com.cqjd.message.enums.MessageActionEnum;
import com.cqjd.message.pojo.po.StaffUserDeviceTokenPO;
import com.cqjd.message.pojo.query.AppPayload;
import com.cqjd.message.pojo.query.AppPushBody;
import com.cqjd.message.pojo.query.AppPushFilterQuery;
import com.cqjd.message.pojo.query.AppPushQuery;
import com.cqjd.message.service.IAppPushService;
import com.cqjd.message.service.IStaffUserDeviceTokenService;
import com.cqjd.message.test.Test;
import com.cqjd.mq.dto.MessageDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.batik.gvt.CompositeGraphicsNode;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Value;

import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


@Service
@Slf4j
public class IAppPushServiceImpl implements IAppPushService {


    @Resource
    private IStaffUserDeviceTokenService staffUserDeviceTokenService;

    @Value("${appPush.appKey}")
    private String appKey;

    @Value("${appPush.masterKey}")
    private String masterKey;

    @Value("${appPush.url}")
    private String appPushUrl;

    
    public static final String PUSH_TYPE_LIST = "listcast";

    
    public static final String PUSH_TYPE_GROUP = "groupcast";

    
    public void sendList(String deviceTokens, String title, String content){
        AppPushBody body = new AppPushBody();
        body.setText(title);
        body.setTitle(content);
        AppPayload payload = new AppPayload();
        payload.setBody(body);
        AppPushQuery query = new AppPushQuery();
        query.setAppKey(appKey);
        query.setType(PUSH_TYPE_LIST);
        query.setPayload(payload);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        query.setTimestamp(timestamp);
        query.setDeviceTokens(deviceTokens);
        String postBody = JSONObject.toJSonString(query, SerializerFeature.WriteMapNullValue);
        send(postBody);
    }

    public void send(String postBody) {
        String sign = null;
        sign = DigestUtils.md5Hex(("POST" + appPushUrl + postBody + masterKey).getBytes(StandardCharsets.UTF_8));
        String url = appPushUrl + "?sign=" + sign;
        log.info("start url:{} body:{}", url, postBody);
        String result = HttpRequest.post(url)
                .header(Header.CONTENT_TYPE, "application/json")
                .body(postBody)
                .execute().body();
        log.info("result:{}", result);
    }



    @Override
    public void sendMessage(Long userId, String title, String content) {
        StaffUserDeviceTokenPO po = staffUserDeviceTokenService.selectById(userId);
        if(ObjectUtil.isNull(po)){
            log.info("用户userId:{}未绑定设备token,推送失败", userId);
        }
        sendList(po.getDeviceToken(), title, content);
    }

 
}
组播:
   @Override
    public void sendMessageByProject(Long projectId, String title, String content) {
        List> list = new ArrayList<>();
        Map map = new HashMap<>();
        map.put("tag", AppPushFilterKeyConstant.PROJECT + projectId);
        list.add(map);
        AppPushFilterQuery appPushFilterQuery = new AppPushFilterQuery();
        appPushFilterQuery.setAnd(list);
        sendGroup(appPushFilterQuery, title, content);
    }

    public void sendGroup(AppPushFilterQuery appPushFilterQuery, String title, String content){
        AppPushBody body = new AppPushBody();
        body.setText(title);
        body.setTitle(content);
        AppPayload payload = new AppPayload();
        payload.setBody(body);
        AppPushQuery query = new AppPushQuery();
        query.setAppKey(appKey);
        query.setType(PUSH_TYPE_GROUP);
        query.setPayload(payload);
        String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
        query.setTimestamp(timestamp);
        query.setFilter(appPushFilterQuery);
        String postBody = JSONObject.toJSonString(query, SerializerFeature.WriteMapNullValue);
        send(postBody);
    }

一些相关的类

@Data
public class AppPushBody {
    @JSonField(name = "title")
    private String title;
    @JSonField(name = "text")
    private String text;
    @JSonField(name = "after_open")
    private String afterOpen = "go_activity";
    @JSonField(name = "activity")
    private String activity = "com.hzx.azq_my.ui.activity.msg.MsgCenterActivity";
}
@Data
public class AppPayload {
    @JSonField(name = "display_type")
    private String displayType = "notification";
    @JSonField(name = "body")
    private AppPushBody body;
}
@Data
public class AppPushQuery {
    @JSonField(name = "appKey")
    private String appKey;
    @JSonField(name = "timestamp")
    private String timestamp;
    @JSonField(name = "type")
    private String type;
    @JSonField(name = "device_tokens")
    private String deviceTokens;
    @JSonField(name = "payload")
    private AppPayload payload;
    @JSonField(name = "mipush")
    private String miPush = "true";
    @JSonField(name = "mi_activity")
    private String miActivity = "com.hzx.azq_my.ui.activity.msg.MsgCenterActivity";
    @JSonField(name = "filter")
    private AppPushFilterQuery filter;
}
@Data
public class AppPushFilterQuery {

    @JSonField(name = "and")
    private List> and;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号