在iOS中将GCM转换为FCM

3
我使用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从<GCM_SENDER_ID>更改为<PROJECT_ID>,它会给我返回错误1001。

那么,有没有办法只使用FCM来获取令牌?因为我没有发送推送通知的其他要求。谢谢!

1个回答

2
我认为您可以尝试使用文档中提供的方法以正确的方式进行迁移(docs),但在这种情况下,您应该添加GoogleService-Info.plist和所需的框架。
根据错误代码,问题是Firebase在获取APNS令牌时失败,这意味着您应该在接收到后设置APNS令牌以获得FCM令牌。您有两种方法可以做到这一点:
1. 在func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {}中使用Messaging.messaging().apnsToken = deviceToken 2. 或者使用他们的Swizzling method 这个答案可能无法帮助您以您想要的方式修复它,但如果您想快速解决问题,可以尝试类似的选项。
希望它能引导您走向正确的方向。
另外:
避免调用.getToken(authorizedEntity,scope),除非需要启用多个发送器。改用instanceIDWithHandler:。
类似的问题请参阅此处

我正在开发Cocoa Touch框架,但是我无法访问以下方法:func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {} - Dhruv
@Dhruv 像一个选项一样,您可以将 deviceToken 注入到框架对象的构造函数中。但我不知道对于您的环境来说是否可接受。 - Andrew
这没有意义,因为我们没有添加设备令牌的任何要求。 - Dhruv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接