背景,我做这块的时候搜索flutter firebase集成搜索的结果都是寥寥几句就配置完成了,当我做的时候发现坑有点多,正规的流程的谁都会写,但是重要的坑点想必是大家关心的。 所以就写了这篇文章,希望这篇文章能够帮助像我一样遇到很多坑的朋友。
一: 安卓端firebase配置
1:到firebase控制台申请一个账号并且创建应用,下载google-services.json文件放到android工程中app/目录下
2:配置gradle文件,两个gradle文件一个是项目的gradle文件,另一个是app的gradle文件,gradle的作用我在这里就不过多介绍了,感兴趣的可以去gradle官网去看看,
Project-level build.gradle (<project>/build.gradle):
// 配置第三方插件相关
buildscript {
// 指明下面的插件去哪里下载,这里是到google仓库和maven仓库去下载,它是按照顺序的,如果google下载到了就不会到maven仓库里面下载了
repositories {
// Make sure that you have the following two repositories
google() // Google's Maven repository
mavenCentral() // Maven Central repository
}
// 插件的依赖
dependencies {
...
// Add the dependency for the Google services Gradle plugin
classpath 'com.google.gms:google-services:4.3.13'
}
}
allprojects {
...
repositories {
// Make sure that you have the following two repositories
google() // Google's Maven repository
mavenCentral() // Maven Central repository
}
}
值得注意的是app/build.gradle,官网给出的方案并不好使,下面是firebase官方给出的:放置的位置很模糊 ,亲测各种报错,
plugins {
id 'com.android.application'
// Add the Google services Gradle plugin
id 'com.google.gms.google-services'
...
}
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:30.3.2')
// TODO: Add the dependencies for Firebase products you want to use
// When using the BoM, don't specify versions in Firebase dependencies
implementation 'com.google.firebase:firebase-analytics'
// Add the dependencies for any other desired Firebase products
// https://firebase.google.com/docs/android/setup#available-libraries
}
最后这个网站firebase_flutter 救了我,助我成功上岸。下面贴下正确的配置
android/app/build.gradle
apply plugin: 'com.google.gms.google-services'
就这短短的一句话,给力了,然后就是flutter工程引入,firebase_core和firebase_messaging
3: 代码里面初始化firebase
Firebase.initializeApp().then((value) async {
print("firebase init over");
String? token = await FirebaseMessaging.instance.getToken();
print("token is $token");
if(token != null && token.isNotEmpty) {
// 将token上传到后端,让后端控制发送推送通知
}
})
至此firebase在android上的集成完成了。
二: IOS端firebase配置,这一步我走的是挺费劲的,真是一步一个脚印啊!
1:还是下载Google-Services.plist文件
2:配置firebase
先看看firebase官网上的吧
寥寥几句就完了,于是我以为很简单就照做了,但是xcode报没有搜到,检查下是否是网络的问题,但是不是, 于是就切到ios文件加下 pod install 了,但是报错说FirebaseCore依赖GoogleUitls云云,于是就在网上搜到真正解决问题的方案
报错:
[!] The following Swift pods cannot yet be integrated as static libraries:
The Swift pod FirebaseCoreInternal-library
depends upon GoogleUtilities-library
, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set use_modular_headers!
globally in your Podfile, or specify :modular_headers => true
for particular dependencies.
解决方案:修改Podfile
platform :ios, '12.4'
...
...
pod 'Firebase', :modular_headers => true
pod 'FirebaseCoreInternal', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true
#....add any library need headers
连接地址:解决方法
在看一下官网上的 官网的方法-垃圾
丝毫不提最要命的
:modular_headers => true
3:IOS想要推送还需要配置通知的证书,然后下载.p8文件上传到firebase配置后台才能够成功,不然会报 apns- 未识别到字符串,另外还需要在项目的位置添加 推送设置