升级到3.x 的版本,做了很多break change,但是改动不大,2.x版本在version_2.x分支
微信消息实时推送服务[WxPusher],可以通过API实时给个人微信推送消息.http://wxpusher.zjiecode.com/admin
请直接访问官方说明文档http://wxpusher.zjiecode.com/docs
- client-sdk 目录:JAVA SDK的源代码
- demo 目录:http://wxpusher.zjiecode.com/demo的源代码
如果不存在你需要语言的sdk,请你按照参考文档直接使用http调用,另外,欢迎你贡献更多语言的SDK。
-
demo
官网演示demo源码,开发的时候,可以做参考,demo演示网站地址: http://wxpusher.zjiecode.com/demo
-
sdk
Java版本SDK源码,开发的时候可以直接使用。
你需要添加Jcenter库,在“build.grade”中配置:
dependencies {
......
implementation 'com.smjcco.wxpusher:client-sdk:3.0.0'//使用上面的版本号
......
}
在pom.xml文件中添加:
<dependency>
<groupId>com.smjcco.wxpusher</groupId>
<artifactId>client-sdk</artifactId>
<version>3.0.2</version>
</dependency>
WxPusher会提供一些用户事件,比如用户关注、用户上行消息等,我们会通过回调的方式把消息推送给你。 具体方式请阅读接入文档:https://wxpusher.zjiecode.com/docs/#/?id=callback 相关的数据模型,已经定义在:com.smjcco.wxpusher.sdk.bean.callback 包下面,也可以可以参考demo模块的实现。
具体每个功能的说明,请参考API说明文档,这里不再赘述。
不想看文档,可以直接参考单元测试的用法(client-sdk/src/test/java/com/smjcco/wxpusher/client/sdk/ClientTest.java)
如果是你只需要一个实例(一个appToken),可以直接使用default,在使用之前进行初始化;
WxPusher.initDefaultWxPusher("你自己的应用appToken");
在需要使用WxPusher的地方,世界访问default即可,比如下面这样:
WxPusher.getDefaultWxPusher().send(xxx);
如果需要同时使用多个实例(appToken)可以直接实例化,自己进行保存:
new WxPusher("你自己的应用appToken");
说明:调用此接口,即可把消息推送出去。 如果传递了多个uid或者topic,会返回多个结果。
Message message = new Message();
message.setContent("扫描成功,你可以使用demo演示程序发送消息");
message.setContentType(Message.CONTENT_TYPE_TEXT);
message.setUid("UID_XXXX");
Result<List<MessageResult>> result = WxPusher.getDefaultWxPusher().send(message);
System.out.println("发送结果:" + result.isSuccess() + ", 消息:" + result.getMsg());
if (result.isSuccess() && result.getData() != null) {
for (MessageResult messageResult : result.getData()) {
System.out.println("发送到UID: " + messageResult.getUid() + ", 结果:" + messageResult.getStatus());
}
}
说明:消息发送以后,可以调用次接口删除消息,但是请注意,只能删除用户点击详情查看的落地页面,已经推送到用户的消息记录不可以删除。
Result<Boolean> result = WxPusher.getDefaultWxPusher().deleteMessage(messageId);
System.out.println("删除结果:" + result.isSuccess() + ", 状态:" + result.getData());
说明:可以用于创建一个二维码,拿到扫码的用户,来和自己系统的用户做关联。
本接口和下面的queryScanUID配合使用,推荐更推荐回调:https://wxpusher.zjiecode.com/docs/#/?id=callback
CreateQrcodeReq req = new CreateQrcodeReq();
req.setExtra("test_extra_data");
req.setValidTime(1800); // 设置有效期为30分钟
Result<CreateQrcodeResp> result = WxPusher.getDefaultWxPusher().createAppTempQrcode(req);
System.out.println("创建二维码结果:" + result.isSuccess() + ", 消息:" + result.getMsg());
if (result.isSuccess() && result.getData() != null) {
CreateQrcodeResp resp = result.getData();
System.out.println("二维码Code: " + resp.getCode());
System.out.println("二维码URL: " + resp.getUrl());
System.out.println("二维码短链接: " + resp.getShortUrl());
System.out.println("过期时间: " + resp.getExpires());
System.out.println("附加数据: " + resp.getExtra());
}
String code = "上面 createAppTempQrcode 接口返回的code";
// 注意:实际使用时,应该使用轮询方式,但是轮训时间不可以小于10秒,此处仅为示例
// 更推荐使用回调的方式 https://wxpusher.zjiecode.com/docs/#/?id=callback
Result<String> result = WxPusher.getDefaultWxPusher().queryScanUID(code);
说明:同一个用户关注多个,可能返回多个数据
Result<Page<WxUser>> result = WxPusher.getDefaultWxPusher().queryWxUserV2(1, 10, null, false, UserType.APP);
System.out.println("查询用户结果:" + result.isSuccess() + ", 消息:" + result.getMsg());
if (result.isSuccess() && result.getData() != null) {
Page<WxUser> page = result.getData();
System.out.println("总用户数: " + page.getTotal());
System.out.println("当前页: " + page.getPage());
System.out.println("页大小: " + page.getPageSize());
if (page.getRecords() != null) {
for (WxUser wxUser : page.getRecords()) {
System.out.println("用户UID: " + wxUser.getUid());
System.out.println("用户ID: " + wxUser.getId());
System.out.println("应用/主题ID: " + wxUser.getAppOrTopicId());
System.out.println("关注类型: " + wxUser.getType());
System.out.println("用户是否启用: " + wxUser.isEnable());
System.out.println("用户是否拉黑: " + wxUser.isReject());
System.out.println("创建时间: " + wxUser.getCreateTime());
System.out.println("---------------------");
}
}
}
你可以通过本接口,删除用户对应用,主题的关注。
删除以后,用户可以重新关注,如不想让用户再次关注,可以调用拉黑接口,对用户拉黑。
Result<Boolean> result = wxPusher.deleteUser(userId);
System.out.println("删除用户结果:" + result.isSuccess() + ", 状态:" + result.getData());
拉黑以后不能再发送消息,用户也不能再次关注,除非你取消对他的拉黑。调用拉黑接口,不用再调用删除接口。
// 拉黑用户
Result<Boolean> result = WxPusher.getDefaultWxPusher().rejectUser(userId, true);
System.out.println("拉黑用户结果:" + result.isSuccess() + ", 状态:" + result.getData());
//取消拉黑用户
Result<Boolean> result2 = WxPusher.getDefaultWxPusher().rejectUser(userId, false);
System.out.println("取消拉黑用户结果:" + result2.isSuccess() + ", 状态:" + result2.getData());
使用就是这么简单,有需要就来试试吧。