【问题标题】:How to get FCM Token when user has denied access to allow notifications当用户拒绝访问以允许通知时如何获取 FCM 令牌
【发布时间】:2017-09-21 04:44:15
【问题描述】:

由于后端的要求,这是我第一次使用 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()

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
    }

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

【问题讨论】:

  • 权限设置不正确,无法获取token。

标签: ios firebase swift3 firebase-cloud-messaging


【解决方案1】:

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

在用户授予权限之前通知将不起作用,但生成 FCM 令牌不依赖于获得权限。

请注意:我在任何地方都没有发现这一点,而是通过我自己的测试。我已经在 iOS 10.3.1 和 11.0 上进行了测试。

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

Messaging.messaging().delegate = self

【讨论】:

    【解决方案2】:

    如果用户未授予权限,您将无法发送推送通知。您使用的第 3 方无法更改此权限(亚马逊、firebase)。对于 Firebase 云消息推送通知权限是必须的。

    【讨论】:

    • 我明白这一点。那么如果我还需要token怎么办?用户不会收到通知,但我仍然需要你可以说的回调令牌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多