代码改进:
public static boolean logic(String deviceToken, String message)
throws Exception {
boolean result = false;
if (deviceToken == null || "".equals(deviceToken)) {
logger.info("IPhone终端令牌号为空值,PUSH失败!");
System.out.println("IPhone终端令牌号为空值,PUSH失败!");
return false;
}
/**********发送push时可能会有长度限制,需要注意一下*************/
PushNotificationManager pushManager = null;
try {
List<String> list = new ArrayList<String>();
list.add("斗破苍穹");
PayLoad complexPayLoad = new PayLoad();
PayLoadCustomAlert customAlert = new PayLoadCustomAlert();
customAlert.addActionLocKey("Open App");
customAlert.addLocKey("您订阅的图书《%1$@》已更新,请到书架查看!");
customAlert.addLocArgs(list);
complexPayLoad.addCustomAlert(customAlert);
complexPayLoad.addBadge(1);
complexPayLoad.addSound("default");
complexPayLoad.addCustomDictionary("type", 1);
complexPayLoad.addCustomDictionary("bookID", 123456);
System.out.println(complexPayLoad.toString());
pushManager = PushNotificationManager.getInstance();
pushManager.addDevice("iPhone", deviceToken);
String certificatePassword = "*****";
String host = "gateway.sandbox.push.apple.com";
String port = "2195";
String certificationPath = "K:/***.p12";
pushManager.initializeConnection(host, Integer.parseInt(port),
certificationPath, certificatePassword,
SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
// 发送PUSH消息
Device client = pushManager.getDevice("iPhone");
pushManager.sendNotification(client, complexPayLoad);
result = true;
} catch (Exception e) {
logger.info("向IPhone终端发送PUSH消息产生异常!");
System.out.println("向IPhone终端发送PUSH消息产生异常!");
e.printStackTrace();
} finally {
if (pushManager != null) {
pushManager.stopConnection();
pushManager.removeDevice("iPhone");
}
}
return result;
}
上面代码中定义的“type”和“bookID”在客户端可以获得。