私のSwift-iOSアプリは、ユーザーの位置を地図上に表示することを目的としています。ただし、XCodeデバッグコンソールから、ユーザーの場所を表示するためのアクセス許可を求める必要があると表示されます。私はそう思いますが、ダイアログは表示されません。
これがエラーメッセージで、ViewControllerの下でCLLocationManager::requestWhenInUseAuthorization()
を呼び出します。
エラー:
2014-06-30 21:25:13.927 RowingTracker2 [17642:1608253]ロケーション認証のプロンプトを表示せずにMapKitロケーションアップデートを開始しようとしています。最初に-[CLLocationManagerrequestWhenInUseAuthorization]または-[CLLocationManagerrequestAlwaysAuthorization]を呼び出す必要があります。
ViewController:
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet var mapview: MKMapView = nil
var locationmgr : CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationmgr = CLLocationManager()
locationmgr.requestWhenInUseAuthorization()
mapview.showsUserLocation = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
場所を使用するための認証をリクエストするにはどうすればよいですか?あなたは完全なプロジェクトを見つけることができます ここ 。( コミット )
ViewControllerをCLLocationManagerDelegate
から継承させ、示されているようにデリゲートをself
に設定しても、 ここ は役に立ちません。
IOS 8以降、request ...関数のいずれかを呼び出して、Info.plistファイルにNSLocationWhenInUseUsageDescription
またはNSLocationAlwaysUsageDescription
のいずれかの適切なエントリを追加する必要があります。
詳細については、リファレンスを参照してください ここ
それを確認してください
Debug > Location
で行います。デバッグ領域:
RequestWhenInUseAuthorizationを使用する必要があり、NSLocationWhenInUseUsageDescriptionという名前の値をyourapp-Info.plistに作成する必要もあります。
許可を求めるときにポップアップするテキストとして値を指定してNSLocationAlwaysUsageDescription
を使用します。
「24時間年中無休であなたをスパイする許可を求めています」
また、値をメッセージとしてNSLocationWhenInUseUsageDescription
を追加します。
AsDavid Berry、Cayke PrudenteandLevi Johnsonが言及しましたが、NSLocationAlwaysUsageDescription
をInfo.plist
ファイルに追加する必要がありました。なぜこれが必要なのかをもっと理解するために、私はさらなるドキュメントに行き、ここで共有しています。
ユーザープロンプトには、アプリのInfo.plistファイルにNSLocationWhenInUseUsageDescriptionキーからのテキストが含まれており、このメソッドを呼び出すときはそのキーの存在が必要です。