使用 cocoapods 找不到 FirebaseMessaging 模块 iOS

FirebaseMessaging module not found using cocoapods iOS

我收到 'FirebaseMessaging module not found' 的错误。下面是我的 pod 文件结构。

官方文档显示 Firebase/Messaging 可用。我已经写在 pod 文件中并尝试安装它。终端中的统计信息不显示 FirebaseMessaging 安装,pods 目录也是如此。

以下是终端统计数据。

我哪里错了?

此代码来自 Firebase 消息示例 Podfile

我会说,试着改变你的 Podfile,关闭 XCode 和 运行 pod install

use_frameworks!
platform :ios, '7.0'

pod 'Firebase/Messaging'

target 'FCM' do
end
target 'FCMSwift' do
end
target 'FCMTests' do
end

我不确定订单是否确实改变了 pods 的工作方式。

罪魁祸首是 Pods! 使用此 从项目 中删除了所有 CocoaPods link.

此后,我再次使用此link.

将Pods添加到项目

后来果然成功了!

仅作记录,因为那是我面临的情况。如果您在 安装 pods 之后创建了一个新目标 ,您将收到 "Module not found" 错误。该项目将成功构建的奇怪的事情。但是,自动完成将不起作用,并且这些愚蠢的错误(找不到模块)会到处出现。

解决问题需要在Podfile中引入新的target。一个系统的方法是:

$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile

然后删除 Xcode 工作区,并继续安装全新的 Pod。

删除项目根目录中的 Podfile.lock 并重做 pod install。 这对我有用。

使用

#import "FirebaseMessaging.h"

而不是

@module FirebaseMessaging

在目标的链接框架和库部分添加缺少的框架,完全 Xcode 可能会解决问题。试试看;它解决了我的问题。

[编辑]
在项目中搜索.framework,你会看到所有缺少的框架都是红色的。

导入 #import "FirebaseMessaging.h" 而不是 @import FirebaseMessaging;

如果您使用此代码获取令牌 ID:[[FIRInstanceID instanceID] token]

您会收到此警告消息:'token' is deprecated: Use instanceIDWithHandler: instead.

为此,请使用此代码获取令牌 ID。

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result, NSError * _Nullable error) {
    if (error != nil) {
        NSLog(@"Error fetching remote instance ID: %@", error);
    } else {
        NSLog(@"Remote instance ID token: %@", result.token);
        NSString* message = [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
        self.instanceIDTokenMessage.text = message;
    }
}];

https://firebase.google.com/docs/cloud-messaging/ios/first-message

我遇到了同样的问题,我只是重新安装 pods,pod install