यह किया जा सकता है लेकिन यह अविश्वसनीय है क्योंकि आप कुछ समय भेजने के लिए ओएस से पूछते हैं और यह आपके अनुरोध को स्वीकार या अस्वीकार कर सकता है। यह वही है मैं (अतः पर कहीं से चोरी) है:
[...] //we get the new location from CLLocationManager somewhere here
BOOL isInBackground = NO;
if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground)
{
isInBackground = YES;
}
if (isInBackground)
{
[self sendBackgroundLocationToServer:newLocation];
}
- (void) sendBackgroundLocationToServer: (CLLocation *) lc
{
UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
bgTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:2];
[dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.latitude] forKey:@"floLatitude"];
[dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.longitude] forKey:@"floLongitude"];
// send to server with a synchronous request
// AFTER ALL THE UPDATES, close the task
if (bgTask != UIBackgroundTaskInvalid)
{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}
}
पहले, कभी नहीं कोशिश करते हैं और एक निश्चित समय पर स्थान को इकट्ठा । यह बैटरी को हटा देगा। बस प्रमुख स्थान परिवर्तनों में लिस्टिंग शुरू करें और यदि ऐसा होता है तो सर्वर पर नया स्थान भेजें। यदि आपको अधिक सटीक स्थान की आवश्यकता है तो जीपीएस शुरू करें जब प्रमुख स्थान परिवर्तन होता है और जीपीएस को रोकता है जब आपके पास अपनी आवश्यकताओं के लिए पर्याप्त स्थान होता है। फिर सर्वर को डेटा भेजें। – rckoenes
इस तरह मैंने इसे किया है, मैं अपडेट स्थान शुरू करता हूं, स्थान प्राप्त करता हूं, स्थान अपडेट रोकता हूं, सर्वर से अनुरोध भेजता हूं, 5 मिनट के बाद स्थान अपडेट फिर से शुरू करता हूं, स्थान प्राप्त करता हूं, रोकता हूं, आदि। सवाल यह है कि मैं सक्षम हूं यदि अनुरोध पृष्ठभूमि मोड में है तो अनुरोध भेजने के लिए? धन्यवाद। –