PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP:向ios发送推送通知大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在发送从PHP到ios的推送通知.它工作正常,这是我的代码
$passphrase = '';
$badge = 1;
$path = base_path('path/to/certificate.pem');
$ctx = stream_context_create();
stream_context_set_option($ctx,'ssl','local_cert',$path);
stream_context_set_option($ctx,'passphrase',$passphrase);
$fp = stream_socket_client(
    'ssl://gateway.sandBox.push.apple.com:2195',$err,$errstr,60,STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT,$ctx
);

if (!$fp) {
    self::SavePush($device_token,$message,$device_id,$device_type,$user_id,"pending","normal",null);
}

//echo 'Connected to APNS' . PHP_EOL;
$body['aps'] = array(
    'alert' => $message,'badge' => $badge,'sound' => 'default'
);
$payload = json_encode($body);
$msg = chr(0) . pack('n',32) . pack('H*',$device_token) . pack('n',strlen($payload)) . $payload;
$result = fwrite($fp,$msg,strlen($msg));

//print_r($result);exit;

if (!$result) {
    self::SavePush($device_token,null,$result);
} else {
    self::SavePush($device_token,"sent",$result);
}

fclose($fp);

现在我遇到的问题是,我无法确定通知是否失败,因为$result在每种情况下都包含一个整数,成功或失败.我已经传递了一个随机数字作为标记,它返回115或65之类的整数,每次都会改变.所以!$结果不会工作.我怎么知道通知是否失败?

对fwrite()的调用将返回它成功发送的字节数,如果发送错误则返回FALSE.您的$结果正在更改,因为它会随您发送的邮件大小而变化.所以知道这一点,你可以推测,如果$result === FALSE那么就会出现错误并且通知失败了.如果$result!== FALSE,则通知已成功发送.这仅验证消息是否通过网络发送.它不验证消息的结构或令牌的有效性或类似的东西.

现在,如果您试图找出推送通知消息本身是否有效并且苹果接受并正在处理它,那么您可能希望CURL和HTTP / 2执行此操作.快速谷歌搜索我遇到了这个网站,它显示了如何做到这一点的演示.我没有测试过这个网站http://coding.tabasoft.it/ios/sending-push-notification-with-http2-and-php/,所以无法告诉你演示是否正确.这只是一个快速搜索,但可能会让你走上正确的轨道.

大佬总结

以上是大佬教程为你收集整理的PHP:向ios发送推送通知全部内容,希望文章能够帮你解决PHP:向ios发送推送通知所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: