ホームページ php教程 php手册 php从苹果apns的feedback服务器获取推送失败的token

php从苹果apns的feedback服务器获取推送失败的token

Jun 06, 2016 pm 08:13 PM
apns feedback php 押す サーバ りんご 得る

注意事项: 1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的); 2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间 3.返回的数据由三部分组成,请看下面的图 结

注意事项:

1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的);

2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间

3.返回的数据由三部分组成,请看下面的图

1357647920_4440结构中包含三个部分,第一部分是一个上次发推送失败的时间戳,第二个部分是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');
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apr 28, 2025 pm 06:57 PM

OUYI Exchangeアプリは、Apple携帯電話のダウンロードをサポートし、公式Webサイトにアクセスし、「Apple Mobile」オプションをクリックして、App Storeに入手してインストールし、登録またはログインして暗号通貨取引を実施します。

gate.ioセサミドア最新の公式アプリアドレス gate.ioセサミドア最新の公式アプリアドレス Apr 22, 2025 pm 01:03 PM

公式gate.ioアプリは、次の方法でダウンロードできます。1。公式Webサイトgate.ioにアクセスしてダウンロードします。 2。AppStoreまたはGoogle Playで「gate.io」を検索してダウンロードします。安全性を確保するには、公式チャンネルからダウンロードしてください。

session_start()が複数回呼び出されるとどうなりますか? session_start()が複数回呼び出されるとどうなりますか? Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

デジタル通貨交換アプリ向けのトップ10のAppleバージョンダウンロードポータルの概要 デジタル通貨交換アプリ向けのトップ10のAppleバージョンダウンロードポータルの概要 Apr 22, 2025 am 09:27 AM

さまざまな複雑な取引ツールと市場分析を提供します。 100か国以上をカバーし、1日の平均デリバティブ取引量は300億米ドルを超え、300を超える取引ペアと200倍のレバレッジをサポートし、強力な技術的強さ、巨大なグローバルユーザーベース、専門的な取引プラットフォーム、安全なストレージソリューション、豊富な取引ペアを提供します。

複数の通貨をサポートする上位10の仮想通貨取引プラットフォームのリスト 複数の通貨をサポートする上位10の仮想通貨取引プラットフォームのリスト Apr 22, 2025 am 08:15 AM

OKXやCoinbaseなどの準拠プラットフォームが優先され、多要素検証が可能になり、資産の自己義が依存関係を削減できます。 2。2FAのホワイトリストをオンにし、引き出します。 3.ハードウェアウォレットまたは自立をサポートするプラットフォームを使用します。

セサミオープンドア公式ウェブサイトエントランスセサミオープンドア公式最新の入り口2025 セサミオープンドア公式ウェブサイトエントランスセサミオープンドア公式最新の入り口2025 Apr 28, 2025 pm 07:51 PM

Sesame Open Doorは、暗号通貨取引に焦点を当てたプラットフォームです。ユーザーは、公式ウェブサイトまたはソーシャルメディアを介してポータルを取得して、アクセス中にSSL証明書とWebサイトコンテンツの信頼性が検証されるようにすることができます。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

See all articles