Swift:没有调用 didRegisterForRemoteNotificationsWithDeviceToken

Posted

技术标签:

【中文标题】Swift:没有调用 didRegisterForRemoteNotificationsWithDeviceToken【英文标题】:Swift: didRegisterForRemoteNotificationsWithDeviceToken not called 【发布时间】:2020-06-07 08:22:18 【问题描述】:

我有一个包含 3 个目标 dev、staging 和 prod 的应用程序。

为目标产品调用了didRegisterForRemoteNotificationsWithDeviceToken 函数,我不明白为什么没有调用其他目标

代码:

UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .sound, .alert])  granted, _ in
    guard granted else  return 
    DispatchQueue.main.async   application.registerForRemoteNotifications() 

但是,所有目标都启用了推送通知

【问题讨论】:

【参考方案1】:

可能存在导致 APN 注册失败的配置问题。

    尝试打印出您在didFailToRegisterForRemoteNotificationsWithError 中获得的内容,如果您使用的是模拟器,它可能会输入此方法而不是didRegisterForRemoteNotificationsWithDeviceToken

    确保您的 Provisioning Profile 包含 aps-environment 条目

    确保您在配置文件中设置了唯一的应用程序标识符(没有任何“*”的字符串)。您还应该在 Info.plist 中将此确切标识符用作“捆绑标识符”

    也许您在初始安装后拒绝了推送功能 - 在这种情况下,您将再也看不到应用内推送警报,必须再次在设置应用中启用推送。

    尝试其他设备。

【讨论】:

我在真机上测试,允许通知,不调用didFailToRegisterForRemoteNotificationsWithError @MickaelBelhassen 您可以编辑您的问题并包括您尝试过的所有步骤吗?有时当我写下我所做的事情时,我意识到我错过了一些东西。您也可以尝试删除应用程序并重新启动手机吗?这可能不是原因,但它可以帮助我们准确地了解您用您自己的话来说做了什么。话虽如此,我认为检查配置文件是关键,因为您的目标具有不同的 bundleID 和可能的 AppID,因此它们的功能可能不同

以上是关于Swift:没有调用 didRegisterForRemoteNotificationsWithDeviceToken的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 没有按时调用intrinsicContentSize

在 Swift 中调用实例方法错误消息没有完全匹配

Swift & StompClientLib : stompClient(_) 函数没有被调用

在iOS上没有调用sceneDidEnterBackground,swift

没有 performSegue 的委托不会被调用 Swift 5

完成处理程序没有被调用为假定的 Swift