Я выполнил application:didReceiveRemoteNotification:fetchCompletionHandler:
в своем делете делегата для ответа на push-уведомления.
Когда уведомление получено, когда приложение находится в фоновом режиме, этот метод вызывается немедленно, и я беру новые данные и выполняю блок завершения по завершении. Все в соответствии с документацией. Однако, если я нажму уведомление о уведомлении, этот метод снова вызван, что приведет к другому сетевому вызову и обновлению пользовательского интерфейса. Я бы ожидал, что этот метод будет вызываться один раз для каждого push-уведомления, а не один раз при получении и снова в действии.
Как другие реализовали этот метод?
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
[self loadSomeResource:^(NSData *data,NSError *error){
if (error) {
completionHandler(UIBackgroundFetchResultFailed);
}
else if (data){
completionHandler(UIBackgroundFetchResultNewData);
}
else {
completionHandler(UIBackgroundFetchResultNoData);
}
}];
}