[size=medium]java端用到的push插件:http://code.google.com/p/javapns/downloads/list
应用过程中遇到的几个小问题,记录一下。
1. 因为debug用的push证书,与distribution用的证书是不一样的,所以
[color=red]keystore参数指向的证书的地址要正确[/color]
2. debug发送push,和distribution发送push时,APNS的地址是不一样的,所以
[color=red]isProduct 参数的取值为[false:debug版 ; true:distribution版][/color]
==============================================
网上一篇挺好的文章(http://blog.csdn.net/zhenzhenzhao12/article/details/8204483) ==============================================
内容如下:
开发状态服务器地址: [color=red]gateway.sandbox.push.apple.com 2195[/color]
产品状态服务器地址: [color=red]gateway.push.apple.com 2195[/color]
[color=red]Development和Production两个版本对应的apns device token是不同的[/color],前者是develop的mobileprovision下获取的。后者是production的mobileprovision获取的。
Development和Production两个版本可以共用一个App ID,但是不能共用一个mobileprovision,所以要单独生成Distribution的证书供production版本使用。
注:Distribution的版本是无法在设备上debug调试的!
Development和Production两个版本的code sign是不同的,前者是iPhone Developer,后者是iPhone Distribution。注意不能搞错。
无论是Development Push SSLCertificate还是Production Push SSL Certificate 都有过期时间的。[color=red]Development Push SSL Certificate有效期三个月,而ProductionPush SSL Certificate的有效期是一年[/color]。需要注意在过期之前生成新的证书,以免影响使用。
[color=red]服务器端发出的json包是有大小限制的,最大256字节,包括自定义字典集。[/color]
aps中的alert字符串里是可以添加"\n"做换行的。
json包中除了alert,badge,sound之外,还是是可以自定值的。
额外的自定义值:
$payload['aps'] = array('alert' : 'This is the alert text', 'badge' : 1, 'sound' : 'default');
$payload['server'] = array('serverId' : $serverId, 'name' : $name);
$output = json_encode($payload);
当用户按下“View”后,自定义server值将被传递到设备中的程序。JSON 值如下:
{
"aps" :
{ "alert" :
{
"action-loc-key" : "显示" ,
"body" : "This is the alert text"
},
"badge" : 1,
"sound" : "default" },
"server" : { "serverId" : 1, "name" : "Server name")
}
256字节的限制适用于整个payload,包括自定义字典集。
原生接口
在Server Density中,一旦产生了一条提示,将建立一个payload并插入队列中。因此有必要时我们可以同时发送多个payload。
Apple推荐使用这种方法,因为如果你在发送各payload时频繁连接和断开,APNS有可能会封锁你的IP。
如Apple 描述:
原生接口使用原生socket,具有二进制内容,采用数据流技术,不产生回馈。
[/size]
应用过程中遇到的几个小问题,记录一下。
1. 因为debug用的push证书,与distribution用的证书是不一样的,所以
[color=red]keystore参数指向的证书的地址要正确[/color]
2. debug发送push,和distribution发送push时,APNS的地址是不一样的,所以
[color=red]isProduct 参数的取值为[false:debug版 ; true:distribution版][/color]
==============================================
网上一篇挺好的文章(http://blog.csdn.net/zhenzhenzhao12/article/details/8204483) ==============================================
内容如下:
开发状态服务器地址: [color=red]gateway.sandbox.push.apple.com 2195[/color]
产品状态服务器地址: [color=red]gateway.push.apple.com 2195[/color]
[color=red]Development和Production两个版本对应的apns device token是不同的[/color],前者是develop的mobileprovision下获取的。后者是production的mobileprovision获取的。
Development和Production两个版本可以共用一个App ID,但是不能共用一个mobileprovision,所以要单独生成Distribution的证书供production版本使用。
注:Distribution的版本是无法在设备上debug调试的!
Development和Production两个版本的code sign是不同的,前者是iPhone Developer,后者是iPhone Distribution。注意不能搞错。
无论是Development Push SSLCertificate还是Production Push SSL Certificate 都有过期时间的。[color=red]Development Push SSL Certificate有效期三个月,而ProductionPush SSL Certificate的有效期是一年[/color]。需要注意在过期之前生成新的证书,以免影响使用。
[color=red]服务器端发出的json包是有大小限制的,最大256字节,包括自定义字典集。[/color]
aps中的alert字符串里是可以添加"\n"做换行的。
json包中除了alert,badge,sound之外,还是是可以自定值的。
额外的自定义值:
$payload['aps'] = array('alert' : 'This is the alert text', 'badge' : 1, 'sound' : 'default');
$payload['server'] = array('serverId' : $serverId, 'name' : $name);
$output = json_encode($payload);
当用户按下“View”后,自定义server值将被传递到设备中的程序。JSON 值如下:
{
"aps" :
{ "alert" :
{
"action-loc-key" : "显示" ,
"body" : "This is the alert text"
},
"badge" : 1,
"sound" : "default" },
"server" : { "serverId" : 1, "name" : "Server name")
}
256字节的限制适用于整个payload,包括自定义字典集。
原生接口
在Server Density中,一旦产生了一条提示,将建立一个payload并插入队列中。因此有必要时我们可以同时发送多个payload。
Apple推荐使用这种方法,因为如果你在发送各payload时频繁连接和断开,APNS有可能会封锁你的IP。
如Apple 描述:
原生接口使用原生socket,具有二进制内容,采用数据流技术,不产生回馈。
[/size]