java 如何实现系统消息推送

Python013

java 如何实现系统消息推送,第1张

消息推送方式分为两种:短连接和长连接。也就是客户端与服务器之间的数据传输交互方式不同。

1、短连接又称为轮询,方式为pull。客户端定时向服务器发送请求,询问是否有数据,时间频次可以设置。这种的方式更适合web端使用,用在APP有很多弊端。

2、长连接方式为push,服务器主动向客户端发送数据。市面上移动端产品基本采用这种方式,但是ios和android系统有很大的区别。不论手机上安装了多少个APP,也只有一条长连接,消息最终由苹果服务器进行内置分发。即使用户关闭了APP,依然可以收到消息推送。

实现系统消息推送,就需要比较好的第三方软件就行辅助,极光就是一个不错的选择。极光JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。

import java.io.InputStream

import java.util.List

import com.dbay.apns4j.IApnsService

import com.dbay.apns4j.impl.ApnsServiceImpl

import com.dbay.apns4j.model.ApnsConfig

import com.dbay.apns4j.model.Feedback

import com.dbay.apns4j.model.Payload

/**

* @author RamosLi

*

*/

public class Apns4jDemo {

private static IApnsService apnsService

private static IApnsService getApnsService() {

if (apnsService == null) {

ApnsConfig config = new ApnsConfig()

InputStream is = Apns4jDemo.class.getClassLoader().getResourceAsStream("Certificate.p12")

config.setKeyStore(is)

config.setDevEnv(false)

config.setPassword("123123")

config.setPoolSize(5)

apnsService = ApnsServiceImpl.createInstance(config)

}

return apnsService

}

public static void main(String[] args) {

IApnsService service = getApnsService()

// send notification

String token = "94c4764e4645f42a7b2052692c8b5b41f9d5c925876e11fec5721e9045ee4e5b"

Payload payload = new Payload()

payload.setAlert("How are you?")

// If this property is absent, the badge is not changed. To remove the badge, set the value of this property to 0

payload.setBadge(1)

// set sound null, the music won't be played

// payload.setSound(null)

payload.setSound("msg.mp3")

payload.addParam("uid", 123456)

payload.addParam("type", 12)

service.sendNotification(token, payload)

// payload, use loc string

Payload payload2 = new Payload()

payload2.setBadge(1)

payload2.setAlertLocKey("GAME_PLAY_REQUEST_FORMAT")

payload2.setAlertLocArgs(new String[]{"Jenna", "Frank"})

service.sendNotification(token, payload2)

// get feedback

List<Feedback>list = service.getFeedbacks()

if (list != null &&list.size() >0) {

for (Feedback feedback : list) {

System.out.println(feedback.getDate() + " " + feedback.getToken())

}

}

try {

// sleep 5s.

Thread.sleep(5000)

} catch (Exception e) {

e.printStackTrace()

}

// It's a good habit to shutdown what you never use

service.shutdown()

// System.exit(0)

}

}

包含推送功能、苹果的feedback功能,很是实用方便。

对于源码,我整理成了工程,下载地址为:http://download.csdn.net/detail/linyu19872008/6934361