【问题标题】:GCM to FCM in iOSiOS 中的 GCM 到 FCM
【发布时间】:2019-06-30 01:06:10
【问题描述】:

我使用 FirebaseInstanceID 框架来获取令牌。

目前的实现如下:

InstanceID.instanceID().token(withAuthorizedEntity: <GCM_SENDER_ID>, scope: "GCM", options: nil) { (token, error) in
}

我唯一的要求是从 Firebase 获取令牌仅用于身份验证。

上述实现不需要添加GoogleService-Info.plist和任何其他框架。

问题是,Google 已弃用 GCM。

如果我将范围从 "GCM" 更改为 "FCM",它会返回错误 1001。 此外,如果我将 withAuthorizedEntity 从 &lt;GCM_SENDER_ID&gt; 更改为 &lt;PROJECT_ID&gt; 它会给我错误 1001。

那么,有没有什么办法,只使用 FCM 来获取令牌?因为,我对发送推送通知没有任何其他要求。 TIA

【问题讨论】:

    标签: ios swift firebase firebase-cloud-messaging


    【解决方案1】:

    我认为您可以尝试使用docs 以正确的方式进行迁移,但在这种情况下,您应该添加GoogleService-Info.plist 和所需的框架。

    根据错误代码,问题是导致Firebase在获取APNS令牌时失败,这意味着您应该在接收到FCM令牌后设置APNS令牌。 你有两种方法可以做到这一点:

    1. Messaging.messaging().apnsToken = deviceToken 里面func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {}
    2. 或使用他们的Swizzling method

    这个答案不会帮助你以你想要的方式修复它,但如果你想快速修复它,你可以试试这个选项。

    希望它以正确的方式指导您。

    补充:

    除非需要启用多个发件人,否则避免调用 .getToken(authorizedEntity,scope)。请改用 instanceIDWithHandler:。

    Similar question

    【讨论】:

    • 我正在开发cocoa touch框架,但我无法访问方法:func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {}
    • @Dhruv 像一个选项一样,您可以将deviceToken 注入到框架对象的构造函数中。但我不知道你的环境是否可以接受。
    • 这没有任何意义,因为我们不需要添加设备令牌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2016-12-24
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多