मेरा ऐप ही अस्वीकृति पत्र है, जो है के साथ तीन बार, सभी एप्पल द्वारा अस्वीकार कर दिया गया:कैसे ठीक से पृष्ठभूमि में स्थान का उपयोग करने के लिए - एप्लिकेशन 3 बार
हमने पाया अपने अनुप्रयोग एक पृष्ठभूमि मोड का उपयोग करता है लेकिन इसमें कार्यक्षमता शामिल नहीं है जिसके लिए उस मोड को लगातार चलने की आवश्यकता होती है। यह व्यवहार ऐप स्टोर समीक्षा दिशानिर्देशों के अनुपालन में नहीं है।
हमने देखा है कि आपका ऐप UIBackgroundModes कुंजी में आपके Info.plist में स्थान के लिए समर्थन घोषित करता है लेकिन इसमें सुविधाएं शामिल नहीं हैं जिन्हें लगातार स्थान की आवश्यकता होती है।
ऐप पृष्ठभूमि में की आवश्यकता वाले सुविधाओं को जोड़ने के लिए उपयुक्त होगा, जबकि ऐप पृष्ठभूमि में है या UIBackgroundModes कुंजी से "स्थान" सेटिंग को हटा दें।
"जीपीएस के निरंतर उपयोग पृष्ठभूमि में चल सकते हैं नाटकीय रूप से कमी बैटरी जीवन:
आप सुविधाओं है कि स्थान पृष्ठभूमि मोड का उपयोग जोड़ने के लिए चुनते हैं, तो में अपने आवेदन विवरण निम्न बैटरी उपयोग अस्वीकरण शामिल करें । "
पृष्ठभूमि मोड के बारे में जानकारी के लिए, कृपया आईओएस संदर्भ पुस्तकालय में "पृष्ठभूमि में निष्पादन कोड" अनुभाग देखें ।
अब, जहाँ तक मैं जानता हूँ कि मैं पृष्ठभूमि पर चल रहा हूँ और "कुछ कर रही" ... मेरे AppDelegate में मैं didFinishLaunchingWithOptions में निम्नलिखित कोड है:
if ([[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsLocationKey] &&
([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]))
{
id locationInBackground = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey];
if ([locationInBackground isKindOfClass:[CLLocation class]])
{
[self updateMyLocationToServer:locationInBackground];
}
else
{
//Keep updating location if significant changes
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
self.bgLocationManager = locationManager;
self.bgLocationManager.delegate = self;
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[bgLocationManager startMonitoringSignificantLocationChanges];
}
}
AppDelegate भी शुरू होता है एक स्थान प्रबंधक और खुद को प्रतिनिधि बनाता है।
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[self updateMyLocationToServer:newLocation];
}
-(void)updateMyLocationToServer:(CLLocation*)myNewLocation
{
// NSLog(@"Updating Location from the background");
NSString *fbID = [NSString stringWithString:[facebookDetails objectForKey:@"fbID"]];
NSString *firstName = [NSString stringWithString:[facebookDetails objectForKey:@"firstName"]];
NSString *lastName = [NSString stringWithString:[facebookDetails objectForKey:@"lastName"]];
NSString *urlString = [NSString stringWithFormat:@"MY_SERVER_API", fbID, myNewLocation.coordinate.latitude, myNewLocation.coordinate.longitude, firstName, lastName];
NSURL *url = [NSURL URLWithString:urlString];
__block ASIHTTPRequest *newRequest = [ASIHTTPRequest requestWithURL:url];
[newRequest setCompletionBlock:^{
}];
[newRequest setFailedBlock:^{
}];
// [newRequest setDelegate:self];
[newRequest startAsynchronous];
}
मैं अपने एप्लिकेशन वर्णन पृष्ठ में एक अस्वीकरण डाल: फिर, मैं पृष्ठभूमि पर स्थान अद्यतन से निपटने के लिए निम्नलिखित कोड है
जीपीएस की गहन उपयोग पृष्ठभूमि में चल सकते हैं बैटरी जीवन नाटकीय रूप से कम करें। इस कारण से, MY_APP_NAME पृष्ठभूमि में केवल महत्वपूर्ण स्थान परिवर्तनों को सुनकर चलता है।
क्या मैं यहाँ याद कर रहा हूँ है?
एक 'पृष्ठभूमि मोड' कुछ के बाद उपयोगकर्ता ऐप्लिकेशन से बाहर निकल गया है कि अभी भी चल रहा है इसका मतलब यह नहीं है? – cgull
@thephpdeveloper मुझे बताने के लिए धन्यवाद। StackOverflow के लिए बिल्कुल नया होने के नाते, मुझे इस प्रणाली से अवगत नहीं था। – Giovanni
@cgull मुझे यकीन नहीं है। मेरा मतलब है, स्थान अपडेट के लिए पर्याप्त पंजीकरण नहीं कर रहा है? फिर जब कोई नया स्थान होता है, तो मेरा ऐप पृष्ठभूमि सक्रिय स्थिति में जागृत हो जाता है, और उसके बाद मुझे कुछ करने का मौका मिलता है, जैसे कि मेरे सर्वर पर मेरा नया स्थान लॉग इन करें। यही कारण है कि मैं क्या सोचा है ... – Giovanni