【问题标题】:iOS push notification issue It's working some time and not working sometimeiOS推送通知问题它工作了一段时间,有时不工作
【发布时间】:2023-03-21 01:52:01
【问题描述】:

我通过从 URL 运行检查了我的代码,当我从浏览器尝试时它工作正常。但它不适用于 curl 代码,我找不到解决方案。 curl_error 什么也没给。我已经读过“设备不会总是连接到相同的公共 IP 地址以获取通知。”但是解决方案是什么请提出 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_notification_cron.php文件从数据库中取数据,每1分钟从数据库取20条数据后调用sendNotification函数

下面是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;
    }
}

提前致谢

【问题讨论】:

    标签: php ios curl push-notification apple-push-notifications


    【解决方案1】:

    有一些经验法则可以实现APNS

    • 发送notification后应关闭Curl连接。

    • 你必须等到你以前的notification 没有 已送达。

    如果您在循环中执行所有代码,则会发送一些通知 其余通知将被丢弃。

    为了解决您的问题,您在两个notification 触发或触发notification 之间设置了一些延迟,此前notification 已交付。

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

    FCM

    OneSignal

    它会自动管理。

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 1970-01-01
      • 2015-07-09
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      相关资源
      最近更新 更多