2011-12-19 15 views
1

私の会社は、購入または売却するのが楽しい時に、基本的に彼らに指示するデートトレーダー向けのiPhoneアプリを提供しています。サーバのクラスタはこれらの購入と売りの信号を生成し、1分以内に顧客のiOSデバイスに配信する必要があります。私たちが開発した他のすべてのモバイルクライアントでは、バックグラウンドで(1分に1回)サーバーをポーリングして、更新を確認することができます。信頼できるサーバーツーiPhoneメッセージ

しかし、iOSでは、applicationDidEnterBackgroundで時間やポーリングと関係があるものはオプションではないようです。

これは私にプッシュ通知を見させましたが、私が読んでいるところからは信頼できません。彼らは送付忘れの方法を採用していますが、それは彼らが受け取られる保証はありません。

この問題が確認できます。 BUY信号を出してユーザーがそれを操作すると、10分後にSELL信号が生成され、プッシュ経由で送信されますが、到着することはありません。

だから、これを行うには良い方法があるのでしょうか、私は運が尽きていますか?ありがとう!

+0

私はColloquy(IRCクライアント)のようなアプリケーションでは、かなりの時間にわたってTCP接続を開いたままにすることが許可されています。これは明らかにiPod touchユーザーやiPadユーザーにとっては役に立ちません。あなたのためのオプションかもしれません –

+0

ColloquyもAPNSを使用しているようですが、TCP接続が永続的であると主張する場所を教えてくれますか? – Submerged

+0

MMSメッセージがオプションであるかどうかを尋ねた人に私は、MMSやSMSがプッシュ通知よりも信頼できるとは考えていません。 – Submerged

答えて

1

サーバーとユーザーのデバイスの間には、a)Appleとb)ネットワークの2つの仲介があります。

Appleはすべての通知の配信を保証しません。最新のもののみが到着することが保証され、限られた期間のみ保証されます。詳細については、Apple Push Notification Serviceの「Quality of Service」のセクションを参照してください。

デバイスがモバイルキャリアを介してネットワークにアクセスしている場合、状況が悪くなる可能性があります。私はいくつかの通知がずっと遅くまで届かず、一部が完全に失われた状況を経験しました。私の経験から、キャリアはアップルのような第三者のサービスではなく、自らのサービスの質を熱心に保護します。通常、SMS/MMSは失われませんが、プッシュ通知は失われます。

サーバーのポーリングは、アプリの実行可能な代替方法です。悲しいかな、アップルはバックグラウンド状態になっているアプリ(ニューススタンドのダウンロードとVoIPを除く)のためのネットワーク操作を許可していません。

+1

これは私が疑ったことです - それは本当に残念ですが、より良い選択肢はありません。私はすべてが将来のバックグラウンドプロセスを可能にすることを願っていますが、ルールを悪用することはできません。 – Submerged

+0

「最新の情報のみ」が限定されている場合は、アプリが開始時に確認するための通知をサーバーに保存することができます。 – Greg

0

は、Apple独自のプッシュ通知サービスを使用してみてください:http://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

それは、アプリケーションと送信を行うには、サーバー上のPHPとJSONのビットで数行のコードだけで、実装するのは非常に簡単です。良いことは、サーバーがAppleに要求を送信し、Apple独自のサーバーがデバイスへの配信を安全かつ確実に処理することです。通知は通常、送信されてから10秒以内に配信されます(デバイスがオフラインでない場合、デバイスがオンラインになると配信されます)。

私はプッシュ通知の経験から、1つも失っていないし、成功するまで継続的に配信を試みる配信オプションがあり、利用可能なサーバー側のコールバックAPIもある通知のステータスを確認することができます。 Urban Airshipのようなサービスを試してみてください。


また、このような通知として「BUY」を受信して​​、アプリがバックグラウンドで「SELL」を待つ持っているように(この一環として、Appleのbackground modesのいずれかを使用して試みることができる。最大の制限があることですアプリはバックグラウンドで一度に約10分間しか実行できないため、バックグラウンドで音楽を再生する(または音楽トラックPのような株式アナウンスを行う)ような回避策を使用するか、ユーザーにアプリを再度開くように促す必要があります

+0

私はAPNSとsiを実装しました私たちはかなりの数を送り出しています。古いプッシュ通知が送信され、それが無効になる前に新しいプッシュ通知が送信されることがあります。私はアーバン飛行船をチェックします。 – Submerged

+0

バックアップされたAPIを使用している場合、最初のものが配信されてから**次のものを送信することもできます。 Appleにはステータスチェックを可能にするあいまいなAPIがあり、都市飛行船は同じことをやるためにあまりあいまいではないAPIを持っている。 APNSのアーキテクチャーは非常に機能的で柔軟性がありますが、あまりにもわかりにくいので、**できないものはほとんどありません。 – Greg

+0

これは知っておいてよかった!私はそれを確認します。彼らはまったく何も保証しないという事実はまだ私を心配しますが、私はこれが私が利用できる最良の解決策だと思います。 – Submerged

0

アプリによってはプッシュ通知がうまくいくように見えますが(GroupMe)、そうでないものもあります。あなたが本当に心配している場合は、Twilioのようなサービスを使って、あなたのアプリを開いていく情報をSMSメッセージに送ることができます。だから、SMSは "SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELL SELLEL:// stock stock

関連する問題