您的位置:首页 > 编程语言 > Java开发

苹果推送服务

2014-07-10 09:23 183 查看
苹果推送服务

注意:

需要javapns.jar包

生成证书,,
代码:

package com.test.push.iso;

import java.util.ArrayList;
import java.util.List;

import javapns.devices.Device;
import javapns.devices.implementations.basic.BasicDevice;
import javapns.notification.AppleNotificationServerBasicImpl;
import javapns.notification.PushNotificationManager;
import javapns.notification.PushNotificationPayload;
import javapns.notification.PushedNotification;

import org.apache.log4j.Logger;

public class IphonePush {

Logger logger = Logger.getLogger(IphonePush.class);

/**
*
*这是一个比较简单的推送方法,
*
* apple的推送方法
*
* @param tokens
*            iphone手机获取的token
*
* @param path
*            这里是一个.p12格式的文件路径,需要去apple官网申请一个
*
* @param password
*            p12的密码 此处注意导出的证书密码不能为空因为空密码会报错
*
* @param message
*            推送消息的内容
*
* @param count
*            应用图标上小红圈上的数值
*
* @param sendCount
*            单发还是群发 true:单发 false:群发
*/

public void sendpush(List<String> tokens, String path, String password,
String message, Integer count, boolean sendCount) {
logger.info("sendpush(List<String> tokens=" + tokens + ", String path=" + path + ", String password=" + password + ", String message=" + message + ", Integer count=" + count + ", boolean sendCount=" + sendCount + ") - start");

try {

PushNotificationPayload payLoad = PushNotificationPayload
.fromJSON(message);

// payLoad.addAlert(message); // 消息内容

payLoad.addBadge(count); // iphone应用图标上小红圈上的数值

payLoad.addSound("default"); // 铃音 默认

PushNotificationManager pushManager = new PushNotificationManager();

// true:表示的是产品发布推送服务 false:表示的是产品测试推送服务

pushManager
.initializeConnection(new AppleNotificationServerBasicImpl(
path, password, true));

List<PushedNotification> notifications = new ArrayList<PushedNotification>();

// 发送push消息

if (sendCount) {

logger.debug("--------------------------apple 推送 单-------");

Device device = new BasicDevice();

device.setToken(tokens.get(0));

PushedNotification notification = pushManager.sendNotification(
device, payLoad, true);

notifications.add(notification);

} else {

logger.debug("--------------------------apple 推送 群-------");

List<Device> device = new ArrayList<Device>();

for (String token : tokens) {

device.add(new BasicDevice(token));

}

notifications = pushManager.sendNotifications(payLoad, device);

}

List<PushedNotification> failedNotifications = PushedNotification
.findFailedNotifications(notifications);

List<PushedNotification> successfulNotifications = PushedNotification
.findSuccessfulNotifications(notifications);

int failed = failedNotifications.size();

int successful = successfulNotifications.size();

if (successful > 0 && failed == 0) {

logger.debug("-----All notifications pushed 成功 ("
+ successfulNotifications.size() + "):");

} else if (successful == 0 && failed > 0) {

logger.debug("-----All notifications 失败 ("
+ failedNotifications.size() + "):");

} else if (successful == 0 && failed == 0) {
logger.debug("No notifications could be sent, probably because of a critical error");
} else {

logger.debug("------Some notifications 失败 ("
+ failedNotifications.size() + "):");

logger.debug("------Others 成功 (" + successfulNotifications.size()
+ "):");

}

// pushManager.stopConnection();

} catch (Exception e) {
logger.error("sendpush()", e);

e.printStackTrace();

}

logger.info("sendpush(tokens, path, password, message, count, sendCount) - end");
}

public static void main(String[] args) {

IphonePush pushService = new IphonePush();
List<String> token = new ArrayList<String>();
String device_token = "d232f7f0669465542b3b68b9548d23691b468bf8da912ea8a101d17fa787cff4";
token.add(device_token);
String certificatePath = "D://Workspaces//MyEclipse 8.6//test_web//WebRoot//pushCert.p12";
String certificatePassword = "hebmc_qt";
String msg = "Hello, world!";

pushService.sendpush(token, certificatePath, certificatePassword, msg, 5,  true);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA iphone 苹果