web-dev-qa-db-ja.com

アクティブな場合にのみ位置情報サービスを使用するアプリの青いバナー「%MyApp%は現在地を使用しています」

私のアプリでは、アプリがアクティブになるたびにユーザーの場所を更新しています。更新された場所を受信したら、またはapplicationWillResignActive:で、CLLocationManagerを停止します。 Info.plistには、適切な説明が記載されたNSLocationWhenInUseUsageDescriptionがあります。

アプリがアクティブ化されてすぐに背景に移動すると、「%MyApp%は現在地を使用しています」という青いバナーが1秒以内に表示されます。このバナーは、applicationWillResignActive:が呼び出されるとすぐに非表示になります。

Googleマップでも同じ問題に気づきましたが、Apple Mapsではありません。

このバナーを完全に取り除く方法はありますか? iOSを幸せにするために他にすべきことはありますか?ユーザーを驚かせて、場所を必要とするクールな機能をユーザーが使用できないようにしたくありません。

10
kjam

Info.plistでlocationBackground modeとして設定している可能性があります。これを削除すると、青いバーは表示されなくなります。

または、requestAlwaysAuthorizationrequestWhenInUseAuthorizationの代わりにCLLocationManagerを使用できます(そしてinfo.plistファイルに関連するNSLocationAlwaysUsageDescriptionを指定します)。どちらかが表示されます。

私の場合、アプリがバックグラウンドで場所を使用している場合があります。その場合は、青いバーを表示したいと思います。しかし、バックグラウンドで場所を指定せずにアプリを終了するときに表示されたくありません。私の知る限り、それを達成することは不可能です(私はそれについて尋ねました ここ )。

[〜#〜] edit [〜#〜]:iOS-9以降では、青いバーが次の場合にのみ表示されるようにすることができます。ユーザーは実際にアプリがバックグラウンドで場所を使用することを望んでいます。 この回答 を参照してください。

12
fishinear