iphone - आईओएस कोरलोकेशन अमेरिका में 3 जी पर काम नहीं कर रहा है



gps core-location (2)

आपने kCLLocationAccuracyBestForNavigation की इच्छित सटीकता का उपयोग करने के लिए CLLocationManager सेट किया है, लेकिन आप स्थान की सटीकता की तुलना 200 मीटर की सटीक सटीकता से कर रहे हैं। kCLLocationAccuracyBestForNavigation एक अपारदर्शी प्रकार के साथ, आप कैसे जानते हैं कि प्रबंधक 200 मीटर सटीकता के लिए भी प्रयास कर रहा है? जब मुझे स्थान अपडेट प्राप्त होते हैं, तो मैं यह देखने के लिए जांच करता हूं कि क्या मेरे स्थान प्रबंधक पर निर्धारित सटीकता से सटीकता कम या उसके बराबर है।

मेरा ऐप उत्तर अमेरिका में 3 जी से अधिक लंबा / लंबा निर्देशांक निर्धारित करने में असमर्थ है। यह वाई-फाई से कनेक्ट होने पर पूरी तरह से काम करता है यह एटी एंड टी और वेरिज़ोन दोनों के साथ आईओएस 5 के साथ पुष्टि की गई है। ब्रिटेन में यह ओ 3 के साथ 3 जी और वाई-फाई के साथ अपेक्षित काम करता है।

मुझे वाकई इस बात का खतरा है कि इसका कारण क्या हो सकता है। मुझे लगता है कि मेरा कोड सटीकता के संबंध में काफी माफ़ कर रहा है, लेकिन जैसा कि मैं तालाब के दूसरी ओर हूं, मैं दूर हो सकता है?

क्या कोई मेरे कोड में ग़लत गलतियों को खेल सकता है? (मैंने कुछ असंबंधित विधियों को हटा दिया है)

static NSTimeInterval MaxLocationAge = 60.0; // Seconds.
static CLLocationAccuracy DesiredHorizontalAccuracy = 200.0; // Meters.
static NSTimeInterval UpdateTimeout = 30.0; // Seconds.

@implementation AFLocation

@synthesize locationManager = _locationManager, delegate = _delegate, bestEffortAtLocation = _bestEffortAtLocation, updateStartedAt = _updateStartedAt;

- (id)init
{
    self = [super init];
    if (self) {
        CLLocationManager *manager = [[CLLocationManager alloc] init];
        self.locationManager = manager;
        [manager release];
        self.locationManager.delegate = self;
        self.locationManager.distanceFilter = kCLDistanceFilterNone;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;    
    }
    return self;
}

- (void)update
{
    self.updateStartedAt = [NSDate date];
    isUpdating = YES;
    [self.locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {

    if ([[NSDate date] timeIntervalSinceDate:self.updateStartedAt] > UpdateTimeout) {
        [self.locationManager stopUpdatingLocation];
        if (isUpdating) {
            [self updateDidTimeout];            
        }
        isUpdating = NO;
    }

    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];

    if (locationAge > MaxLocationAge) {
     return;   
    }

    if (newLocation.horizontalAccuracy < 0) {
        return;
    }

    if (self.bestEffortAtLocation == nil || self.bestEffortAtLocation.horizontalAccuracy > newLocation.horizontalAccuracy) {
        self.bestEffortAtLocation = newLocation;

        if (newLocation.horizontalAccuracy <= DesiredHorizontalAccuracy) {
            self.bestEffortAtLocation = nil;
            isUpdating = NO;
            [self.locationManager stopUpdatingLocation];

            [self didUpdateWithDesiredAccuracyToLocation:newLocation];            
        }
    }
}

@end

Answer #1

वाईफ़ाई और 3 जी केवल उच्च सटीकता (<300 मी) स्थान प्राप्त करने की प्रक्रिया में तेजी लाने के लिए उपयोग किया जाता है। इंटरनेट कनेक्टिविटी के बिना यह केवल जीपीएस का उपयोग करने के लिए ठीक से 3-10 मिनट लग सकता है। (वे सेल टॉवर या वाईफाई त्रिकोण के साथ कम सटीकता के सुधारों के लिए उपयोग किया जाता है और जीपीएस सिग्नल अधिग्रहण को गति देने के लिए उपग्रह एफ़ेमरिस डेटा डाउनलोड करने के लिए भी उपयोग किया जाता है)।

वाईफाई या 3 जी के साथ शुरुआती तय लगभग 800 मीटर सटीकता की उम्मीद हो सकती है, लेकिन यदि डिवाइस में 3 जी (या वाईफाई या एज) कनेक्टिविटी है और जीपीएस उपग्रहों से एक मजबूत पर्याप्त संकेत प्राप्त कर सकते हैं तो यह 20 के भीतर जीपीएस स्थिति प्राप्त करने में सक्षम होना चाहिए -90 सेकंड।

शायद आप ऐप काफी लंबे समय तक इंतजार नहीं कर रहे हैं, या उपयोगकर्ता के पास कमजोर जीपीएस सिग्नल है, या जीपीएस के बिना एक उपकरण है (यानी: आईफोन 1 या आईपॉड टच या गैर-3 जी आईपैड)। उस स्थिति में उन्हें 200 मीटर सटीकता की आवश्यकता नहीं होगी।