我是靠谱客的博主 迷你花生,最近开发中收集的这篇文章主要介绍推送java_java实现iOS后台推送,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

证书和服务器地址的选择

注意:后台选择的证书和推送服务器地址一定要和收消息设备的打包方式匹配上才能推送成功。

import java.util.HashMap;

import java.util.Iterator;

import javapns.back.PushNotificationManager;

import javapns.back.SSLConnectionHelper;

import javapns.data.Device;

import javapns.data.PayLoad;

public class MainApnsSend {

public static void main(String[] args) throws Exception {

try {

// token为不包含空格和<>的字母数字组合(字母不区分大小写)

String deviceToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

PushNotificationManager pushManager = PushNotificationManager.getInstance();

pushManager.addDevice("iphone", deviceToken);

// 苹果推送服务器

/*

开发状态服务器地址 gateway.sandbox.push.apple.com 2195

发布状态服务器地址 gateway.push.apple.com 2195

需要注意:

Xcode打出的Debug安装包只能选择开发服务器,证书可以选择开发推送证书或者发布推送证书;

Xcode打出的AdHoc或Release安装包只能选择发布务器和发布推送证书;

*/

String host= "gateway.sandbox.push.apple.com";

// 端口号

int port = 2195;

// 在mac系统下导出的p12证书(开发证书对应开发环境,发布证书对应所有环境)

String certificatePath = "path/XXX.p12";

// p12证书密码

String certificatePassword= "XXXX";

// 初始化tcp连接

pushManager.initializeConnection(host, port, certificatePath, certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

// Send Push

Device client = pushManager.getDevice("iphone");

// 要推送的消息

PayLoad payLoad = new PayLoad();

payLoad.addAlert("测试我的push消息");

payLoad.addBadge(1);

payLoad.addSound("default");

// 开始推送

pushManager.sendNotification(client, payLoad);

pushManager.stopConnection();

pushManager.removeDevice("iphone");

}

catch (Exception e) {

e.printStackTrace();

} else {

System.out.println("push succeed!");

}

}

需要用到的jar包

bcprov-jdk16-145-1.jar

commons-io-2.0.1.jar

commons-lang-2.5.jar

javapns-jdk16-163.jar

log4j-1.2.16.jar

PayLoad:

PayLoad 是通知的一部分,每一条推送通知都包含一个 PayLoad。它包含了系统提醒用户通知到达的方式,还可以添加自定义的数据。即通知主要传递的数据为 PayLoad。

PayLoad 本身为 JSON 格式的字符串,它内部必须要包含一个键为 aps 的字典。aps 中可以包含以下字段中的一个或多个:

alert:其内容可以为字符串或者字典,如果是字符串,那么将会在通知中显示这条内容;

badge:其值为数字,表示当通知到达设备时,应用的角标变为多少。如果没有使用这个字段,那么应用的角标将不会改变。设置为 0 时,会清除应用的角标。

sound:指定通知展现时伴随的提醒音文件名。如果找不到指定的文件或者值为 default,那么默认的系统音将会被使用。如果为空,那么将没有声音。

content-available:此字段为 iOS 7 silent remote notification 使用。不使用此功能时无需包含此字段。

如果需要添加自定义的字段,就让服务器的小伙伴们跟aps同一层级添加一个数组(以Json为例):

{

"aps" : {"alert" : "This is the alert text", "badge" : 1, "sound" :"default" },

"server" : {"serverId" : 1, "name" : "Server name"}

}

这样收到的 PayLoad 里面会多一个 server 的字段。

最后

以上就是迷你花生为你收集整理的推送java_java实现iOS后台推送的全部内容,希望文章能够帮你解决推送java_java实现iOS后台推送所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部