DDPush消息推送 一分钟集成

集成使用DDPush消息推送服务器,只需要简单继承DDPush提供的Java客户端基类,并实现三个简单的函数,即可使用DDPush服务,不需要了解客户端与服务端网络协议交互的细节。

DDPush提供的客户端基类,已经满足大部分的应用场景。此外,DDPush提供的Android App客户端示例,还实现了Android开发中的后台长时间运行的service服务,您可以直接使用。

若DDPush提供的现成基类和示例无法满足您的应用场景,你可以改写或者重写DDPush客户端。这并不会很困难,但需要您了解DDPush自身的网络协议。当然,这个也不会是很困难的事情。

马上开始!

第一步,继承并实现客户端抽象基类

继承UDP或者TCP客户端抽象基类

UDP:public class MyUdpClient extends org.ddpush.im.v1.client.appuser.UDPClientBase
TCP:public class MyTcpClient extends org.ddpush.im.v1.client.appuser.TCPClientBase

实现三个抽象函数

public boolean hasNetworkConnection(){}
public void onPushMessage(org.ddpush.im.v1.client.appuser.Message msg){}
public void trySystemSleep(){}

public boolean hasNetworkConnection()

该函数主要用于智能终端,判断当前是否有可用的网络连接,以达到省电的目的(若无网络连接则不尝试网络操作)。不同的终端检测网络情况的方式会不一样,所以DDPush客户端示例要求您的实现自行判断网络连接是否可用。如果是PC版软件不需考虑省电,可简单返回true,哪怕实际上没有可用的网络连接。

public void trySystemSleep()

该函数同样主要用于智能终端,在客户端不需要发送心跳包,并且服务端无推送信息的时候,尝试系统休眠,达到省电的目的。PC版软件可以直接将该函数留空,不做任何处理。Android则可能要考虑释放WakeLock以进入系统休眠状态。

public void onPushMessage(Message message)

该函数是客户端处理推送信息的业务入口函数。当客户端收到服务端的推送命令,将自动发送确认包,然后调用该函数。所以该函数内或其调用的其他函数,应该确保信息的正确处理,因为正常情况下该推送信息已经确认,极可能不会再次收到通知。

DDPush现成的客户端基类,会在该函数返回后,再调用trySystemSleep()函数。因此该函数内不用考虑保有WakeLock等防止系统休眠的操作。

第二步,运行客户端

UDP客户端:
MyUdpClient myUdpClient = new MyUdpClient(uuid,1,"192.168.1.100",9966);
myUdpClient.setHeartbeatInterval(50);//50秒一次心跳,可由您动态调节
myUdpClient.start();

TCP客户端:
MyTcpClient myTcpClient = new MyTcpClient(uuid, 1, "192.168.1.100", 9966, 5);
myTcpClient.setHeartbeatInterval(50);//50秒一次心跳
myTcpClient.start();

若网络发生变化,客户端会自行处理。
程序退出关闭客户端:myUdpClient.stop()或者myTcpClient.stop()。

第三步,应用服务端推送信息

Pusher pusher = new Pusher(serverIp,port, timeoutMills);
boolean result = pusher.push0x20Message(uuid,message);

注:这个步骤一般应该是应用服务器向DDPush消息推送服务器发起,但在DDPush Android demo工程里面,为了方便直接在客户端调用,只是为了演示如何编程。

Android客户端

在Android App开发中,会涉及到其他特有的因素,例如service的持续运行、WakeLock的控制等,并非简单继承基类实现以上三个函数就能正常工作。请参考DDPush提供的Android客户端示例App