APP消息推送-个推java端实现

实现效果

在这里插入图片描述

必要的依赖
    <!-- 个推sdk的依赖 -->
    <dependency>
        <groupId>com.gexin.platform</groupId>
        <artifactId>gexin-rp-sdk-http</artifactId>
        <version>4.0.1.17</version>
    </dependency>
    
<repositories>
    <repository>
        <id>getui-nexus</id>
        <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
    </repository>
</repositories>

虽然是按照个推官方文写法档引入,但是我的maven就是无法下载到,最后只能手动引入jar
在这里插入图片描述
在这里插入图片描述
手动引入的jar包还是放在maven下载失败的目录下,不要随便放,否则项目还是回报红
https://download.csdn.net/download/u012796085/10913164

一般流程
//1,从个推应用管理中获取参数 https://dev.getui.com/dev/#/login
private static String appId = "duPdyoiHn4926fsCDbuYu8";
private static String appKey = "SWrYn90wZv8jnVT3a68vm";
private static String masterSecret = "ZTqxZR6wSo7tnKum9WQuR6";
private static String url = "http://sdk.open.api.igexin.com/apiex.htm";
//2,构造IGtPush,代表在个推注册一个APP
IGtPush push = new IGtPush(url, appKey, masterSecret);
//3,定义一个个推模板
NotificationTemplate template = new NotificationTemplate();
//4,定义消息类型
AppMessage message = new AppMessage();
message.setData(template);
//5,发送消息
IPushResult ret = push.pushMessageToApp(message);

以上步骤根据业务实际需求更改,具体的属性下面都列出来了

IGtPush构造函数
host          非必填   推送os域名,如果不填自动检测用户网络,选择最快域名连接下发
appKey        必填     鉴定身份是否合法
masterSecret  必填     第三方客户端个推集成鉴权码,验证第三方合法性,在服务端推送鉴权时使用
useSSL        非必填   是否使用https接口调用,默认http

个推模板
1,打开应⽤模板
针对沉默⽤户,发送推送消息,点击消息栏的通知可直接激活启动应⽤,提升应⽤的转化率
NotificationTemplate
setAppId     必填  设定接收的应⽤
setAppkey    必填  ⽤于鉴定身份是否合法
setDuration  非必填  收到消息的展示时间
transmissionContent   必填    2048中/英字符,消息内容,不⽀持转义字符
setTransmissionType   必填    收到消息是否⽴即启动应⽤: 1为⽴即启动,2则⼴播等待客户端⾃启动
setStyle              必填    知栏消息布局样式
2,打开⽹⻚模板
推送⼴促销活动,⽤户点击通知栏信息,直接打开到指定的促销活动⻚⾯,推送直接到达指定⻚⾯,免去了中间过程的⽤户流失
LinkTemplate
setAppId     必填  设定接收的应⽤
setAppkey    必填  ⽤于鉴定身份是否合法
setDuration  非必填  收到消息的展示时间
setUrl       必填    200中/英字符,点击通知打开网页地址
setStyle              必填    知栏消息布局样式
3,启动下载任务模板
应⽤有更新,点击推送的更新通知,弹出下载弹窗,点击可启动应⽤更新下载。
NotyPopLoadTemplate
setAppId     必填  设定接收的应⽤
setAppkey    必填  ⽤于鉴定身份是否合法
setDuration  非必填  收到消息的展示时间
setLoadUr       必填    200中/英字符,下载地址
setLoadTitle    必填    下载标题
setLoadIcon     必填    下载图标 ,本地需要加入file://,网络图标直接写网络地址
setPopTitle     必填    40中/英字 弹出框标题
setPopContent   必填    600中/英字 弹出框内容
setPopImage     必填    200中/英字 符弹出框图标
setPopButton1   必填    4中/英字 弹出框确认按钮文本显示
setPopButton2   必填    4中/英字 弹出框取消按钮文本显示
setAutoInstal   非必填  是否自动安装,默认false
setActived      非必填  安装完成后是否自动启动程序,默认false
setStyle              必填    知栏消息布局样式
4,透传消息模板
⾃定义通知栏样式不想使⽤默认的通知栏样式,即可使⽤消息透传的形式,⾃定义通知栏展现形式,使发送的通知更醒⽬,更突出
TransmissionTemplate
setAppId     必填  设定接收的应⽤
setAppkey    必填  ⽤于鉴定身份是否合法
setDuration  非必填  收到消息的展示时间
setTransmissionContent       必填    2048中/英字符,透传内容,不⽀持转义字符
setTransmissionType          必填     收到消息是否⽴即启动应⽤,1为⽴即启动,2则⼴播等待客户端⾃启动
setStyle              必填    知栏消息布局样式
5,消息撤回模板
因为操作失误导致推送错误的消息,即可使⽤消息撤回模板,指定需要撤回的消息进⾏撤回
指定⽤户推送时设置⽤户出现错误,可以⽤消息撤回模板,指定需要撤回的消息和⽤户进⾏撤回
可以针对⽤户 appId下所有消息进⾏撤回
版本要求:
客户端sdk:2.12.5.0以上
服务端os-sdk:java 4.1.0.0以上
撤回限制:
1,⽀持任务类型:os-sdk撤回模板⽀持撤回单推、群推、toApp任务
2, ⽀持模板:只⽀持撤回通知、不⽀持透传
3,第三⽅⼚商都不⽀持撤回
4,如果消息通过第三⽅⼚商离线下发,撤回必须使⽤force参数为true,并且会撤回AppId下的所有消息
TransmissionTemplate

