php - iOS推送通知问题它工作了一段时间,有时不工作
问题描述
我通过从 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;
}
}
提前致谢
解决方案
推荐阅读
- reactjs - React-router URL 更改,但页面仍未更改
- installshield - Installshield 2015 关闭打开的浏览器
- java - 我无法在 .jar 文件中加载图像(Spring)
- image - 为什么图像不加载 - CodeSandbox
- google-chrome-extension - 使用 chrome 扩展显示 Chrome 错误页面
- java - 当我想 FCM 发送通知时,无法将 java.lang.String 类型的对象转换为类型
- javascript - 变量设置为未定义
- flutter - 调整窗口大小时抽屉未正确关闭
- php - Laravel 迁移显示现有列的列不存在
- ios - 在 UILabel 上点击崩溃 - 使用 UIApplication 共享 keyWindow rootViewController