1

バックグラウンドでの位置情報の更新に登録されているアプリで coreLocation を使用しています。アプリがバックグラウンドで動作しているときに、データをダウンロードして保存するために Web サービスにネットワーク呼び出しを行うことはできますか? バックグラウンドでどれだけのことができるかを判断するのに問題があります。

例として、ユーザーが自分の場所を大幅に変更した場合、その場所の天気をリクエストしてログに記録する気象サービスを呼び出すことができますか?ウェブサービス)?彼/彼女が行った場所とその時の天気のリストが表示されます。

データをダウンロードするためにバックグラウンドでネットワーク接続とリクエストを行うことはできますか? それとも私はどういうわけか制限されていますか?? それとも、プロセスにかかる時間によって制限されているだけですか。

アプリが継続的にこれを行っている場合、バッテリーとネットワークの料金の落とし穴を理解しています. 今のところ、それは重要ではありません。アプリがバックグラウンドにある間のデータのダウンロードに関する詳細を探しているだけです。

前もって感謝します -

4

3 に答える 3

2

バックグラウンドで位置情報サービスに登録したからといって、アプリがバックグラウンドで実行されているとは限りません。基本的に、ロケーション マネージャーがロケーション イベントを送信すると、デリゲート呼び出しを処理するために起動されます。現在地がしばらく変わらない場合、アプリは一時停止され、終了することもあります。ロケーション マネージャーはそれを起動し、新しいロケーション イベントが処理されるときに限られた時間で作業を行うことができます。

beginBackgroundTaskIdentifier および endBackgroundTaskIdentifier 呼び出しでラップされた更新データの呼び出しを開始すると、ネットワーク データ メソッドを処理する適切な機会が得られるはずです。そのプロセスを開始したり、バックグラウンドで一時停止している可能性があるときにいつでも処理されるとは思えません。

psoft が参照するリンクは、バックグラウンドでプロセスを管理する方法についてのより良いアイデアを提供します。

于 2012-11-30T03:19:26.263 に答える
0

大きな PDF をダウンロードする私のアプリでは、このコードを使用して、ユーザーがホーム ボタンを押してアプリをバックグラウンド状態にしたときに、最大 10 分間 PDF のダウンロードを続行します。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
    UIApplication  *app = [UIApplication sharedApplication];
    UIBackgroundTaskIdentifier bgTask;

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
    [app endBackgroundTask:bgTask]; 
    }];
}
于 2012-11-30T04:18:50.383 に答える
0

アプリを一時停止すると、システムはネットワーク接続を切断する可能性があり、切断します。「非アクティブ」(移行)状態の間、または「バックグラウンド」にあるが「一時停止」状態になる前に、既存の接続が作業を完了するのに時間がかかると思います。また、「一時停止」に移行する前に、「バックグラウンド」でより多くの時間をリクエストできます。ここで「バックグラウンド実行とマルチタスキング」をお読みください。ネットワーク接続を維持できる唯一のタイプのサービスは、ニューススタンドのダウンロードと VOIP アプリです。

于 2012-11-30T00:35:10.770 に答える