setAppId     必填  设定接收的应⽤
setAppkey    必填  ⽤于鉴定身份是否合法
setOldTaskId 必填  指定需要撤回消息对应的taskId
setForce     非必填  客户端没有找到对应的taskid,是否把对应appid下所有的通知都撤回,默认false
6,模板样式(文档结尾)
消息类型
SingleMessage               单推消息体
ListMessage                 列表推送消息体
AppMessage                  指定应用群推送消息的消息体

消息体共有属性
setData      必填       ITemplate     推送消息内容
setPriority  否         int           消息体优先级
setOffline   否         loolean       消息离线是否存储,默认true
setOfflineExpireTime    非必填  Long  消息离线存储多久,单位毫秒
setPushNetWorkType      非必填  int    1:WIFI环境推送,0:不限制推送方式
AppMessage消息体独有属性
setAppIdList            必填     List  指定推送的应用列表
setPhoneTypeList        非必填   List  设置机型
setProvinceList         非必填   List  设置省份城市,可以是省份名称,也可以是省份编码
setTagList              非必填   List  设置标签内容
setSpeed                非必填   Int   定速推送
setConditions           非必填   AppConditions     限定推送用户的条件
推送结果(所有异常返回编码在文章结尾)
IPushResult ret = push.pushMessageToApp(message);
Map resmap = ret.getResponse();
//{result=ok,...}
一个测试类(链接通知和应用通知)
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.ITemplate;
import com.gexin.rp.sdk.base.impl.AppMessage;
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.style.Style0;
import org.junit.Test;

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

public class AppPush {
    
    //定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
    private static String appId = "duPdyoiHn4926fsCDbuYu8";
    private static String appKey = "SWrYn90wZv8jnVT3a68vm";
    private static String masterSecret = "ZTqxZR6wSo7tnKum9WQuR6";
    private static String url = "http://sdk.open.api.igexin.com/apiex.htm";

    /**
     * 点击打开链接
     */
    @Test
    public void testLink(){
        IGtPush push = new IGtPush(url, appKey, masterSecret);
        // 定义"点击链接打开通知模板",并设置标题、内容、链接
        LinkTemplate template = new LinkTemplate();
        template.setAppId(appId);
        template.setAppkey(appKey);
        template.setTitle("通知标题");
        template.setText("请填写通知内容AAAAAAAAAAAAAAAAAAAAAAbbbAAAAAAA");
        template.setUrl("https://www.baidu.com");
        toMessage(template);
    }

    /**
     * 点击通知打开应用程序
     */
    @Test
    public void testNotification(){
        // 定义"点击链接打开通知模板",并设置标题、内容、链接
        NotificationTemplate template = new NotificationTemplate();
        template.setAppId(appId);
        template.setAppkey(appKey);
        // 透传消息设置,1为强制启动应⽤,客户端接收到消息后就会⽴即启动应⽤;2为等待应⽤启动
        template.setTransmissionType(1);
        template.setTransmissionContent("请输⼊您要透传的内容");
        // 设置定时展示时间
        // template.setDuration("2015-01-16 11:40:00", "2015-01-16 12:24:00");
        Style0 style = new Style0();
        // 设置通知栏标题与内容
        style.setTitle("请输⼊通知栏标题");
        style.setText("请输⼊通知栏内容");
        // 配置通知栏图标
        style.setLogo("icon.png");
        // 配置通知栏⽹络图标
        style.setLogoUrl("");
        // 设置通知是否响铃,震动,或者可清除
        style.setRing(true);
        style.setVibrate(true);
        style.setClearable(true);
        template.setStyle(style);
        toMessage(template);
    }
    //发送消息
    public void toMessage(ITemplate template){
        IGtPush push = new IGtPush(appKey, masterSecret);
        List<String> appIds = new ArrayList<String>();
        appIds.add(appId);
        // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的⽬标App列表、是否⽀持离线发送、以及离线消息有效期(单位毫秒)
        AppMessage message = new AppMessage();
        message.setData(template);
        message.setAppIdList(appIds);
        message.setOffline(true);
        message.setOfflineExpireTime(1000 * 600);
        IPushResult ret = push.pushMessageToApp(message);
        System.out.println(ret.getResponse().toString());
    }
}
模板样式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错误代码

在这里插入图片描述

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
要使用Java实现微信自动推送天气给手机,首先需要获取天气数据和微信消息推送的API。 1. 天气数据获取: 可以通过第三方的天气API获取实时天气数据,如中国气象网、心知天气等。通过调用相应的API接口,可以获取到城市的天气信息,包括温度、天气状况、风力等。 2. 微信消息推送: 可以使用微信开放平台提供的消息推送API。首先需要在微信开放平台上创建一个应用,并获取到该应用AppID和AppSecret。然后,在代码中调用微信API进行身份验证和消息推送。 3. 实现步骤: - 首先,需要编写获取天气数据的代码。通过调用天气API接口,传入城市名等参数,获取到相应的天气数据,并解析得到温度、天气状况等关键信息。 - 接下来,需要编写微信消息推送的代码。首先,将AppID和AppSecret等参数配置到代码中。然后,使用HTTP请求向微信API发送请求,进行身份验证,获取到access_token。之后,可以调用微信API,发送自定义的文本消息,将天气信息作为消息内容。 - 最后,可以将这两部分代码结合起来,编写一个自动推送天气的程序。可以使用定时任务功能,每隔一段时间,自动获取天气数据,并推送给指定的微信用户。 需要注意的是,实现此功能还需要一些其他的基础知识,如Java的网络请求、JSON数据处理、定时任务等。同时,还需要了解相关API的使用文档,确保能正确调用API并获取到需要的数据。 总而言之,使用Java实现微信自动推送天气给手机需要通过第三方天气API获取天气数据,并通过微信API进行消息推送。需要编写相应的代码,进行数据处理和API调用。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

占星安啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值