使用 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
我收到 '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