Я пытаюсь сделать вызов API после получения вызова «didEnterRegion». Когда приложение находится на передней панели, оно отлично работает. Но если приложение отключено или даже в фоновом режиме, вызов никогда не выполняется. Я попытался отладить его, но однажды «reportLocationEventToServerWithType» называется отладчиком «умирает», и вызов никогда не выполняется. Я не думаю, что это важно, но я использую Estimote sdk для мониторинга маяка. Вот фрагменты кода:AFNetworking api call после события geofence или beacon
- (void)beaconManager:(id)manager didEnterRegion:(CLBeaconRegion *)region{
UIApplication *app = [UIApplication sharedApplication];
NSNumber * mallID = [self.dictBeaconsPerMall objectForKey:region.identifier];
Mall * mall = [Mall getMallWithID:mallID];
[ApplicationManager sharedInstance].locationManager.beaconRecognizedMall=mall;
[[NSNotificationCenter defaultCenter]postNotificationName:nLocationMallUpdated object:nil];
UILocalNotification * not = [[UILocalNotification alloc]init];
not.alertBody = [NSString stringWithFormat:@"DID Enter beacon region at: %@",mall.strTitle];
not.alertAction = @"alertAction";
not.soundName = UILocalNotificationDefaultSoundName;
[app presentLocalNotificationNow:not];
[[ApplicationManager sharedInstance].crashAndReportsManager reportLocationEventToServerWithType:@"beacon" andSubParam:region.identifier extraInfo:@{@"paramKey":@"key"}];
}
-(void)reportLocationEventToServerWithType: (NSString*)type andSubParam:(NSString*) strID extraInfo: (NSDictionary*)extraInfo{
NSString* udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSMutableDictionary * params = [[NSMutableDictionary alloc]init];
[params setObject:type forKey:@"type"];
[params setObject:strID forKey:@"subParam"];
[params setObject:udid forKey:@"udid"];
if(extraInfo)
[params addEntriesFromDictionary:extraInfo];
UserLogRequest * req = [[UserLogRequest alloc]initWithCallerObject:self andParams:params];
req.showHud=NO;
req.showMessage=NO;
[[ApplicationManager sharedInstance].requestManager sendRequestForRequest:req];
}
инициализации запроса и менеджер запроса «sendRequestForRequest» работают хорошо в миллионах других ситуациях, поэтому их реализация не имеет никакого отношения.
Спасибо!
Спасибо! Я тоже это пробовал, но ничего. Упоминал фоновые режимы местоположения в plist и пытался сделать это с фоновой задачей. Еще не успел ... – user2162718
Вы не можете позвонить api из фона. – Lion