使用 Swift 3 调试 Firebase

Posted

技术标签:

【中文标题】使用 Swift 3 调试 Firebase【英文标题】:Debugging Firebase with Swift 3 【发布时间】:2017-07-07 13:30:41 【问题描述】:

我正在尝试调试为什么我无法从 iPhone 上的 firebase 获取消息, 我已连接到 FCM 服务器,并且我还订阅了一个主题,但是,当我尝试打印从 FCM 接收的数据时,我得到 nil 值。

这是我从谷歌教程中获得的代码,它被执行,这是否意味着应用程序被正确通知 FCM 上有一个新主题可用?

另外,我如何调试以查看我在设置 FCM 时是否做错了什么?

谢谢

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
    let userInfo = notification.request.content.userInfo
    // Print message ID.

     FIRMessaging.messaging().subscribe(toTopic: "/topics/newNotificationtest")
    print("Message ID: \(userInfo["gcm.message_id"])")


    debugPrint(userInfo)
    // Print full message.
    print("%@", userInfo)


【问题讨论】:

你试过Firebase Messaging for Swift的样本吗? 当我创建一个新应用并设置我自己的 firebase 项目时,我能够让它工作。我收到了来自其他人负责的 firebase 项目的通知。据我所知,我得到了 GoogleService-Info.plist,一切都是正确的。 Bundle_ID 匹配,我给了他们 .p8 身份验证密钥。我仍然在 didReceiveRemoteNotification 方法中获得 Message ID: nil ,除此之外,我似乎确实连接并获得了 Firebase 令牌。还有什么想法吗? 在旁注中,我收到一条弹出通知。这是我为后台提取创建的,但不再使用。我没有拨打任何电话或设置通知,但它仍然会弹出。这些是否以某种方式相关以及为什么我会弹出此通知,即使没有调用设置它的代码? 【参考方案1】:

请尝试使用此代码并进行调试

 func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 


        FIRMessaging.messaging().appDidReceiveMessage(userInfo)


        let aps = userInfo["aps"] as? NSDictionary 

        print(aps)

        print(userInfo)

        print("Message ID: \(userInfo["gcm.message_id"]!)")

        print("%@", userInfo)
    

【讨论】:

感谢您的建议,该方法不会被调用。知道为什么会这样吗?

以上是关于使用 Swift 3 调试 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

Swift3 - 调试时后台获取崩溃

Swift 5.3的进化:语法标准库调试能力大幅提升

使用 Swift 3 解析 JSON

无法调试嵌入在 Objective-C 应用程序中的 Swift 模块/框架

使用 Xcode LLDB 控制台在 Swift 中调试闭包

swift:在调试中打印 \r 字符