Занимает ли MinimumBackgroundFetchInterval статический интервал времени, когда приложение работает в фоновом режиме?

#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 .