আমি এমন একটি অ্যাপ্লিকেশন লিখছি যা উচ্চ নির্ভুলতা এবং কম ফ্রিকোয়েন্সি সহ পটভূমি অবস্থান আপডেট প্রয়োজন । সমাধানটি একটি পটভূমি এনএসটাইমারের কাজ বলে মনে হচ্ছে যা লোকেশন ম্যানেজারের আপডেটগুলি শুরু করে, যা তাৎক্ষণিকভাবে বন্ধ হয়ে যায়। এই প্রশ্ন আগে জিজ্ঞাসা করা হয়েছে:
আমি কীভাবে আমার আইওএস অ্যাপ্লিকেশনটিতে প্রতি n মিনিটে পটভূমি অবস্থান আপডেট করব?
অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে যাওয়ার পরে প্রতি n মিনিটের পরে ব্যবহারকারীর অবস্থান প্রাপ্ত করা
আইওএস আদর্শ পটভূমি অবস্থান ট্র্যাকিং টাইমার সমস্যা নয়
"অবস্থান" ব্যাকগ্রাউন্ড মোড সহ আইওএস দীর্ঘ-চলমান ব্যাকগ্রাউন্ড টাইমার
অবস্থান ট্র্যাকিংয়ের উপর ভিত্তি করে আইওএস পুরো সময়ের পটভূমি-পরিষেবা
তবে আমি এখনও কাজ করার ন্যূনতম উদাহরণ পাইনি । উপরোক্ত স্বীকৃত উত্তরের প্রতিটি আদেশের চেষ্টা করার পরে, আমি এক সূচনা পয়েন্ট একসাথে রেখেছি। পটভূমি প্রবেশ করানো:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"ending background task");
[[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
}];
self.timer = [NSTimer scheduledTimerWithTimeInterval:60
target:self.locationManager
selector:@selector(startUpdatingLocation)
userInfo:nil
repeats:YES];
}
এবং প্রতিনিধি পদ্ধতি:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
NSLog(@"%@", newLocation);
NSLog(@"background time: %f", [UIApplication sharedApplication].backgroundTimeRemaining);
[self.locationManager stopUpdatingLocation];
}
বর্তমান আচরণটি হ'ল backgroundTimeRemaining
180 সেকেন্ড থেকে শূন্যে হ্রাস (অবস্থান লগ করার সময়) এবং তারপরে মেয়াদোত্তীর্ণ হ্যান্ডলারটি কার্যকর করে এবং পরবর্তী কোনও অবস্থান আপডেট হয় না। অনির্দিষ্টকালের জন্য পটভূমিতে পর্যায়ক্রমিক অবস্থান আপডেটগুলি পেতে আমি কীভাবে উপরের কোডটি সংশোধন করব ?
আপডেট : আমি আইওএস 7 কে টার্গেট করছি এবং ব্যাকগ্রাউন্ডের কাজগুলি আলাদাভাবে আচরণ করে এমন কিছু প্রমাণ পাওয়া যায়:
ব্যাকগ্রাউন্ড টাস্ক থেকে আইওএস 7 এ লোকেশন ম্যানেজারটি শুরু করুন