2012-06-29 7 views
8

मैं एक मैक ऐप लिख रहा हूं जिसे कोरलोकेशन सेवाओं का उपयोग करने की आवश्यकता है। कोड और स्थान ठीक काम करता है, जब तक मैं सुरक्षा वरीयता फलक के अंदर सेवा को मैन्युअल रूप से प्रमाणित करता हूं। हालांकि ढांचे स्वचालित रूप से अनुमति संवाद के साथ पॉप अप नहीं हो रहा है। दस्तावेज़ीकरण में कहा गया है:मैक कोरलोकेशन सेवाएं अनुमतियों के लिए नहीं पूछती हैं

महत्वपूर्ण उपयोगकर्ता के पास स्थान सेवा डेटा पर एप्लिकेशन का उपयोग अस्वीकार करने का विकल्प है। एप्लिकेशन द्वारा प्रारंभिक उपयोग के दौरान, कोर लोकेशन फ्रेमवर्क उपयोगकर्ता को की पुष्टि करने के लिए संकेत देता है कि स्थान सेवा का उपयोग स्वीकार्य है। यदि उपयोगकर्ता अनुरोध से इनकार करता है, तो CLLocationManager ऑब्जेक्ट भविष्य में अनुरोधों के दौरान के प्रतिनिधि को उपयुक्त त्रुटि रिपोर्ट करता है।

मुझे अपने प्रतिनिधि को एक त्रुटि मिलती है, और + locationServicesEnabled का मूल्य CLLocationManager पर सही है। अनुपलब्ध एकमात्र भाग उपयोगकर्ता को अनुमतियों के बारे में संकेत है। यह मेरे विकास एमपीबी और एक दोस्त एमबीपी पर होता है। हम में से कोई भी यह नहीं समझ सकता कि क्या गलत है।

क्या कोई इस में भाग लेता है?

प्रासंगिक कोड:

_locationManager = [CLLocationManager new];  
[_locationManager setDelegate:self]; 
[_locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer]; 
... 
[_locationManager startUpdatingLocation]; 
+0

एक शुरुआत –

+0

यह सामान्य त्रुटि CoreLocation ढांचे जब यह एक उपयोगकर्ता पता लगाने में असमर्थ है देता है के लिए हमें त्रुटि का पूरा विवरण दे। 'kCLErrorLocation अज्ञात' –

+0

कृपया आप बग रिपोर्ट के लिए रडार आईडी प्रदान कर सकते हैं, मुझे इसे ASAP पर देखा जाएगा। –

उत्तर

2

मैंने पाया कि मैक पर, कि जब आप स्थान सेवाओं को प्रारंभ बुला

[locationManager startUpdatingLocation]; 

यह चलाता है

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

की स्थिति के साथ द्वारा
kCLAuthorizationStatusNotDetermined 

यदि आप इस स्थिति को देखते हैं, तो फिर स्थान को अपडेट करना प्रारंभ करें, यह अनुमति संवाद को ट्रिगर करता है: उदा।

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 
{ 
    switch (status) { 
     case kCLAuthorizationStatusAuthorized: 
      NSLog(@"Location Services are now Authorised"); 
      [_locationManager startUpdatingLocation]; 

      break; 

     case kCLAuthorizationStatusDenied: 
      NSLog(@"Location Services are now Denied"); 
      break; 

     case kCLAuthorizationStatusNotDetermined: 
      NSLog(@"Location Services are now Not Determined"); 

      // We need to triger the OS to ask the user for permission. 
      [_locationManager startUpdatingLocation]; 
      [_locationManager stopUpdatingLocation]; 

      break; 

     case kCLAuthorizationStatusRestricted: 
      NSLog(@"Location Services are now Restricted"); 
      break; 

     default: 
      break; 
    } 
} 
संबंधित मुद्दे