2011-07-08 16 views
0

)簡単な質問:PHPで複数のプッシュ通知の配信をどのように構成しますか?具体的には、複数のプッシュ通知メッセージを1回のfwrite()呼び出しに「パックする」方法は?iOS APNS:プッシュ通知キューの作成(

私は単に$ apnsMessage文字列に多くのメッセージ/ペイロードを追加し続けることができます?:

// [connect to service] 
// Packing the payload (for a single message) 
$apnsMessage = chr(0) . chr(0) . chr(32); 
$apnsMessage .= pack('H*', str_replace(' ', '', $recipientToken)); 
$apnsMessage .= chr(0) . chr(strlen($payload)) . $payload; 

// Write the payload to the APNS 
fwrite($apns, $apnsMessage); 

// [close connection to service] 

ロングバージョン:

をAppleがバッチ処理のプッシュ通知にアプリケーションを必要とするため(数回の連続を最小限に抑えます彼らのAPNSへの接続)、私はphp-apnsのlib & memcacheを使用せずに仕事をすることができますPHPで何かを構築しようとしています。私が見つけることができるリソースの99%がシングルのプッシュ通知に関するものなので、私はここでいくつかのガイダンスを見つけることができたと思っていました。私は単純に各メッセージをmysqlテーブル(キュー)に追加してからx分ごとに繰り返し、すべての未送信メッセージを送信します。

このアプローチに役立つ例やリンクはありますか?

ありがとうございます。

答えて

2

はい、メッセージを追加し続けることができます。バイナリプロトコルフォーマットでは、具体的には厳密なメッセージ長が必要なため、1つのメッセージを次の行と区別することができます。理想的には、長いバイナリ文字列を1日中Appleのサーバーに送ることになります。

バッチ処理は理想的ではありませんが、通常はAPNサーバーとのオープン接続を維持し、必要に応じて新しいメッセージを接続に書き込むデーモンとして実装することをお勧めします。

+0

わかりました。だから、Appleが一度にいくつかのメッセージを好むのではなく、APNS接続自体が頻繁に接続を解除する+接続を切断するということではないのですか? @Chazbot右。 – Chazbot

+0

ドキュメントのどこかに、Appleがあなたにディスカッション/接続を頻繁にペナルティを科すことが明示されています。接続を確立するには、実際のメッセージをプッシュするよりもオーバーヘッドが多く、アイドル状態の接続を開いたままにするのは基本的に無料です。したがって、個々のメッセージごとに接続している場合は、多くのリソースを使用しています(自分自身でも、BTWでも)。 – deceze

関連する問題