当用户拒绝访问以允许通知时如何获取 FCM 令牌

Cha*_*lha 1 ios firebase swift3 firebase-cloud-messaging

由于后端的要求,这是我第一次使用 firebase,所以如果您不理解这个问题或者它没有任何意义,请告诉我。

我想要实现的是,Registration_ID当用户注册时,我需要一个FCM 令牌。所以这就是我在AppDelegate.swift> 中实施它的方式didFinishLaunchingWithOptions

if #available(iOS 10.0, *) {
            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.current().delegate = self

            let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: {_, _ in })
        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }

        application.registerForRemoteNotifications()
Run Code Online (Sandbox Code Playgroud)

在那之后,AppDelegate.swift我添加了这三个功能:

func application(_ application: UIApplication,
                     didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Messaging.messaging().apnsToken = deviceToken as Data
    }

    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
        print("Firebase registration token: \(fcmToken)")
    }

    func application(application: UIApplication,
                     didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        Messaging.messaging().apnsToken = deviceToken as Data
    }
Run Code Online (Sandbox Code Playgroud)

不,问题是当它请求通知许可而用户拒绝它时,我将如何获得 FCM,当用户注册或登录时,我将发送到后端。

小智 7

无论用户对授权请求的响应如何,都会生成 FCM 令牌 - 如果响应时间足够长,则将在给出响应之前生成 FCM 令牌。

在用户授予许可之前,通知不会起作用,但生成 FCM 令牌并不依赖于获得许可。

请注意:我没有在任何地方找到这个文档,而是通过我自己的测试。我已经在 iOS 10.3.1 和 11.0 上进行了测试。

第一次生成令牌时调用了Messaging委托didRefreshRegistrationToken,我怀疑问题是您没有设置委托

Messaging.messaging().delegate = self
Run Code Online (Sandbox Code Playgroud)