我收到“找不到FirebaseMessaging模块”的错误。下面是我的pod文件结构。
官方文档显示Firebase / Messaging可用。我已写入pod文件并尝试安装它。终端中的统计信息未显示FirebaseMessaging安装,并且该pods目录也是如此。
以下是终端统计数据。
我哪里错了?
这个答案适用于那些在经历过这里的所有事情后仍然遇到这个问题的人。
有时,您的CocoaPods模块最终会出现在iCloud中,并且不会将它们下载到您的Mac上。您所要做的就是转到项目中的pods文件夹,然后重新下载Mac上没有的pod。也许关闭该文件夹的iCloud。
此代码来自Firebase
示例Podfile
for Messaging。
我会说,尝试改变你的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
我不确定订单是否确实改变了pod的工作方式。
只是为了记录,因为那是我面临的情况。如果在安装pod后创建了新目标,则会出现“找不到模块”错误。项目将成功构建的奇怪之处。但是,自动完成功能不起作用,这些愚蠢的错误(未找到模块)将出现在这里和那里。
要解决此问题,您需要在Podfile中引入新目标。系统化的方法是:
$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile
然后删除Xcode工作区,继续进行新的Pod安装。
使用
#import "FirebaseMessaging.h"
代替
@module FirebaseMessaging
删除项目根目录中的Podfile.lock并重做pod install
。这对我有用。
导入#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
在目标的链接框架和库部分中添加缺少的框架,而Xcode可以解决这个问题。试试看;它解决了我的问题
[编辑] 在项目中搜索.framework,您将看到所有缺少框架的红色。
我遇到了同样的问题,我只是通过pod install
重新安装pod
将use_frameworks!
添加到Podfile解决了我的问题。