php从苹果apns的feedback服务器获取推送失败的token
注意事项: 1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的); 2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间 3.返回的数据由三部分组成,请看下面的图 结
注意事项:
1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的);
2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间
3.返回的数据由三部分组成,请看下面的图
结构中包含三个部分,第一部分是一个上次发推送失败的时间戳,第二个部分是device_token的长度,第三部分就是失效的device_token
下面是我的代码:
<?php /** * @desc 连接苹果的推送服务器 * @return bool|resource */ function connect_feedback(){ $passphrase = 'cheshi123'; $cert_file = 'cheshi_productionck.pem';//推送的证书地址,环境不要错了 $feedback_server = 'ssl://feedback.push.apple.com:2196';//feedback服务器地址 //沙盒环境地址是 ssl://feedback.sandbox.push.apple.com:2196 $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', $cert_file); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); $fp = stream_socket_client($feedback_server, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $ctx); if(!$fp){ print "Failed to connect feedback server: $error $errorString\n"; return false; }else{ print "Connection to feedback server OK\n"; } return $fp; } /** * @desc 连接本地的redis,用来存储获取到的token,也可以用其他方式存储 * @param $redis_server * * @return bool|Redis */ function connect_redis($redis_server){ $param = parse_url($redis_server); $redis = new Redis(); if($redis->connect($param['host'],$param['port'])){ print "connect redis OK"; }else{ print "failed to connect redis server"; return false; } return $redis; } /** * @desc 执行推送操作的主要代码 */ function feedback(){ $count1 = 0; $run_times = 0; $redis_server = "tcp://localhost:6379"; $iostokenremoved= 'iostokenremoved'; $iostokenremoved_num = 'iostokenremoved_num'; $fp = connect_feedback(); $redis = connect_redis($redis_server); //苹果建议provider和feedback服务维持一个长连接,如果频繁的建立连接可能会被当做攻击处理 $devcon =''; while($run_timesping()==='+PONG'){ print date('Ymd His').'|redis server disconnected'; @$redis->close(); unset($redis); $redis = connect_redis($redis_server); } //每次读取38个字段,这是保存的一个完整token 信息的长度 while ($devcon = fread($fp, 38)){ $count1 ++ ; $arr = unpack("H*", $devcon);//解包传过来的二进制数据 $rawhex = trim(implode("", $arr)); $feedbackTime = hexdec(substr($rawhex, 0, 8)); $feedbackDate = date('Y-m-d H:i:s', $feedbackTime); $feedbackDeviceToken = substr($rawhex, 12, 64); //记录被删除的token $redis->hSet($iostokenremoved,$feedbackDeviceToken,$feedbackDate); //记录每天的卸载数量 $redis->hIncrBy($iostokenremoved_num,date('Y-m-d',$feedbackTime),1); } echo 'FeedBack:'. $count1 . PHP_EOL; usleep(10000000);//sleep 10秒 } $redis->close(); fclose($fp); } //可以通过命令行来执行这个脚本 php -f feedback.php feedback if(isset($argc[1]) && function_exists($argv[1])){ $argv[1](); }else{ die('invalid input'); }
原文地址:php从苹果apns的feedback服务器获取推送失败的token, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

Deepseek Smart AIツールのダウンロードおよびインストールガイド(Appleユーザー)DeepSeekは、Appleユーザーをダウンロードしてインストールする方法をガイドします。 1.手順のダウンロードとインストール:AppStore App Storeを開き、検索バーに「DeepSeek」を入力します。アプリケーション名と開発者情報を注意深く確認して、正しいバージョンがダウンロードされていることを確認してください。 [アプリケーションの詳細]ページの[取得]ボタンをクリックします。最初のダウンロードでは、AppleIDパスワード検証が必要になる場合があります。ダウンロードが完了したら、直接開くことができます。 2。登録プロセス:DeepSeekアプリケーションでログイン/登録ポータルを見つけます。携帯電話番号に登録することをお勧めします。携帯電話番号を入力して、確認コードを受け取ります。ユーザー契約を確認し、

Bybit Exchangeリンクを直接ダウンロードしてインストールできないのはなぜですか? BYBITは、ユーザーにトレーディングサービスを提供する暗号通貨交換です。 Exchangeのモバイルアプリは、次の理由でAppStoreまたはGooglePlayを介して直接ダウンロードすることはできません。1。AppStoreポリシーは、AppleとGoogleがApp Storeで許可されているアプリケーションの種類について厳しい要件を持つことを制限しています。暗号通貨交換アプリケーションは、金融サービスを含み、特定の規制とセキュリティ基準を必要とするため、これらの要件を満たしていないことがよくあります。 2。法律と規制のコンプライアンス多くの国では、暗号通貨取引に関連する活動が規制または制限されています。これらの規制を遵守するために、BYBITアプリケーションは公式Webサイトまたはその他の認定チャネルを通じてのみ使用できます

アプリをダウンロードしてアカウントの安全を確保するために、正式なチャネルを選択することが重要です。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

この記事では、gate.ioの公式Webサイトにアクセスする方法、中国語を切り替え、アカウントに登録またはログインする方法、およびオプションのモバイルアプリのダウンロードと使用手順を詳細に説明します。 中国語でgate.ioを使用する詳細については、読み続けてください。

OUYI OKXは、ユーザーに安全で便利な取引体験を提供する世界をリードする暗号通貨交換です。ユーザーは、公式チャンネルを介してAndroidバージョンやAppleバージョンなど、OUYI OKXのモバイルアプリをダウンロードできます。

要約:この記事は、Appleデバイスに仮想通貨取引アプリケーションをインストールおよび登録する方法についてユーザーをガイドすることを目的としています。 Appleは仮想通貨アプリケーションに関する厳格な規制を持っているため、ユーザーはインストールプロセスを完了するために特別な措置を講じる必要があります。この記事では、アプリケーションのダウンロード、アカウントの作成、身元の確認など、必要な手順について詳しく説明します。この記事のガイドに従って、ユーザーはAppleデバイスに仮想通貨取引アプリを簡単に設定して取引を開始できます。
