How to access the user’s location with CLLocationManager on tvOS.

  1. Add the key NSLocationWhenInUseUsageDescription to your Info.plist.  Also add a default value that will be displayed in the prompt to the user.
  2. Add the key CFBundleDisplayName to your Info.plist.  Also add a default value that will be displayed as the App name in the home screen and in the prompt.
  3. Localize your prompt and display name by adding a InfoPlist.strings file.  This file can be located in the same directory as your Localizable.strings file.
    1. Add NSLocationWhenInUseUsageDescription and CFBundleDisplayName as keys and localize their values.

 

According to Apple you should create a strong reference to CLAuthorizationStatus and implement the CLLocationManagerDelegate. Below is some sample code:

        let authorizationStatus: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
        if (authorizationStatus == CLAuthorizationStatus.Restricted || authorizationStatus == CLAuthorizationStatus.Denied) {
            self.locationManager = nil
        } else {
            self.locationManager = CLLocationManager()
        }

        if (self.locationManager != nil) {
            self.locationManager!.delegate = self

            //Request Permission to Use Location Services
            if (authorizationStatus == CLAuthorizationStatus.NotDetermined) {
                self.locationManager!.requestWhenInUseAuthorization()
            }

            self.locationManager!.desiredAccuracy = kCLLocationAccuracyBest
            self.locationManager!.requestLocation()
        }

 

Documentation:
CLLocationManager

InfoPlist.strings

 

 

Did you find this post helpful? Support independent development and improve your sleep by downloading White Noise and Deep Sleep Sounds free from the App Store.

 

Tested with:

Xcode Version 7.2.1

tvOS 9.1.1

Swift 2.1.1

CLLocationManager and tvOS
Translate »