集成极光推送-服务端

  1. 客户端集成(略)
    将生成一个 Registration ID,形如 171976fa8ae931b4e93

  2. 服务端集成:

  • 依赖
"cn.jpush.api:jpush-client:3.4.3"
  • 推送代码

package com.wise.service.configuration;

import cn.hutool.core.util.RandomUtil;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosAlert;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
import com.alibaba.fastjson.JSON;
import com.wise.framework.exception.Excep;
import com.wise.model.proxy.ProxyErrMsgs;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import javax.annotation.PostConstruct;
import java.util.Collection;

/**
 * @author futao
 * @date 2019/12/20.
 */
@Slf4j
@Configuration
public class JpushClientConfiguration {

    @Autowired
    private Environment environment;
   
    private static Environment environmentHolder;

    /**
     * @PostConstruct 注解的方法将会在依赖注入完成后被自动调用。
     */
    @PostConstruct
    public void injectEnvironment() {
        JpushClientConfiguration.environmentHolder = environment;
    }

    /**
     * 推送消息给指定的用户
     *
     * @param jPushClient         客户端配置
     * @param registrationIds     要推送的目的用户
     * @param message             提示消息
     * @param title               标题
     * @param noVisualableMessage 透传消息
     */
    public static void push(JPushClient jPushClient, Collection<String> registrationIds, String title, String message, Object noVisualableMessage) {
        String messageUUID = RandomUtil.simpleUUID();
        PushPayload.Builder builder = PushPayload.newBuilder()
                //接收设备类型
                .setPlatform(Platform.all())
                //消息ID--用于防止 api 调用端重试造成服务端的重复推送而定义的一个标识符。
//                .setCid("03b6bf760c86f9fe77c0caef-")
                //此部分内容不会展示到通知栏上--透传给 App
                .setMessage(Message.newBuilder().setMsgContent(noVisualableMessage != null ? JSON.toJSONString(noVisualableMessage) : "{}").build())
                //title是标题,alert是内容
                .setNotification(Notification.newBuilder()
//                        .setAlert(message)
                        .addPlatformNotification(
                                IosNotification
                                        .newBuilder()
                                        //子标题展示不出来
                                        .setAlert(IosAlert.newBuilder().setTitleAndBody(title, null, message).build())
                                        //IOS角标
//                                        .incrBadge(1)
                                        //推送唤醒
                                        .setContentAvailable(true)
                                        //通知声音
                                        .setSound("default")
                                        .build()
                        )
                        .addPlatformNotification(
                                AndroidNotification
                                        .newBuilder()
                                        .setTitle(title)
                                        .setAlert(message)
                                        //消息,振动,呼吸灯类型           doc:  https://community.jiguang.cn/question/150550
                                        .setAlertType(7)
                                        .build()
                        )
                        .build())
                .setOptions(Options.newBuilder().setApnsProduction(environmentHolder.acceptsProfiles("pro")).build());
        if (CollectionUtils.isNotEmpty(registrationIds)) {
            //接收对象
            builder.setAudience(Audience.registrationId(registrationIds));
        } else {
            builder.setAudience(Audience.all());
        }
        PushPayload payload = builder
                .build();
        try {
            log.info("【{}】before极光消息推送-body:{}", messageUUID, JSON.toJSONString(payload));
            PushResult pushResult = jPushClient.sendPush(payload);
            log.info("【{}】极光消息推送成功结果:{}", messageUUID, JSON.toJSONString(pushResult));
        } catch (APIConnectionException | APIRequestException e) {
            log.error("【{}】消息推送失败", messageUUID, e);
            throw Excep.le(ProxyErrMsgs.ERR_100300100009);
        }
    }
}

  • 注意点:
    IOS区分开发环境与生产环境,需要设置.setOptions(Options.newBuilder().setApnsProduction(environmentHolder.acceptsProfiles("pro")).build());。且IOS打包的时候需要选择是开发环境还是正式环境,否则消息推送不到。Android不区分环境。
  • 环境问题:可以将IOS获取到的 Registration ID到管理后台查看注册到了什么环境,从而得知IOS的打包环境是否错误。
    image.png
image.png
image.png

当选择了开发环境,且预估人数为1,说明该IOS设备注册到了极光的开发环境。


image.png
  • 当选择了正式环境,再查询该Registration ID。发现预估人数为0,是正常的,因为这台设备注册在了开发环境。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容

  • 在足球的世界中,两种特质的人不朽。 一类是踢球风格成为流行风潮;一类人是执教战术为足球的发展烙下深深的印记;即便其...
    小赵营阅读 103评论 0 0
  • 昨天简书一哥来武汉举办《洋葱阅读法》分享会,我是以志愿者的身份协助并且参与其中。活动结束后,还和行动派的小伙伴们一...
    容容up阅读 523评论 0 1
  • 很久很久以前,在一个小村庄里住着一个年老的掌灯人。每天,他都会清洁和擦拭他的灯笼,让那灯火保持明亮。他仔细地照顾着...
    微笑如你_阳光未眠阅读 2,013评论 0 1
  • jdrzs笙阅读 196评论 0 0
  • 夜深人静的时候你会想念谁 是年迈的老母亲 还是年幼调皮的孩子 还是与你相濡以沫的亲人 是你的红颜吗 还是当年同桌的...
    喝醉的犀牛阅读 203评论 0 1