Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php上的IOs推送通知不起作用_Php_Ios_Push Notification - Fatal编程技术网

php上的IOs推送通知不起作用

php上的IOs推送通知不起作用,php,ios,push-notification,Php,Ios,Push Notification,各位程序员好。 我得到一个系统(php/MySQL)来进行一些更改。我发现的问题之一是Ios推送通知。代码在这里 function send_notification_ios($cert,$passphrase) { var $error; var $errorString; $keyPath = dirname(__FILE__) . '/' .$cert.'.pem'; $keyPassword = $passphrase; $gateway = 'gateway.push.apple.co

各位程序员好。 我得到一个系统(php/MySQL)来进行一些更改。我发现的问题之一是Ios推送通知。代码在这里

function send_notification_ios($cert,$passphrase) {
var $error;
var $errorString;
$keyPath = dirname(__FILE__) . '/' .$cert.'.pem';
$keyPassword = $passphrase;
$gateway = 'gateway.push.apple.com:2195';
$context = stream_context_create();
if (!stream_context_set_option($context, 'ssl', 'local_cert', $certificate)){
  return json_encode(array('success' => 0, 'failure' => 1, 'reason'=>'stream_context local_cert'));
}
if(!stream_context_set_option($context, 'ssl', 'passphrase', $passphrase)){
  return json_encode(array('success' => 0, 'failure' => 1, 'reason'=>'stream_context passphrase'));
}
$socket = stream_socket_client($gateway, $error, $errorString, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $context);
if (!$socket) {
  return json_encode(array('success' => 0, 'failure' => 1, 'reason'=>'soket: '.$error.' '.$errorString));
}
$payload = json_encode([
  'aps' => [
    'alert' => 'Hello World',
    'sound' => 'default',
    'badge' => 1
  ]
]);
$payPack = chr(2).pack('n', strlen($payload)).$payload;
$expDate = chr(3).pack('n', 4).pack('N', time() + 86400);
$priority = chr(4).pack('n', 1).chr(10);
$inner = 
  chr(1).pack('n', 32).pack('H*', $apikey)
  .$payPack
  .$expDate
  .$priority;
$notification = 
  chr(2)
  .pack('N',strlen($inner))
  .$inner;
stream_set_blocking($socket, 0);
$socketResult = fwrite($socket,$notification,strlen($notification));
if($socketResult){
  $success++;
}
else{
  $failure++;
}
fclose($socket);
return json_encode(array('success' => $success, 'failure' => $failure);
}
此函数的结果是{success:1,failure:0)。但ios应用程序不接收通知(例如,android应用程序接收android通知,从该系统发送,没有任何问题)。
所有建议将不胜感激。

您是否执行了iOS设备和证书设置步骤etcTo@Gagan_iOS的所有设置过程?我想是的。系统中有2个证书文件(*.pem),数据库中有2个密码短语。iOS应用程序工作正常-登录、获取消息等(推送通知除外)此链接有助于您这是另一个推送支持证书。您是否在密钥链中生成并安装了?您可以打开密钥链并查看该链接。对于@Gagan_iOS,我用新的证书更改了旧的证书。但这并不能解决问题。您是否执行了iOS设备和证书设置步骤etcTo@Gagan_iOS I thin的所有安装过程k是。系统中有2个证书文件(*.pem),数据库中有2个密码短语。Ios应用程序可以正常工作-登录、获取消息等(推送通知除外)此链接有助于您这是另一个推送支持证书。您是否在密钥链中生成并安装了该证书?您可以打开密钥链并查看该链接。对于@Gagan_iOS,我将旧证书更改为新证书。但这并不能解决问题。