#ios #objective-c #iphone
#iOS #objective-c #iPhone
Вопрос:
Я хочу запустить api с интервалом в 12 часов, либо приложение находится в режиме переднего плана, либо в фоновом режиме. Я включил "Background Fetch"
фоновый режим в возможностях и использовал следующий код в didFinishLaunchingWithOptions
методе делегирования:
[application setMinimumBackgroundFetchInterval:60*12];
Здесь я не использую UIApplicationBackgroundFetchIntervalMinimum, потому что не уверен в случайном времени. Также я реализовал метод в AppDelegate:
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
// API calling implemented
}
Но моя проблема в том, что метод делегирования выше не вызывается системой в соответствии с временным интервалом, который я предоставил на 12 часов (12 * 60), скорее, он вызывается случайным образом и некоторое время не вызывается. Может ли кто-нибудь, пожалуйста, сообщить мне, как указанный выше метод делегирования может вызываться системой за фиксированное время интервала?
Комментарии:
1. Вы не можете контролировать интервал. Минимальное время обновления — это подсказка для iOS относительно минимального времени, которое должно пройти между вызовами функции выборки, но iOS настроит частоту в зависимости от активности, частоты и времени суток, когда ваша выборка возвращает новые данные, а когда нет. См. «оппортунистическая выборка небольших объемов содержимого» в developer.apple.com/library/content/documentation/iPhone /…
2. Смотрите также developer.apple.com/reference/uikit/uiapplication /…
3. Старый поток, но обратите внимание, что значение, указанное для setMinimumBackgroundFetchInterval, указано в секундах, поэтому в течение 12 часов вам нужно будет указать 12*60*60 .