Удаленные уведомления не работают должным образом - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь заставить мои удаленные уведомления работать должным образом, но я столкнулся с некоторыми проблемами.

Я отправляю уведомления со своего сервера с флагом content-available, установленным на 1, так что мой didReceiveRemoteNotification запускается, и я отображаю уведомление пользователю, вызывая следующий метод внутри didReceiveRemoteNotification :

- (void) showPush:(NSString *)message
{

  UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

  UNMutableNotificationContent *content = [UNMutableNotificationContent new];
  content.body = message;
  content.sound = [UNNotificationSound defaultSound];

  NSString *identifier = @"UYLLocalNotification";
  UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier
                                                                        content:content trigger:nil];

  [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
    if (error != nil) {
      NSLog(@"Something went wrong: %@",error);
    }
  }];
}

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

-> App is suspended: notification is sent
-> App is opened and in  the foreground: I can see that the notification has been processed
-> App is closed and in the background: notification is being displayed with a banner

Буду признателен за любые предположения, почему это не работает должным образом.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Уведомления могут быть либо обращенными к пользователю (оповещение, значок или звук), либо беззвучными (доступно с контентом). Они не могут быть обоими.

Когда уведомление содержит оба элемента и , обращенные к пользователю, флаг доступности контента, указывающий на тихий APNS push и устройство, переводится в неопределенное состояние.

0 голосов
/ 07 ноября 2018

Я думаю, вам нужно позвонить showPush из-за немного другого делегата обратного вызова приложения:

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

Документы для этого обратного звонка:

В отличие от метода приложения (_: didReceiveRemoteNotification :), который вызывается только когда ваше приложение работает на переднем плане, система вызывает этот метод, когда ваше приложение работает на переднем плане или фон.

См .: https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application?language=objc

...