iOS HTTP-запрос в фоновом режиме
Можно выполнить асинхронные запросы HTTP на сервер PHP, пока приложение находится в фоновом режиме? Приложение основано на местоположении и должно собирать текущее местоположение и отправлять координаты на сервер каждые 5 (или другое значение) минут. Могу ли я сделать HTTP-сообщения на сервере даже в фоновом режиме? Я читал много мыслей об этом, но некоторые из них сказали, что это можно сделать, другие, которые невозможно сделать.
Благодаря,
Алекс.
- Стилизация кнопки отмены в UISearchBar
- NSDateFormatter и yyyy-MM-dd
- objective-C - Когда использовать «я»,
- Как установить получателей для UIActivityViewController в iOS 6?
- UISlider вместе с ProgressView
- Можем ли мы пригласить людей использовать наше приложение или отправить запрос друга из приложения через Facebook в iOS 5?
- Использовать метод didSelectRowAtIndexPath или prepareForSegue для UITableView?
- Точка с запятой после имени метода в файле реализации Objective-C
- Как перехватить ссылку на ссылку в UITextView?
- Изменение позиции UIBarButtonItem в UINavigationBar
- Objective-c iPhone-процент кодирует строку?
- Как получить размер NSString
- UIScrollView не прокручивается после обновления до iOS7 / xcode 5
Это можно сделать, но это ненадежно, потому что вы попросите ОС на время отправить что-то, и оно может принять или отклонить ваш запрос. Это то, что я (украден откуда-то на SO):
[...] //we get the new location from CLLocationManager somewhere here BOOL isInBackground = NO; if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { isInBackground = YES; } if (isInBackground) { [self sendBackgroundLocationToServer:newLocation]; } - (void) sendBackgroundLocationToServer: (CLLocation *) lc { UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid; bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [[UIApplication sharedApplication] endBackgroundTask:bgTask]; }]; NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:2]; [dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.latitude] forKey:@"floLatitude"]; [dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.longitude] forKey:@"floLongitude"]; // send to server with a synchronous request // AFTER ALL THE UPDATES, close the task if (bgTask != UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] endBackgroundTask:bgTask]; } }
Эти ссылки помогут вам …
iphone – Подключение к серверу в фоновом режиме