2017-09-30 12 views
1

私は、バックグラウンドで連続的に位置を追跡し、ユーザーが特定の地域を入力したときに高精度で通知するシンプルなiOSアプリケーションを作成しようとしています(地域監視を使用したくない正確ではないか、または私が欲しいもののために十分に速い)。バックグラウンドでの継続的なiOSの位置情報の更新

このアプリはフォアグラウンドで正常に機能しますが、一度バックグラウンドに入ると機能しません。

バックグラウンドでのアップデートの動作を調べるテストアプリを作成しました。私は場所の更新がログに記録されたときにメッセージを出力するだけの簡単なアプリを作った。

フォアグラウンドモードでは、アップデートは予想どおりに行われますが、携帯電話をロックしてアプリがバックグラウンドに切り替わると、位置の更新は約30秒間起きてから停止します。この挙動を説明しているAppleの文書(私が見つけることができる)に言及していない。

私は(「機能」で行わ>「位置情報の更新」 - - >「バックグラウンドモード」)のInfo.plistでバックグラウンド処理を有効にすることを確認しましたここで私がテストするために使用されるコードがある

これは

どのようなアイデアがありますか?私は別の位置精度設定(BestForNavigationなど)や変更を試してみました。

ありがとうございました。

+0

を追加します(アプリがフォアグラウンドにあるときにMacに印刷することによってのみ動作します)。テストするために、didUpdateLocationsの内部にローカル通知を送信するコードを追加しました。バックグラウンドに切り替えると、場所が更新されるたびに通知が送られてきました。バックグラウンドに切り替えた後約30秒間通知があり、その後停止しました。 – Morocco5

+0

また、明確にするために、私はinfo.plistの場所のバックグラウンド処理モードを許可しました – Morocco5

答えて

1

あなたのPLISTでこれを追加する必要があります。

<key>UIBackgroundModes</key> 
<array> 
    <string>location</string> 
</array> 

は、私は位置情報の更新をテストするために、バックグラウンドでprint文が動作しないことを明確にしたかったこの

locationManager.allowsBackgroundLocationUpdates = true 
+0

返信いただきありがとうございます。私は既にinfo.plistにこの設定をしています。ダブルチェックとして、私は生のファイルを見ていたし、私は(予想通り)これを見る行います\t UIBackgroundModes \t \t \t 場所 \t Morocco5

1

私はこれが答えかもしれないと思う:一時停止時に位置更新を受信したい allowsBackgroundLocationUpdates.

アプリは、自分のアプリの Info.plistファイルで(場所値で) UIBackgroundModesキーを含める必要がありますし、このプロパティの値をtrueに設定します。

...このプロパティの

デフォルト値はfalseです。

あなたはそれを設定していますか?

+0

はい、これが設定されています。 – Morocco5

+0

あなたは、電話機のロックについて言及します。あなたの携帯電話をロックしないで、アプリをバックグラウンドでホーム画面に移動するだけで同じことが起こりますか? – clarus

+0

電話機をロック解除しても問題なく動作します。バックグラウンドでのみ中断されます。しかし、 "allowsBackgroundLocationUpdates"を追加することでそれが機能しました。 – Morocco5

関連する問題