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

Posted

技术标签:

【中文标题】应用程序收到通知,但在第一个会话中未调用 UIApplicationDelegate 方法【英文标题】:App receives notification but UIApplicationDelegate method isn't called in first session 【发布时间】:2017-10-12 14:21:58 【问题描述】:

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

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

【问题讨论】:

不确定,但我猜你的令牌注册得不够早,你关闭应用程序或其他东西,触发它来注册令牌... 只是为了让您正确 - 终止您的应用程序后不再调用您的代码?例如 - application(_:didReceiveRemoteNotification:) -> 如果是这样,请查看以下 *** 主题:***.com/questions/46330053/… 【参考方案1】:

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

您可以使用它来检查您获得通知令牌的确切时间:

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

尝试获取令牌并在获取令牌后从您的服务手动向该令牌发送推送通知。

【讨论】:

以上是关于应用程序收到通知,但在第一个会话中未调用 UIApplicationDelegate 方法的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序在后台收到通知时如何获取通知有效负载数据

iOS 12 中未提供 FCM 通知

在 iPhone 中未收到任何推送通知

iOS 11.2.6 中未处理静默推送通知

某些设备在 android 中未收到推送通知

在android中未收到推送通知