2017-07-17 7 views
0

30秒〜1分ごとにバックグラウンドで場所をアップロードします。出来ますか? 私はUIApplicationBackgroundFetchIntervalMinimumを設定できることがわかりました。しかし、私はこの定数の周りを見て、約30分ごとにデバイスにフェッチするようにデバイスに指示します。それを行うには?ありがとう。定期的にバックグラウンドフェッチする

答えて

0

私は30秒ごとに場所をアップロードするためのあなたの正確な目的を知らない。そうすることはお勧めしません。私はあなたがのために行くことができると思うMonitoringSignificationChangesCoreLocationのフレームワーク。それは、場所に大きな変化がある場合は必ず更新します。それはを節約するのに役立ちます。

は、次のような方法で重要な位置変化に基づいて、アップデートの生成を開始します:

func startMonitoringSignificantLocationChanges() 

この方法は、あなたがそれを呼び出す直後に戻って、非同期に位置イベントの配信を開始します。ロケーションイベントは、代理人のlocationManager(_:didUpdateLocations:)メソッドに配信されます。配信される最初のイベントは、通常は最も最近キャッシュされたロケーションイベント(存在する場合)ですが、場合によってはより新しいイベントになる場合もあります。現在の位置情報の取得にはさらに数秒かかる場合がありますので、デリゲートメソッドのロケーションイベントのタイムスタンプを確認してください。

フォアの詳細情報:Apple Docs

+0

私はすでに試みました。ユーザーが移動しない場合、このデリゲートメソッドは呼び出されません。私は、アプリに更新を伝えるために静かな通知を使用しようとしました。しばらく送信した後、APNサーバーは約20分間送信を停止します。そしてタイマーも試しました。 –

+0

@CarlHungあなたもそうするべきではありません。https://stackoverflow.com/questions/41021733/is-using-core-location-for-performing-functionality-in-the-groundground-appropriat –

+0

サイレントプッシュ通知を送信するあまりにも多くの時間は、APNSを介した配信を保証するものではありません。リクエストが多すぎる場合は無視します –

0

あなたのアプローチは複数の問題があります。ほとんどのアプリは、バックグラウンドで連続して実行することは許可されていません。あなたは3分のバックグラウンド時間を得て、あなたのアプリは中断されます。ナビゲーションアプリは例外です。あなたのアプリがナビゲーションアプリの場合は、バックグラウンドで連続して実行することができます。

あなたがナビゲーションアプリでない限り、30秒ごとにGPSをポーリングすることも悪い考えです。あなたはすぐにユーザーのバッテリーを消耗します。

同様に、30秒ごとにユーザーの場所をアップロードすると、携帯電話の無線/ WiFi無線がほぼ常に電源を入れられます。これにより、ユーザーのバッテリが非常に急速に消耗します。

関連する問題