键入“NSNotification.Name?”没有成员“firInstanceIDTokenRefresh”
Posted
技术标签:
【中文标题】键入“NSNotification.Name?”没有成员“firInstanceIDTokenRefresh”【英文标题】:Type 'NSNotification.Name?' has no member 'firInstanceIDTokenRefresh' 【发布时间】:2017-06-10 18:49:01 【问题描述】:我在带有 Swift 的 ios 应用中使用 Firebase 通知,我最近将 Firebase 消息从 1.2.3 更新到 2,我的代码开始左右中断。我解决了大部分问题,但我被这个问题困住了。
这是导致我出现问题的 AppDelegate 应用程序功能部分:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
UIApplication.shared.statusBarStyle = .lightContent
...
FirebaseApp.configure()
// [START add_token_refresh_observer]
// Add observer for InstanceID token refresh callback.
NotificationCenter.default.addObserver(self,
selector: #selector(self.tokenRefreshNotification),
name: .firInstanceIDTokenRefresh,
object: nil)
// [END add_token_refresh_observer]
return true
当我尝试运行我的应用程序时,我收到以下错误:
键入“NSNotification.Name?”没有成员'firInstanceIDTokenRefresh'
firInstanceIDTokenRefresh 是否已重命名为其他名称?
【问题讨论】:
【参考方案1】:此通知似乎已被委托方法替换。
Firebase Cloud Messaging 文档提到了如何监控令牌生成:
监控令牌生成
要在令牌更新时收到通知,请提供符合
FIRMessagingDelegate
协议的委托。以下示例注册了委托并添加了正确的委托方法:
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String)
print("Firebase registration token: \(fcmToken)")
编辑
文档还提到通知仍然可以使用,现在称为Notification.Name.MessagingRegistrationTokenRefreshed
。
【讨论】:
非常感谢! 是的,不再需要收听名为MessagingRegistrationTokenRefreshed
的 NSNotification。委托方法应该足够了。以上是关于键入“NSNotification.Name?”没有成员“firInstanceIDTokenRefresh”的主要内容,如果未能解决你的问题,请参考以下文章
教程类型“NSNotification.Name”没有成员“UIResponder”中的 Swift 5 不起作用
Swift 3 - 如何使用枚举原始值作为 NSNotification.Name?