मैं अपने ऐप को पृष्ठभूमि में चलाने के लिए 10 मिनट के लिए चलाने की कोशिश कर रहा हूं, इसके अनुसार और मेरा अच्छा नीचे। (मैं किसी स्थान का ट्रैक रखने के लिए लंबी पृष्ठभूमि का उपयोग करना चाहता हूं, मेरा कोड यहां बस परीक्षण उद्देश्यों के लिए काउंटर का उपयोग करें) कोई भी समस्या को इंगित करने में सहायता कर सकता है?10 मिनट से अधिक समय के लिए पृष्ठभूमि में आईओएस ऐप चलाना
को लागू करने लंबे समय से चल पृष्ठभूमि कार्य
कार्यों कि अधिक निष्पादन समय की आवश्यकता होती है को लागू करने के लिए, आप अनुरोध विशिष्ट अनुमतियों उन्हें पृष्ठभूमि में बिना चलाने के लिए चाहिए उनके निलंबित किया जा रहा। आईओएस में, केवल विशिष्ट एप्लिकेशन प्रकार पृष्ठभूमि में चलाने की अनुमति है:
ऐसे ऐप्स जो उपयोगकर्ता के लिए श्रव्य सामग्री को चलाने के समय पृष्ठभूमि में, इस तरह के एक म्यूजिक प्लेयर एप्लिकेशन के रूप में
Apps का है कि उपयोगकर्ताओं को रखने के बारे में बताया हर समय उनके स्थान, जैसे एक नेविगेशन
एप्लिकेशन जो इंटरनेट प्रोटोकॉल (वीओआईपी) डाउनलोड करने और नई सामग्री एप्लिकेशन जो प्राप्त संसाधित करने की जरूरत है कि
न्यूज़स्टैंड एप्लिकेशन से अधिक आवाज का समर्थन एप्लिकेशन बाहरी सामान से नियमित रूप से अपडेट
Apps कि इन सेवाओं को लागू उन सेवाओं के प्रासंगिक पहलुओं को लागू करने की सेवाओं वे समर्थन और उपयोग प्रणाली चौखटे घोषित करना चाहिए। सेवाओं को घोषित करने से सिस्टम को पता चलता है कि आप किस सेवाओं का उपयोग करते हैं, लेकिन कुछ मामलों में यह सिस्टम फ्रेमवर्क है कि वास्तव में आपके एप्लिकेशन को निलंबित होने से रोकता है।
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
}];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
- (void)countUp {
{
count++;
NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount;
[currentCount release];
}
}
एक अन्य प्रश्न: मैं एक iOS एप्लिकेशन हमेशा के लिए पृष्ठभूमि में चलाने की है सकते हैं?
---- स्थान जोड़ने के लिए संपादित कोड, अभी भी 10 मिनट से अधिक समय तक नहीं चलता है, मैं क्या गलत कर रहा हूं?
- (void)viewDidLoad {
[super viewDidLoad];
count=0;
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
[locationManager startUpdatingLocation];
}];
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"OldLocation %f %f", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude); NSLog(@"NewLocation %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
count++; NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount; [currentCount release];
}
(void)countUp { [locationManager startUpdatingLocation];
{ count++; NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount;
[currentCount release]; } }
आपने निर्दिष्ट किया है कि यदि आप ऐप उन श्रेणियों में से किसी एक में नहीं आते हैं तो आप पृष्ठभूमि में भाग सकते हैं तो आप भाग्य से बाहर हैं। आपको ऐप को पृष्ठभूमि में हमेशा के लिए चलाने का कोई तरीका नहीं है। ऐप्पल इसकी अनुमति नहीं देगा क्योंकि यह बैटरी जीवन को मार देगा। न ही मैं एक उपयोगकर्ता के रूप में कभी इस तरह एक ऐप चाहता हूँ। आपके ऐप को हर समय क्यों चलाना होगा ??? – rckoenes
यह निर्दिष्ट श्रेणियों के तहत विशेष रूप से (ऐप्स जो उपयोगकर्ताओं को अपने स्थान के बारे में सूचित करता है, जैसे नेविगेशन ऐप) जब मैं कोड पृष्ठभूमि कार्यों का परीक्षण केवल 10 मिनट तक रहता हूं, तो क्या मुझे स्थान का उपयोग करना चाहिए सिर्फ काउंटर के बजाय परीक्षण? – Ahmad
यदि आप पृष्ठभूमि में स्थान का उपयोग करते हैं, तो आपको प्रमुख स्थान परिवर्तन प्राप्त करने के लिए 'CLLocationManager' शुरू करना चाहिए। फिर जब उपयोगकर्ता स्थान बदलता है तो आपके ऐप को सूचित किया जाएगा। – rckoenes