web-dev-qa-db-ja.com

iOSアプリは位置情報の許可を要求しません

私の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に設定しても、 ここ は役に立ちません。

9
Unapiedra

IOS 8以降、request ...関数のいずれかを呼び出して、Info.plistファイルにNSLocationWhenInUseUsageDescriptionまたはNSLocationAlwaysUsageDescriptionのいずれかの適切なエントリを追加する必要があります。

詳細については、リファレンスを参照してください ここ

更新

それを確認してください

  1. マップはシミュレートされた場所の中心にあります。
  2. また、場所がシミュレートされていることを確認してください。 XCode(画像を参照)のデバッグ領域(下)で行うか、シミュレータのDebug > Locationで行います。

デバッグ領域: Location Simulation in the debug area

26
David Berry

RequestWhenInUseAuthorizationを使用する必要があり、NSLocationWhenInUseUsageDescriptionという名前の値をyourapp-Info.plistに作成する必要もあります。

8
Cayke Prudente

許可を求めるときにポップアップするテキストとして値を指定してNSLocationAlwaysUsageDescriptionを使用します。

「24時間年中無休であなたをスパイする許可を求めています」

また、値をメッセージとしてNSLocationWhenInUseUsageDescriptionを追加します。

2
Levi Johnson

AsDavid BerryCayke PrudenteandLevi Johnsonが言及しましたが、NSLocationAlwaysUsageDescriptionInfo.plistファイルに追加する必要がありました。なぜこれが必要なのかをもっと理解するために、私はさらなるドキュメントに行き、ここで共有しています。

ユーザープロンプトには、アプリのInfo.plistファイルにNSLocationWhenInUseUsageDescriptionキーからのテキストが含まれており、このメソッドを呼び出すときはそのキーの存在が必要です。

https://developer.Apple.com/documentation/corelocation/cllocationmanager/1620562-requestwheninuseauthorization

0
finx