如何在Swift 3中处理UNUserNotificationCenter和FIRMessaging w/Firebase的授权?

Mus*_*ani 2 ios firebase swift3 remote-notifications firebase-cloud-messaging

我正在尝试使用Firebase将推送通知应用到我的应用程序中,但是在遵循他们的文档时,我必须添加以下代码行:

        if #available(iOS 10.0, *) {
        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in})

        UNUserNotificationCenter.current().delegate = self
        FIRMessaging.messaging().remoteMessageDelegate = self
    } else {
        let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }
Run Code Online (Sandbox Code Playgroud)

添加此代码后,应用程序将无法编译,并且会向我发出错误,让我知道我

不能分配类型的值AppDelegate输入 FirMessagingDelegate

那个我

无法指定AppDelegate类型的值来键入UNUserNotificationCenterDelegate.

所以很自然地,我添加了FIRMessagingDelegate和UNUserNotificationCenterDelegate我的应用程序,但是FIRMessagingDelegate不允许应用程序编译说

类型AppDelegate不符合协议'FirMessagingDelegate'.

有任何想法吗?我还没有设法找到其他人遇到此错误的其他情况,而在Google的文档中,这两个代表甚至都没有添加.

小智 6

你正走在正确的轨道上,还有一件事要做,就是让你的AppDelegate类符合'FirMessagingDelegate'协议,通过实现applicationReceivedRemoteMessage某个地方的功能是你的AppDelegate类,因为这里描述的'FirMessagingDelegate'协议需要Firebase Doc