极光推送java demo_极光推送JAVA代码示例

本文档详细介绍了如何在Java Web环境中集成极光推送服务,包括在极光推送官网注册应用、获取appkey和masterSecret,以及在项目中配置和使用Java服务器SDK进行推送消息的开发,最后通过Servlet触发推送操作。在实际推送过程中遇到因应用未绑定客户端而导致的推送失败问题。
摘要由CSDN通过智能技术生成

一、 准备工作

1. 登录极光推送官网https://www.jpush.cn/,注册账号并登录

2. 创建应用

创建应用过程,详见百度经验:http://jingyan.baidu.com/article/4f34706ecf2664e387b56d98.html

3. 获取appkey和masterSecret

二、 服务端开发

1. 创建java web工程

2. 在WEB-INF路径下的lib路径下,导入相关jar包,相关jar包可以在极光推送官网获取。

3. 到官网下载java服务器sdk压缩包。

4. 将官网例子中\jpush-api-java-client-3.2.9\src\main\java路径下cn文件夹整个拖入到src中。

注1:这是一种折中方案,我看大神们基本没有导入这个包,也正常使用了,但是我如果不这样做,就会报各种import错误,也是无奈之举

注2:这一过程可能会报错,不要紧张,一个个的点进去看,应该都是告诉你@overRide标签有问题,删掉就好

5. 创建一个新的包com.weiwend.jdpush,创建class文件Jdpush.java

package com.weiwend.jdpush;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import cn.jpush.api.JPushClient;

import cn.jpush.api.common.resp.APIConnectionException;

import cn.jpush.api.common.resp.APIRequestException;

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.audience.AudienceTarget;

import cn.jpush.api.push.model.notification.AndroidNotification;

import cn.jpush.api.push.model.notification.IosNotification;

import cn.jpush.api.push.model.notification.Notification;

public class Jdpush {

protected static final Logger LOG = LoggerFactory.getLogger(Jdpush.class);

// demo App defined in resources/jpush-api.conf

public static final String TITLE = "申通快递";

public static final String ALERT = "祝大家新春快乐";

public static final String MSG_CONTENT = "申通快递祝新老客户新春快乐";

public static final String REGISTRATION_ID = "0900e8d85ef";

public static final String TAG = "tag_api";

public  static JPushClient jpushClient=null;

public static void testSendPush(String appKey ,String masterSecret) {

jpushClient = new JPushClient(masterSecret, appKey, 3);

// HttpProxy proxy = new HttpProxy("localhost", 3128);

// Can use this https proxy: https://github.com/Exa-Networks/exaproxy

// For push, all you need do is to build PushPayload object.

//PushPayload payload = buildPushObject_all_all_alert();

//生成推送的内容,这里我们先测试全部推送

PushPayload payload=buildPushObject_all_alias_alert();

try {

System.out.println(payload.toString());

PushResult result = jpushClient.sendPush(payload);

System.out.println(result+"................................");

LOG.info("Got result - " + result);

} catch (APIConnectionException e) {

LOG.error("Connection error. Should retry later. ", e);

} catch (APIRequestException e) {

LOG.error("Error response from JPush server. Should review and fix it. ", e);

LOG.info("HTTP Status: " + e.getStatus());

LOG.info("Error Code: " + e.getErrorCode());

LOG.info("Error Message: " + e.getErrorMessage());

LOG.info("Msg ID: " + e.getMsgId());

}

}

public static PushPayload buildPushObject_all_all_alert() {

return PushPayload.alertAll(ALERT);

}

public static PushPayload buildPushObject_all_alias_alert() {

return PushPayload.newBuilder()

.setPlatform(Platform.all())//设置接受的平台

.setAudience(Audience.all())//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到

.setNotification(Notification.alert(ALERT))

.build();

}

public static PushPayload buildPushObject_android_tag_alertWithTitle() {

return PushPayload.newBuilder()

.setPlatform(Platform.android())

.setAudience(Audience.all())

.setNotification(Notification.android(ALERT, TITLE, null))

.build();

}

public static PushPayload buildPushObject_android_and_ios() {

return PushPayload.newBuilder()

.setPlatform(Platform.android_ios())

.setAudience(Audience.tag("tag1"))

.setNotification(Notification.newBuilder()

.setAlert("alert content")

.addPlatformNotification(AndroidNotification.newBuilder()

.setTitle("Android Title").build())

.addPlatformNotification(IosNotification.newBuilder()

.incrBadge(1)

.addExtra("extra_key", "extra_value").build())

.build())

.build();

}

public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {

return PushPayload.newBuilder()

.setPlatform(Platform.ios())

.setAudience(Audience.tag_and("tag1", "tag_all"))

.setNotification(Notification.newBuilder()

.addPlatformNotification(IosNotification.newBuilder()

.setAlert(ALERT)

.setBadge(5)

.setSound("happy")

.addExtra("from", "JPush")

.build())

.build())

.setMessage(Message.content(MSG_CONTENT))

.setOptions(Options.newBuilder()

.setApnsProduction(true)

.build())

.build();

}

public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() {

return PushPayload.newBuilder()

.setPlatform(Platform.android_ios())

.setAudience(Audience.newBuilder()

.addAudienceTarget(AudienceTarget.tag("tag1", "tag2"))

.addAudienceTarget(AudienceTarget.alias("alias1", "alias2"))

.build())

.setMessage(Message.newBuilder()

.setMsgContent(MSG_CONTENT)

.addExtra("from", "JPush")

.build())

.build();

}

}

6. 创建一个新的包com.weiwend.jdpush.servlet,创建class文件tuisong.java

package com.weiwend.jdpush.servlet; import Java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.org.apache.xml.internal.serializer.utils.Utils; import com.weiwend.jdpush.Jdpush; import cn.jpush.*; /** * Servlet implementation class tuisong */ public class tuisong extends HttpServlet { private static final long serialVersionUID = 1L; private static final String appKey ="84cf5ee2099c654aa03a5d70"; private static final String masterSecret = "7cf23f25a41806d5fd29e3c5"; public tuisong() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Jdpush.testSendPush(appKey,masterSecret); System.out.println("sucess"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }

7. 修改web.xml,增加servlet描述

tuisongcom.weiwend.jdpush.servlet.tuisong   tuisong   /tuisong

8. 修改index.jsp,增加servlet调用

 

9. 将项目部署到tomcat下,启动tomcat

10. 通过网页进行访问,触发servlet

点击登录按钮,触发servlet。界面样式就不改了,我相信除了处女座的程序员,没有人会在意这个。

11. 在console中查看推送结果。

log4j:WARN No appenders could be found for logger (cn.jpush.api.common.connection.NativeHttpClient). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. {"platform":"all","audience":"all","notification":{"alert":"祝大家新春快乐"},"options":{"sendno":34919015,"apns_production":false}} {"msg_id":3270259240,"sendno":34919015}................................ sucess

发送失败的原因是因为我们的应用并没有绑定某一个具体的客户端应用,所以推送失败了。但是本地服务器与推送服务器之间的通讯是完好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值