初めてアプリをインストールして起動するとすぐに、startUpdatingLocation が呼び出されていないにもかかわらず、すぐに位置情報サービスが要求されます。その時点では、CLLocationManager インスタンスを割り当てさえしていません。ユーザーがやみくもにオフにしないように、実際に電話をかけた後、このプロンプトを遅延して実行したいと思います。最近iOSでこの流れが変わった?私はそれが怠惰に尋ねられたのを覚えています。5.1 ファームウェアを使用しています。
1 に答える
5
それは面白い。ロケーションマネージャーが割り当てられていないにもかかわらず、iOS ロケーション許可ダイアログが表示されるという仮説をテストしました。以下のトラブルシューティングを試しました。すべてのステップの後、デバイスでプロジェクトを実行しましたが、場所のポップアップは最後のステップでしか表示されませんでした。
- 新しいアプリを開始する
- info.plist でロケーション サービスを要求する
- info.plist で gps が必要
- CoreLocation をプロジェクトにリンクする
- Core Location をヘッダーにインポートする
- ロケーションマネージャー用のプロパティを作成して合成する
- CLLocationManager に +authorizationStatus を問い合わせる
- +locationServicesEnabled について CLLocationManager に問い合わせる
- CLLocationManager インスタンスを割り当てます
- CLLocationManager に位置情報の更新を開始するよう指示します。
最後のステップでのみプロンプトが表示されました。確かに、CLLocationManagerを初期化し、場所の更新を開始する2番目のView ControllerをプッシュするviewControllerを作成しました。許可ポップアップは、2 番目のビュー コントローラーがプッシュされたときにのみ表示されました。これはすべて、5.1 で実行されている最新の Xcode を使用したものです。
位置情報サービスは、以前の SDK で行われていたように、位置情報をオンにしようとした瞬間にのみ許可を求めることを示しました。おそらくコードを確認し、ここにいくつか貼り付けて、詳細を確認してください。:)
于 2012-04-13T21:40:57.417 に答える