0

ユーザーがオファーの範囲に入るとアラートが表示されるグルーポンのようなアプリで作業しています。

クライアントは、アプリがバックグラウンドにある場合でもアラートを表示することを主張します。

システムのアーキテクチャにより、アプリは一定間隔でクライアントの位置を取得し、新しいアラートがあるかどうかをサーバーに確認します。その場合、アプリはローカル データベースで何らかの処理を行い、通知を表示します。

サーバーの変更はこのプロジェクトに届かないため、APN は使用できません。

私の質問は、AppleがAppleStoreでそれを受け入れるかどうかです.

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html

ウェイクアップ時に、アプリはバックグラウンドに入り、位置データを処理するための短い時間が与えられます。アプリはバックグラウンドにあるため、最小限の作業を実行し、割り当てられた時間が経過する前に戻るのを妨げる可能性のあるタスク (ネットワークへのクエリなど) を回避する必要があります。そうでない場合、アプリが終了する可能性があります

ありがとう

4

2 に答える 2

2

アプリがユーザーから位置情報を取得する頻度は? Apple のBackground Execution and Multitaskinglocationによると、定期的なスケジュール (10 分未満だと思います) で位置情報の更新を取得している場合UIBackgroundModesinfo.plist. これらのCLLocation座標を使用して、Web サービス要求を処理できます。

私は個人的にこのようなことをしたことがないので、Apple があなたのアプリを拒否するかどうかはわかりません。ただし、すべてが Apple によって設定されたガイドラインと要件の範囲内にある場合、なぜ彼らがあなたのアプリを拒否するのかわかりません.

編集

アップルのドキュメントから:

(バックグラウンドであっても) ユーザーに継続的な位置情報更新を提供するアプリは、その Info.plist ファイルに UIBackgroundModes キー (位置値を含む) を含めることで、バックグラウンド位置情報サービスを有効にすることができます。この値を UIBackgroundModes キーに含めても、システムがアプリを一時停止することはできませんが、配信する新しい位置データがある場合は常にアプリを起動する必要があることをシステムに伝えます。したがって、このキーを使用すると、アプリをバックグラウンドで実行して、場所の更新が発生するたびに処理できます。

アプリが一時停止していても、新しい位置情報が配信されるたびにアプリが起動すると思います。

于 2013-02-28T02:27:37.633 に答える
1

このアプリケーションのアプローチを再考する必要があると思います。アプリが実行されるデバイスの特性に必ずしも十分な情報が与えられていない、または適切に適合しているとは限らない一連の機能を構築することを決定したようです。

「アプリは n 分ごとに位置情報を取得する」と書いていますが、それは iOS 位置情報サービスの仕組みではありません。アプリがフォアグラウンドで実行されている場合は、位置情報サービスに現在の場所をクエリすることは良い方法ですが、アプリが一時停止または終了すると、それは選択肢になりません。代わりに、ある程度の精度で位置情報イベントをサブスクライブする必要があります。これにより、デバイスの位置が変更されたときにアプリに通知されます。これらのイベントを受信するスケジュールについて保証はなく、要求する精度とデバイスの移動速度によって異なります。

さらに、場所の取得はコストのかかる操作であり、デバイスのバッテリーをすぐに消耗させる可能性があります。ユーザーの利用可能なバッテリー電力を 1 時間か 2 時間で使い切ることは、アプリをすばやくアンインストールするための非常に良い方法です。可能であれば、重要な位置変更サービスを使用して、最小限の電力消費で精度の低い位置更新を取得する必要があります。さらに精度が必要な場合は、定義された領域に対して境界交差イベントを使用することを検討するか、少なくとも要求された精度を可能な限り下げてください。

場所の更新によって開始されたアプリを実行しなければならない限られた時間内に作業する必要があります。サーバーへのラウンドトリップを行うには、おそらく十分な時間ではありません。ネットワーク接続が既にアクティブで、デバイスのレイテンシがたまたま低い場合は、おそらく応答が返されることがありますが、OS によってアプリが頻繁に終了されることが予想されます。その場合、アプリを再起動する可能性のある位置情報の更新を引き続き受け取るかどうかはわかりません.

アラートのリストをダウンロードしてローカルに表示する代わりに、場所が大幅に変更された場合に、現在の場所を UDP 経由でサーバーに送信することをお勧めします。そうすれば、応答を待たずにネットワーク リクエストを送信できます。これらのリクエストの一部のみが成功しますが、少なくともアプリが終了することはありません。その後、サーバーで受信した場所を処理し、必要に応じてプッシュ通知を送信できます。

サーバー側の変更を行うことができないようです。その場合、できる最善の方法は、アプリの実行時に近くのリージョンのアラートをプリフェッチすることです (バックグラウンドでラウンドトリップを完了することができた場合)。そうすれば、位置情報の更新をそのリストと比較でき、位置情報が更新されるたびにネットワーク リクエストを送信する必要がなくなります。残念ながら、現在の制約の下では信頼できるソリューションを利用できず、ここで窮地に追い込まれているようです。

于 2013-02-28T03:35:25.950 に答える