Я реализую push-уведомления в iOS 10. Все работает хорошо.Невозможно прослушать уведомление от NSNotificationCenter, когда приложение получило push-уведомление из фона или завершено в iOS
Но мне нужно ударить API, когда APP получил push-уведомление (не только в активном состоянии, но и в фоновом режиме/завершено).
Для этого я использую NSNotificationCenter
для прослушивания уведомлений при App получил толчок уведомление, как это:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
NSDictionary *userInfo = notification.request.content.userInfo;
NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]);
NSLog(@"%@", userInfo);
if([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)
{
NSLog(@"INACTIVE");
completionHandler(UNNotificationPresentationOptionAlert);
}
else if([UIApplication sharedApplication].applicationState == UIApplicationStateBackground)
{
NSLog(@"BACKGROUND");
completionHandler(UNNotificationPresentationOptionAlert);
}
else
{
NSLog(@"FOREGROUND");
completionHandler(UNNotificationPresentationOptionAlert);
}
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTheTable" object:nil];
}
И я слушаю это уведомление в ViewController.m
как этот
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTable:) name:@"reloadTheTable" object:nil];
}
- (void)reloadTable:(NSNotification *)notification
{
// Calling API here
}
это работает отлично, когда приложение работает на переднем плане. Но не в фоновом режиме и состоянии завершения.
Есть ли какая-либо ошибка от меня или чего-то еще, что я должен реализовать?
Я обновил мой ответ, пожалуйста, проверьте его сейчас – user3182143