应用程序收到通知但UIApplicationDelegate方法未在第一个会话中调用

问题描述:

我的应用程序通常会收到推送通知,但不会调用UIApplicationDelegate方法(具体查看application(_:didReceiveRemoteNotification:))。这只发生在应用程序的第一个会话中(用户批准推送通知的会话)。 如果我杀了应用程序并再次运行它,我仍然收到通知,但随后正确调用了委托方法。应用程序收到通知但UIApplicationDelegate方法未在第一个会话中调用

这是怎么可能的,有没有人以前面临过这个问题?这是推送通知的一个非常基本的实现。

+0

不确定,但我猜你的代币没有足够早地注册,而你关闭了应用程序或其他东西,触发它来注册代币... – Honey

+0

只是为了让你正确 - 你的代码不是终止你的应用程序后再打过来吗?例如 - 应用程序(_:didReceiveRemoteNotification :) - >如果是这种情况,请看看下面的*主题:https://*.com/questions/46330053/ios11-swift-silent-push-background-fetch -didreceiveremotenotification - 是 - 不是/ 46392357#46392357 – AlexWoe89

要接收推送通知,您必须事先注册令牌。如果您在第二次运行后才收到通知,我假设您在关闭应用程序或其他东西时将令牌发送给您的服务。

您可以使用此功能来检查您在其中获取您的通知的确切时刻令牌:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    print("DEVICE TOKEN = \(deviceToken)") 
} 

尝试获得令牌,并从服务手动发送推送通知到令牌时获得后, 。