didReceiveRemoteNotification не работает, когда уведомления получены в фоновом режиме

Когда приложение получает локальные уведомления, didReceiveRemoteNotification выполняет некоторые операции. Он отлично работает, когда приложение находится на переднем плане. Также, когда приложение получает уведомление в фоновом режиме и открывает приложение, щелкнув уведомление. Но НЕ работает, когда мы открываем приложение, не нажимая уведомление.

Как это решить?

  if let options = launchOptions, notification = options[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
            self.application(application, didReceiveRemoteNotification: notification, fetchCompletionHandler: { (NewData) in

            })
        }

person Rosemol J    schedule 17.08.2016    source источник


Ответы (1)


Как вы указали в своем вопросе...

Уведомления не работают, когда мы открываем приложение, не нажимая уведомление.

Это ваша проблема здесь. Если вы откроете приложение при нажатии на уведомление, оно будет и должно работать. Если вы открываете приложение, не нажимая на уведомление. это означает, что вы не заинтересованы в уведомлении, а заинтересованы только в том, чтобы открыть приложение. так что не будет ничего вашего уведомления.

Вы можете получить словарь уведомлений только тогда, когда вы (пользователь) открываете приложение при нажатии уведомления / баннера.

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

person M Zubair Shamshad    schedule 17.08.2016
comment
Я сохраняю эти данные уведомления в coredata - person Rosemol J; 17.08.2016
comment
Он должен быть сохранен, даже если мы открываем приложение из уведомления или из списка приложений. - person Rosemol J; 17.08.2016
comment
@qwerty Я обновил свой ответ. взгляните на это сейчас. Это решит вашу проблему. - person M Zubair Shamshad; 17.08.2016
comment
@qwerty Не о чем беспокоиться о коде. Вы должны сделать это в соответствии с вашими требованиями после получения уведомления. Все, что вам нужно, чтобы обновить plist и уведомление payload. Затем вы можете получить свое уведомление в didReceiveRemoteNotification:fetchCompletionHandler - person M Zubair Shamshad; 18.08.2016
comment
В didReceiveRemoteNotification я сохраняю данные этого уведомления. Но когда пришло уведомление, приложение было открыто (без нажатия на уведомление), уведомление автоматически отменялось, и действие сохранения не выполнялось. - person Rosemol J; 18.08.2016