php ios 推送 class,php ios 推送实例 + iospush.class.php类

解析一个推送通知

你的服务器负责创建一个推送通知消息,所以了解一个推送通知消息的构成是有必要的。

如果一个推送通知的payload超过了256个字节,那么这个推送就不会被“APNS”接受。

一个推送通知是一个短信息,由“device token”,“payload–负载内容”,和其他的一些字节组成。“payload–负载内容”是我们感兴趣的部分,因为它包含着我们实际想发送出去的数据。

你的服务器必须提供“payload–负载内容”,它是以JSON的字典的数据格式来组织数据的。下面是一个很简单的推送消息payload:

{

“aps”:

{

“alert”: “Hello, world!”,

“sound”: “default”

}

}

对于不了解JSON的人,一个block的划分由一对花括号“{}”包裹,其中包含一个由“键/值 (key/value)”对组成的“字典”,(就像NSDictionary)。

“payload–负载内容”就是一个“字典”,包含了至少一个“aps”项,“aps”本身也是一个“字典”。在我们的例子中,“aps”包含“alert”和“sound”字段。当这个推送通知被接收后,它将显示一个包含“Hello, world!”内容的提醒框,并且播放标准的提示音。

你可以向“aps”添加另外的选项,来配置通知,例如

{

“aps”:

{

“alert”:

{

“action-loc-key”: “Open”,

“body”: “Hello, world!”

},

“badge”: 2

}

}

现在“alert”是一个字典。”action-loc-key” 对应的value替代了“View”按钮上的文本内容,”badge”字段包含的数字将被显示在应用图标上,这个通知不会播放提示音。

//ios推送

require_once ( "./iospush.class.php" ) ;

//证书,IOS开发人员提供的, 还有一个密码,配置在 iospush.php 上

$pem = './ck.pem';

//token 用连接工具连接上了,看看设备信息就可以查看 测试请修改为正确的 token

$ios_token = '82eba403a347861e7d0ec0d160e140fbb216c64a6518ed87dcf260c65931aa63';

//我们定义的数据

$pusharr = array(

'description'=>'test_push',

'key1'=>'value1',

'key2'=>'value2',

);

$iospush = new iospush($pem,'123456');

$push = $iospush->push($ios_token,$pusharr);

var_dump($push );

?>

/**

* PHP iospush

*

* Copyright (c) 2006 - 2014 iospush

*

*

* @category PHP iospush

* @copyright Copyright (c) iospush (http://www.leipi.org)

* @license http://www.apple.com LGPL

* @version 1.8.0, 2014-03-02

*/

class iospush

{

public $path='ck.pem';//证书

public $pass='123456'; //证书密码

public $sound = 'tap.aif'; //通知声

public $badge=0;

public function __construct($path='',$pass='') {

if($path)

$this->path = $path;

if($pass)

$this->pass = $pass;

}

function push($token, $data)

{

// Construct the notification payload

$body = array();

if ($this->badge) {

$body['aps']['badge'] = $this->badge;

}

$body['aps']['alert'] = $data['description'];

$body['aps']['sound'] = $this->sound;

// 组装数据

foreach($data as $k => $v) {

if ($k != "description") {

$body[$k] = $v;

}

}

// $body['append_1']="appendent_1";

// $body['append_2']="appendent_2";

$ctx = stream_context_create();

stream_context_set_option($ctx, 'ssl', 'local_cert', $path); //pem文件地址

stream_context_set_option($ctx, 'ssl', 'passphrase', $this->pass); //证书密码

// $fp=stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);//正式

$fp = @stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); //测试沙箱

if (!$fp) {

return false;

}

$payload = json_encode($body);

$msg = chr(0) . pack("n", 32) . pack('H*', str_replace(' ', '', $token)) . pack("n", strlen($payload)) . $payload;

fwrite($fp, $msg);

fclose($fp);

return true;

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值