思路: 从客户端获取的deviceToken,定义消息模式Payload,注册deviceToken,连接APNS,发送推送,停止连接APNS,删除deviceToken;
1,从客户端获取的deviceToken,在此为了测试简单,写固定的一个测试设备标识
String deviceToken = "337dd964535f2a6efd9d346120b1b5771f522a2da13c09878b5f18e397507e60";
开发环境: 客户端生成deviceToken,后台服务端直接获取使用;
生产环境: 客户端生成deviceToken,调用服务端接口,将数据保存到数据库,后台服务端从数据库获取使用;
2,定义消息模式
PayLoad payLoad = new PayLoad();
payLoad.addAlert("Apple测试数据");
payLoad.addBadge(1);//消息推送标记数,小红圈中显示的数字。
payLoad.addSound("default");
payLoad.addCustomDictionary("url", "https://img.icos8.cc/image/hhvy");
payLoad.addCustomDictionary("mutable-content", 1);
名词解释:
alert------------显示消息标题;
badge--------消息推送标记数,小红圈中显示的数字
sound--------默认或者自定义的声音;
addCustomDictionary---------自定义字典
3,注册deviceToken
PushNotificationManager pushManager = PushNotificationManager.getInstance();
pushManager.addDevice("iPhone", deviceToken);
4,连接APNS
String host = "gateway.sandbox.push.apple.com"; //测试
//String host = "gateway.push.apple.com";//生产
int port = 2195;
// String certificatePath = "D:/p12/**-cert.p12";//客户端生成的用于JAVA后台连接APNS服务的*.p12文件位置
String certificatePath = "C:/tomcat/aps_development_key.p12";//客户端生成的用于JAVA后台连接APNS服务的*.p12文件位置
String certificatePassword = "123123";//p12文件密码。
pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
5,发送推送
Device client = pushManager.getDevice("iPhone");
System.out.println("推送消息: " + client.getToken()+"\n"+payLoad.toString() +" ");
6,停止连接APNS
pushManager.stopConnection();
7,删除deviceToken
pushManager.removeDevice("iPhone");