मार डाला गया है जब ऐप सक्रिय है और जब यह निष्क्रिय और मारा जाता है तो मेरे ऐप को उपयोगकर्ता का स्थान प्राप्त करने की आवश्यकता होती है। जब उपयोगकर्ता का स्थान किसी स्टोर के नजदीक है तो ऐप को स्थानीय सूचना भेजनी होगी।पृष्ठभूमि में होने पर आईओएस ऐप के लिए स्थान प्राप्त करना और यहां तक कि
मुझे यकीन नहीं है कि वास्तव में क्या हो रहा है, लेकिन मैं अपने ऐप को पृष्ठभूमि में स्थान प्राप्त करने में सक्षम नहीं हूं और इसे मारने पर इसे जगाता है।
मैं एक स्थान प्रबंधक (सिंगलटन, boths मामलों whenInUse और हमेशा के लिए प्रयोग किया जाता) है, और मैं दोनों NSLocationAlwaysUsageDescription और NSLocationWhenInUseUsageDescription .plist
में परिभाषित किया है क्या मैं कर रहा हूँ है:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//The app has been killed/terminated (not in background) by iOS or the user.
if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]){
_locationManager = [CoreLocationManager sharedInstance];
_locationManager.isAppActive = NO;
_locationManager.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
_locationManager.locationManager.activityType = CLActivityTypeOtherNavigation;
if ([_locationManager.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager.locationManager requestAlwaysAuthorization];
}
[_locationManager addLocationManagerDelegate:self];
}
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (_locationManager.locationManager){
_locationManager.isAppActive = YES;
[_locationManager.locationManager stopMonitoringSignificantLocationChanges];
}
_locationManager = [CoreLocationManager sharedInstance];
if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager.locationManager requestAlwaysAuthorization];
}
if ([_locationManager.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[_locationManager.locationManager requestWhenInUseAuthorization];
}
[_locationManager addLocationManagerDelegate:self];
[_locationManager.locationManager startUpdatingLocation];
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
_locationManager.isAppActive = NO;
if (_locationManager.locationManager){
[_locationManager.locationManager stopUpdatingLocation];
[_locationManager.locationManager stopMonitoringSignificantLocationChanges];
}
if ([_locationManager.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager.locationManager requestAlwaysAuthorization];
}
[_locationManager.locationManager startMonitoringSignificantLocationChanges];
}
क्या मैं कुछ गलत करता हूँ? मुझे यकीन नहीं है कि भूगर्भीकरण का उपयोग करने के लिए यह सख्ती से जरूरी है, लेकिन जिन चीजों के लिए मैंने पढ़ा है, उनके लिए पढ़ना है मॉनिटरिंग सिग्निफिशेंट लोकेशन चेंज पर्याप्त है।
धन्यवाद उत्सव !! जहां मुझे एप्लिकेशन DidEnterBackground के लोकेशन प्रबंधक कोड डालना है? – Stacky
@Stacky didDterBackground में आपका कोड आवश्यक नहीं होगा। आपको निरंतर स्थान अपडेट की आवश्यकता के रूप में StopUpdatingLocation को कॉल करने की आवश्यकता नहीं है। यदि आप स्टॉप अपडेटिंग लोकेशन को कॉल करते हैं तो उपयोगकर्ता स्थान अपडेट प्राप्त करना बंद कर देगा। आपको ऐसा करना चाहिए जब भी उपयोगकर्ता ऐप से बाहर निकलता है –
क्षमा करें अगर मैं एक बेवकूफ चीज़ @utsav पूछता हूं, लेकिन क्या StopUpdatingLocation को कॉल करना आवश्यक नहीं है (क्योंकि ऐप चलने पर उपयोग किया जाता है) और फिर कॉल मॉनिटरिंग सिग्निफिशेंट लोकेशन चेंज कॉल करें? – Stacky