特定の時間間隔 (5 秒など) で繰り返し HTTP GET 要求を実行し、応答を使用して何か (ビュー ラベルなど) を更新するアプリが必要です。ただし、これはユーザーが行っていることとは無関係に実行する必要があります。これを行う適切な方法は何ですか?私の現在の唯一の考えは、これを行うクラスを作成し、ビューコントローラーにこのクラスをデリゲートとして使用させることです。ただし、私は iOS にかなり慣れていないため、これが正しい方法であるかどうか懐疑的です。助言がありますか?感謝!
2 に答える
NSTimer を使用します。
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(HTTPRequest:)
userInfo:nil
repeats:YES];
これにより、5.0 秒ごとに HTTPRequest メソッドが呼び出されます。
指定された時間間隔で繰り返し... HTTP GETリクエストを実行して更新します
これはポーリングと呼ばれ、できる限り避けるべきものです。これを回避する最善の方法の 1 つは、継続的に質問するのではなく、何かが変更されたときにサーバーに知らせてもらうことです。これはまさに、プッシュ通知が促進するように設計されているものです. 通知により、アプリが行うネットワーク リクエストの数が大幅に減少し、バッテリー電力とユーザーのデータ プランの両方が節約されます。
そのため、管理できる場合は、ポーリングの代わりにプッシュ通知を使用してください。主な例外は、取得するものがリクエストするたびに変更されることがわかっている場合で、新しい値を自分で計算することはできず、ユーザーが実際にそれぞれの新しい値を確認することを気にかけていることがわかっている場合です。
これは、ユーザーが行っていることとは無関係に実行する必要があります
情報に対して行っていることがディスプレイの更新だけである場合、ユーザーが行っていることとは無関係に実行するべきではありません。このリクエストを 5 秒ごとに行うと、毎分 12 回の不要なリクエストが発生し、ユーザーはリクエストの結果を見る以外のことを行っていることになります。常に最新の情報を利用できるオブジェクトを持つことの魅力は理解できますが、バッテリーの電力とデータ転送の点で実際にコストがかかります。(また、サーバーに不必要に高い負荷がかかります。)
ユーザーがデータを使用する可能性が高い場合にのみ、データをフェッチする方がはるかに優れています。