ios6 – 在发送推送通知时如何从APN获得反馈

ios6 – 在发送推送通知时如何从APN获得反馈,第1张

概述现在我可以从已经安装了通行证的设备发送推送令牌,但我不知道反馈在这一点上是如何工作的.从Apple docs,Apple推送通知服务(APN)向服务器提供反馈,以告知pushToken是否有效.如何获得此反馈?我尝试这个代码,但很多错误.这是代码: <?php$cert = '/Applications/MAMP/htdocs/passesWebserver/certificates.pem'; 现在我可以从已经安装了通行证的设备发送推送令牌,但我不知道反馈在这一点上是如何工作的.从Apple docs,Apple推送通知服务(APN)向服务器提供反馈,以告知pushToken是否有效.如何获得此反馈?我尝试这个代码,但很多错误.这是代码:

<?PHP$cert = '/Applications/MAMP/htdocs/passesWebserver/certificates.pem';$ctx = stream_context_create();stream_context_set_option($ctx,'ssl','local_cert',$cert);stream_context_set_option($ctx,'verify_peer',false);$fp = stream_socket_clIEnt('ssl://Feedback.sandBox.push.apple.com:2196',$error,$errorString,60,STREAM_CLIENT_CONNECT,$ctx);// production server is ssl://Feedback.push.apple.com:2196if (!$fp) {error_log("Failed to connect Feedback server: $err $errstr",0);return;}else {   error_log("Connection to Feedback server OK",0);}    error_log("APNS Feedback results",0);    while ($devcon = fread($fp,38))    {   $arr = unpack("H*",$devcon);    $rawhex = trim(implode("",$arr));   $FeedbackTime = hexdec(substr($rawhex,8));    $FeedbackDate = date('Y-m-d H:i',$FeedbackTime);    $FeedbackLen = hexdec(substr($rawhex,8,4));    $FeedbackDevicetoken = substr($rawhex,12,64);   error_log ("TIMESTAMP:" . $FeedbackDate,0);      error_log ( "DEVICE ID:" . $FeedbackDevicetoken,0);    }fclose($fp);?>
解决方法 这应该工作.每次推送请求都不需要运行它.根据您更新的频率和设备数量,您可以设置每日或每周的cron作业.

$cert_file = '/path/to/combined/cert.pem';$cert_pw = 'top secret';$stream_context = stream_context_create();stream_context_set_option($stream_context,$cert_file);if (strlen($cert_pw))    stream_context_set_option($stream_context,'passphrase',$cert_pw);$apns_connection = stream_socket_clIEnt('Feedback.push.apple.com:2196',$error_code,$error_message,$stream_context);if($apns_connection === false) {    apns_close_connection($apns_connection);    error_log ("APNS Feedback Request Error: $error_code - $error_message",0);}$Feedback_tokens = array();while(!feof($apns_connection)) {    $data = fread($apns_connection,38);    if(strlen($data)) {        $Feedback_tokens[] = unpack("N1timestamp/n1length/H*devtoken",$data);    }}fclose($apns_connection);if (count($Feedback_tokens))    foreach ($Feedback_tokens as $k => $token) {         // code to delete record from database    }
总结

以上是内存溢出为你收集整理的ios6 – 在发送推送通知时如何从APN获得反馈全部内容,希望文章能够帮你解决ios6 – 在发送推送通知时如何从APN获得反馈所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存