আমি অবস্থান পরিষেবাগুলি ব্যবহার করে একটি অ্যাপ্লিকেশন লিখেছি, অ্যাপ্লিকেশনকে অবশ্যই প্রতি দশকে অবস্থান পাঠাতে হবে। এবং এটি খুব ভাল কাজ করেছে।
কেবলমাত্র " অনুমতিডেফার্ডলোকেশনআপডেটসঅন্টিল ট্র্যাভেলড: টাইমআউট ব্যবহার করুনঅ্যাপলের ডকটি অনুসরণ " পদ্ধতিটি ।
আমি যা করেছি তা হ'ল:
আবশ্যক: আপডেট অবস্থানের জন্য পটভূমি মোডটি নিবন্ধ করুন।
1. তৈরি করুন LocationManger
এবং startUpdatingLocation
সঙ্গে accuracy
এবং filteredDistance
যাই হোক না কেন হিসাবে আপনি চান:
-(void) initLocationManager
{
// Create the manager object
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
_locationManager.delegate = self;
// This is the most important property to set for the manager. It ultimately determines how the manager will
// attempt to acquire location and thus, the amount of power that will be consumed.
_locationManager.desiredAccuracy = 45;
_locationManager.distanceFilter = 100;
// Once configured, the location manager must be "started".
[_locationManager startUpdatingLocation];
}
২.allowDeferredLocationUpdatesUntilTraveled:timeout
পটভূমিতে পদ্ধতিটি ব্যবহার করে অ্যাপটিকে চিরতরে চালিয়ে যেতে, অ্যাপ্লিকেশনটিকে ব্যাকগ্রাউন্ডে updatingLocation
স্থানান্তরিত করার সময় আপনাকে অবশ্যই নতুন প্যারামিটার দিয়ে পুনরায় চালু করতে হবে :
- (void)applicationWillResignActive:(UIApplication *)application {
_isBackgroundMode = YES;
[_locationManager stopUpdatingLocation];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[_locationManager setDistanceFilter:kCLDistanceFilterNone];
_locationManager.pausesLocationUpdatesAutomatically = NO;
_locationManager.activityType = CLActivityTypeAutomotiveNavigation;
[_locationManager startUpdatingLocation];
}
৩. অ্যাপ্লিকেশন locationManager:didUpdateLocations:
কলব্যাকের সাথে আপডেট হিসাবে আপডেট হয়ে গেছে :
-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// store data
CLLocation *newLocation = [locations lastObject];
self.userLocation = newLocation;
//tell the centralManager that you want to deferred this updatedLocation
if (_isBackgroundMode && !_deferringUpdates)
{
_deferringUpdates = YES;
[self.locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:10];
}
}
৪. তবে locationManager:didFinishDeferredUpdatesWithError:
আপনার নিজের উদ্দেশ্যে ডেটা হ'ল কলব্যাক করা উচিত
- (void) locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error {
_deferringUpdates = NO;
//do something
}
৫. দ্রষ্টব্য: আমি মনে করি আমাদের LocationManager
প্রতিটি সময় অ্যাপ্লিকেশনটির প্যারামিটারগুলি পটভূমি / ভোলাউন্ড মোডের মধ্যে পুনরায় সেট করা উচিত ।