Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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推送通知发布It';It’他有时工作,有时不工作_Php_Ios_Curl_Push Notification_Apple Push Notifications - Fatal编程技术网

Php iOS推送通知发布It';It’他有时工作,有时不工作

Php iOS推送通知发布It';It’他有时工作,有时不工作,php,ios,curl,push-notification,apple-push-notifications,Php,Ios,Curl,Push Notification,Apple Push Notifications,我已经通过运行URL检查了我的代码,当我在浏览器中尝试时,它工作正常。但是它不适用于curl代码,我找不到解决方案卷曲错误不提供任何信息。我曾读到“设备不会总是连接到相同的公共IP地址进行通知。”但解决方案是什么请指出curl代码的错误/其他问题的可能性 这是curl代码 $ch = curl_init(); curl_setopt( $ch,CURLOPT_URL, BASE_URL .'api-v2/admin_notification_cron.php'); curl_setopt( $c

我已经通过运行URL检查了我的代码,当我在浏览器中尝试时,它工作正常。但是它不适用于curl代码,我找不到解决方案<代码>卷曲错误不提供任何信息。我曾读到“设备不会总是连接到相同的公共IP地址进行通知。”但解决方案是什么请指出curl代码的错误/其他问题的可能性

这是curl代码

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, BASE_URL .'api-v2/admin_notification_cron.php');
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
$result = curl_exec($ch );
curl_close( $ch );
admin\u notification\u cron.php
file从数据库中获取数据,并在每1分钟从数据库中获取20个数据后调用sendNotification函数

下面是发送通知的功能代码:

    function sendToIphone($deviceToken, $data)
    {

    $data['push_image'] = (($data['push_image']!='')?PHOTO_URL.'push/'.$data['push_image']:'');   

    $passphrase = '';
    $ctx = stream_context_create();

    stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev-cert.pem');
    stream_context_set_option($ctx, 'ssl', 'passphrase', '');
    $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

    $type = ($data['type']!='')?$data['type']:'0';

    if ($data['message']=='add_job' || $data['message']=='process') {
        //$sound = 'newrequest.mp3';
        $sound = 'default';
    } else {
        $sound = 'default';
    }


    $body['aps'] = array(
        'alert' => stripslashes($final_message),
        'title' => APP_TITLE,
        'job_id' => $data['job_id'],
        'user_id' => $data['user_id'],
        'created'=> $data['created'],
        'type'=> $type,
        'sound' => $sound,
        "mutable-content"=> 1,
        "category"=> "rich-apns",
        "image-url"=> $data['push_image'],
        'badge' => intval($badge)

    );
    $body['att'] = array('id' => $data['push_image']);

    $payload = json_encode($body);

    $msg = chr(0) . pack('n', 32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack('n', strlen($payload)) . $payload;
    $result = fwrite($fp, $msg, strlen($msg));
    if (!$result) {
        return 0;
    } else {
        return 1;
    }
}

提前感谢

有一些拇指规则可以实现
APNS

  • 在发出
    通知后,应关闭旋涡连接

  • 您必须等待上一次
    通知
    未发出 交付

若您正在执行循环中的所有代码,那个么会传递一些通知 其余的通知将被丢弃

为了解决您的问题,您在两次
通知
触发之间或在上一次
通知
发出后触发
通知
之间设置了一些延迟

您可以使用第三方通知工具

它将自动管理