我正在尝试使用我在 Internet 上找到的这个 php 脚本向 iOS 应用程序发送通知。
我对 $passphrase 有什么价值,在哪里可以找到它?
的值相同:
- stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
- stream_context_set_option($ctx, 'ssl', 'passphrase', self::$passphrase);
类推送通知 {
私人静态 $passphrase = 'joashp';
公共函数 __construct() {
exit('不允许初始化函数');
}
公共静态函数 iOS($data, $devicetoken) {
$设备令牌 = $设备令牌;
$ctx = stream_context_create();
// ck.pem 是你的证书文件
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', self::$passphrase);
// 打开与 APNS 服务器的连接
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
如果 (!$fp)
exit("连接失败:$err $errstr" . PHP_EOL);
// 创建负载体
$body['aps'] = 数组(
'警报' => 数组(
'title' => $data['mtitle'],
'body' => $data['mdesc'],
),
'声音' => '默认'
);
// 将有效负载编码为 JSON
$payload = json_encode($body);
// 构建二进制通知
$msg = chr(0) 。包('n',32)。包('H*',$deviceToken)。包('n',strlen($payload))。 $有效载荷;
// 发送到服务器
$result = fwrite($fp, $msg, strlen($msg));
// 关闭与服务器的连接
fclose($fp);
如果(!$结果)
返回 '消息未送达' 。 PHP_EOL;
别的
返回 '消息已成功发送' 。 PHP_EOL;
}
// 卷曲
私有函数 useCurl(&$model, $url, $headers, $fields = null) {
// 打开连接
$ch = curl_init();
如果($url){
// 设置 url,POST 变量的数量,POST 数据
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 暂时禁用 SSL 证书支持
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
如果($字段){
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
}
// 执行发布
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl 失败:' . curl_error($ch));
}
// 关闭连接
curl_close($ch);
返回$结果;
}
}
}
$msg_payload = 数组(
'mtitle' => '测试推送通知标题',
'mdesc' => '测试推送通知正文',
);
$deviceToken = 'FE66489F304DC75B8D6E8200DFF8A456E8DAEACEC428B427E9518741C92C6660';
PushNotifications::iOS($msg_payload, $deviceToken);