2017-07-10 32 views
5

पर CLLocationManager के लिए ऑथ का अनुरोध कैसे करें I docs के अनुसार, CLLocationManager का उपयोग करने वाले स्विफ्ट 3 में एक ओएसएक्स ऐप लिख रहा हूं और मुझे जो भी उदाहरण मिलते हैं, वे ठीक होना चाहिए (यह एक वर्ग में है एक CLLocationManagerDelegate)मैकोज़

if CLLocationManager.locationServicesEnabled() { 
    let lm = CLLocationManager()    
    lm.requestWhenInUseAuthorization()    
    lm.delegate = self 
    lm.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
    lm.startUpdatingLocation() 
    print("should start getting location data") 
} else { 
    print("Location service disabled"); 
} 

है लेकिन ऐसा लगता है requestWhenInUseAuthorization (और requestAlwaysAuthorization) OSX के लिए उपलब्ध नहीं हैं।

#if os(macOS) 
    // can't find way for MacOSX to request auth 
#endif 

#if os(watchOS) || os(tvOS) 
    lm.requestWhenInUseAuthorization() 
#endif 

#if os(iOS) 
    lm.requestAlwaysAuthorization() 
#endif 

तो किसी को पता है कि कैसे एक MacOS डेस्कटॉप अनुप्रयोग में इस काम के पाने के लिए: मैं वर्तमान में उन फ़ंक्शन कॉल #if ब्लॉक में लिपटे मिल गया है?

उत्तर

3

Core Location Best Practices WWDC 2016 सत्र के अनुसार,

MacOS लिए, हम केवल हमेशा प्राधिकरण समर्थन करते हैं। इसके अलावा, कोर स्थान पहुंच स्थान जानकारी का प्रयास करते समय स्वचालित रूप से एक संकेत प्रदर्शित करेगा।

आपको अनुरोध करने की आवश्यकता नहीं है हमेशा मैकोज़ पर प्राधिकरण।

अपने लक्ष्य के लिए "ऐप सैंडबॉक्स" क्षमता के तहत "स्थान" चालू करना न भूलें। इसके अलावा, मेरे परीक्षणों में, प्रॉम्प्ट केवल पहली बार ऐप चलाया गया था दिखाया गया था।