Flutter+FCM开发推送功能

本文讲述在Flutter项目中集成FCM的过程。运行时遇到MissingPluginException错误,参考GitHub上的issue文档解决。测试时log出现异常,在stackoverflow找到解决办法。之后客户端问题解决,让后端发消息。同时指出,无论后端还是移动端使用FCM都需FQ,否则移动端无法获取token。

我是直接站在巨人的肩上了
参考文档,将fcm集成到flutter项目中。

运行遇到错误:MissingPluginException(No implementation found for method FcmDartService#initialized on channel
查询github上issue发现有同样的错误,参考issue文档成功解决

再运行,没有错误了,赶紧到fcm console中发一条消息测试一下。能收到了,但是log中有异常:Missing Default Notification Channel metadata in AndroidManifest
后来也在stackoverflow中找到解决方法, 需要在res/values/styles.xml加

<string name="default_notification_channel_id" translatable="false">default_notification_channel_id</string>

再在AndroidManifest.xml中加meta-data:

<meta-data
      android:name="com.google.firebase.messaging.default_notification_channel_id"
      android:value="@string/default_notification_channel_id"/>

再运行,日志里还有异常

W/ConnectionTracker(29097): Exception thrown while unbinding
W/ConnectionTracker(29097): java.lang.IllegalArgumentException: Service not registered: com.google.android.gms.measurement.internal.zzjl@56d898d
W/ConnectionTracker(29097): 	at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1860)
W/ConnectionTracker(29097): 	at android.app.ContextImpl.unbindService(ContextImpl.java:1834)
W/ConnectionTracker(29097): 	at android.content.ContextWrapper.unbindService(ContextWrapper.java:752)
W/ConnectionTracker(29097): 	at com.google.android.gms.common.stats.ConnectionTracker.zza(com.google.android.gms:play-services-basement@@17.3.0:55)
W/ConnectionTracker(29097): 	at com.google.android.gms.common.stats.ConnectionTracker.unbindService(com.google.android.gms:play-services-basement@@17.3.0:50)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zzir.zzag(com.google.android.gms:play-services-measurement-impl@@18.0.0:245)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zzir.zzal(com.google.android.gms:play-services-measurement-impl@@18.0.0:262)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zzir.zzc(com.google.android.gms:play-services-measurement-impl@@18.0.0:336)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zziq.zza(com.google.android.gms:play-services-measurement-impl@@18.0.0:2)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zzal.run(com.google.android.gms:play-services-measurement-impl@@18.0.0:7)
W/ConnectionTracker(29097): 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
W/ConnectionTracker(29097): 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
W/ConnectionTracker(29097): 	at com.google.android.gms.measurement.internal.zzfv.run(com.google.android.gms:play-services-measurement-impl@@18.0.0:2

参考issue的解决方案,我加了

    implementation 'com.google.android.gms:play-services-basement:17.5.0'

客户端解决,接下来解除java firebase-admin sdk, 让后端来发消息。
无聊是后端还是移动端, 要想使用FCM, 必须得FQ, 否则移动端获取不到token, firebase-admin也无法oauth2.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值