Уведомление не отображается, когда оно находится на переднем плане

Я использую Firebase Console для отправки уведомлений. Когда я в фоновом режиме, я получил уведомление, но когда я нахожусь на переднем плане, я не получаю никаких уведомлений. В документации было сказано реализовать AppDelegate application:didReceiveRemoteNotification:, поэтому я добавил его, но все равно не работает

Вот мой код

// [START receive_message]

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// Print message ID.
NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]);

// Pring full message.
NSLog(@"%@", userInfo);
}
// [END receive_message]

person natsumiyu    schedule 03.06.2016    source источник
comment
Возможно, это глупый вопрос, но когда вы говорите, что это не работает, вы имеете в виду, что просматриваете приложение на устройстве, когда оно подключено к отладчику Xcode, и вы не видите сообщения NSLog в своей консоли, верно?   -  person Todd Kerpelman    schedule 04.06.2016


Ответы (1)


Пока вы находитесь на переднем плане, вам нужно установить UIAlertViewController и представить это в didReceiveRemoteNotification. поэтому вы получаете оповещение, пока зарезервировали pushNotification.

Итак, на основе вашей полезной нагрузки JSON userInfo вам нужно сделать следующий код

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    // Print message ID.
    NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]);

    // Pring full message.
    NSLog(@"%@", userInfo);

    if (application.applicationState == UIApplicationStateActive)
    {
        UIAlertController *alertController = [UIAlertController  alertControllerWithTitle:[userInfo objectForKey:@"notification.title"]  message:[userInfo objectForKey:@"notification.body"]  preferredStyle:UIAlertControllerStyleAlert];
        [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

        }]];
        [self.window.rootViewController presentViewController:alertController animated:YES completion:nil];
    }
}
person Nitin Gohel    schedule 03.06.2016
comment
он отображает только кнопку OK. Как я могу получить title и body уведомления? - person natsumiyu; 06.06.2016