Как я могу проверить, когда приложение возвращается на передний план из фона, но не из push-уведомления?

func application(application: UIApplication, didReceiveRemoteNotification data: [NSObject : AnyObject]) {
        var dat = JSON(data)
        if application.applicationState == UIApplicationState.Active {
            // app was already in the foreground
            println("App is in foreground")
            processNotification(dat)
        }else{
            // app was just brought from background to foreground via PUSH
            println("App brought back via PUSH")
            processNotification(dat)
        }
    }

Вот как я проверяю push-уведомления. Однако когда я отправляю push-уведомление, пользователь пропускает его, а затем открывает приложение через значок? Как я могу проверить, когда приложение было открыто по значку?

1 ответ

UIApplicationDelegate Протокол определяет несколько методов, которые позволяют добавлять код к нескольким событиям жизненного цикла вашего приложения.

Особый интерес для вас будут следующие:

  • application(_:willFinishLaunchingWithOptions:) - вызывается непосредственно перед завершением запуска приложения, когда приложение еще не было активным в фоновом режиме
  • application(_:didFinishLaunchingWithOptions:) - вызывается сразу после завершения запуска приложения, когда оно еще не было активным в фоновом режиме
  • applicationDidBecomeActive(_:) - вызывается сразу после того, как приложение стало активным, вызывается, когда пользователь запускает с нуля, открывает заново из фона, а также когда пользователь возвращается из временного прерывания (такого как телефонный звонок)
  • applicationWillEnterForeground(_:) - это вызывается непосредственно перед тем, как приложение выходит на передний план после того, как оно было в фоновом режиме - сразу после него следует applicationDidBecomeActive(_:) вызов

Эти события жизненного цикла могут запускаться независимо от того, открыл ли пользователь ваше приложение с помощью уведомления или нажав на значок. Насколько я знаю, невозможно сказать наверняка, что приложение было открыто нажатием на иконку. Вы можете знать (ish), что приложение не было открыто с помощью уведомления, так как соответствующие методы "действительно получили уведомление" никогда не сработают. Но это по-прежнему позволяет пользователю два (как минимум) метода открытия приложения: нажмите значок приложения или дважды нажмите кнопку "Домой" и приложение, чтобы разбудить его на заднем плане.

Другие вопросы по тегам