java 信鸽demo_腾讯信鸽推送Java服务端

结合Servlet、传递JSON数据,实现信鸽Java服务端向Android客户端(参考这里)推送数据

环境

服务器:winserver 2012、eclipse、tomcat

客户端 :Mac、Android Studio

1 Android端与服务端通信

1.1 服务端

1.1.1 搭建JavaWeb环境

参考:部署tomcat

参考:配置Server

参考:eclipse配置Tomcat

1.1.2 新建项目

服务端新建JavaWeb项目XGServer,新建JsonServlet继承HttpServlet

package com.Servlet;

import java.io.IOException;

import java.io.InputStream;

import java.net.URLDecoder;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.tencent.xingeUtil.Demo;

public class JsonServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 1L;

private HttpServletRequest request;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

request = req;

try {

request.setCharacterEncoding("utf-8");

// 获取客户端post请求发送的Json数据

InputStream inputStream = request.getInputStream();

String json = NetUtils.readString(inputStream);

json = URLDecoder.decode(json, "UTF-8");

System.out.println(json+"111");

} catch (Exception e) {

e.printStackTrace();

}

}

}

配置web.xml

JsonServletservlet-name>

com.Servlet.JsonServletservlet-class>

servlet>

JsonServletservlet-name>

/JsonServleturl-pattern>

servlet-mapping>

这样通过http://服务器IP:8080/XGServer/JsonServlet,就能访问到Servlet

1.2 Android 端

public static void sendJson(String content){

String path="Java端Servlet访问地址";

JSONObject json=new JSONObject();

HttpURLConnection conn=null;

try {

json.put("客户端",content);

conn= (HttpURLConnection) new URL(path).openConnection();

conn.setRequestMethod("POST");//post请求

conn.setRequestProperty("ser-Agent", "Fiddler");

conn.setRequestProperty("Content-Type", "application/json");

conn.setConnectTimeout(5 * 1000);

// 包装并上传数据

OutputStream outputStream = conn.getOutputStream();

outputStream.write(URLEncoder.encode(json.toString(), "UTF-8").getBytes());

outputStream.flush();

outputStream.close();

if (HttpURLConnection.HTTP_OK == conn.getResponseCode())

Log.i("flag","连接成功");

else

Log.i("flag","连接失败:"+conn.getResponseCode());

} catch (Exception e) {

e.printStackTrace();

}

finally {

conn.disconnect();

}

}

2 推送消息

SDK下载选择JavaSDK。

解压后:

b090950ce7fd187f4ee076329c16728f.png

将PushJavaSDK.Jar复制到服务端的项目XGServer中,Add to Build Path。打开Demo.java类,里面封装了很多方法,分析其中一个方法如下:

在XGServer中也新建一个Demo类

ACCESS ID与SECRET KEY获取,参考: 腾讯信鸽推送Android端

public class Demo {

private static XingeApp xinge = new XingeApp(ACCESS ID , "SECRET KEY");

//下发单个账号

public static JSONObject demoPushSingleAccount(String str) {

Message message = new Message();

message.setExpireTime(86400);

message.setTitle("title");

message.setContent("content");

message.setType(Message.TYPE_NOTIFICATION);

Style style = new Style(0,1,1,1,0,1,1,0);

message.setStyle(style);

JSONObject ret = xinge.pushSingleAccount(0, "account", message);

System.out.println(ret);

return ret;

}

}

在JsonServlet中调用demoPushSingleAccount方法,便可以向所有账号为account的设备发送推送。

具体API请参考:信鸽服务端Java SDK V1.1.8用户手册

下面分析一下XingApp、Message、Style这三个

XingeApp

该类 供与信鸽后台交互的接口。构造函数有两个参数,均为必选。

参数名

类型

必需

默认值

参数描述

accessId

int

推送目标应用 id

secretKey

String

推送密钥

注:secretKey 是后台接口鉴权的密钥,accessKey 为客户端鉴权密钥。调用后台 sdk 时需要使用 secretKey。 Example:

XingeApp push = new XingeApp(000, "myKey");

Message

定义推送消息(Android 平台)

346a32f8f806dd8d3f7bbab19a747143.png

3d630b90359080c620f52d9793597bcc.png

Example:

Message mess = new Message(); mess.setType(Message.TYPE_NOTIFICATION);

mess.setTitle("title");

mess.setContent("中午");

mess.setExpireTime(86400);

Style

定义通知消息如何展现

2005c59d8aa320c6915fd00c4a3a94a6.png

78e93a2ff362a7f60399f2de906c4ae0.png

Example:

//依次为(int builderId, int ring, int vibrate, int clearable, int nId, int lights, int iconType,

int styleId)

Style style = new Style(0,0,0,1,0,1,0,1);

style.setIconRes("xg.png");

XingeApp.pushSingleAccount

推送消息给单个账号

public JSONObject pushSingleAccount(int deviceType, String account, Message message) //向Android客户端发送消息

参数名

类型

必需

默认值

参数描述

deviceType

int

0

请填0

account

string

要与Android端一致,Android端才能收到推送

message

Message

Example:

XingeApp push = new XingeApp(000, 'myKey');

Message mess = new Message(); //$mess = new MessageIOS();

//完善 Message 消息

...

JSONObject ret = push. pushSingleAccount (0, 'nickName', mess);

Return value:

{"ret_code":0} //成功

{"ret_code":-1, "err_msg":"error description"}

注:ret_code 为 0 表示成功,其他为失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值