WebView应用无法获取FCM注册令牌,使用Volley上传数据到API问题求助
代码中存在的问题及修复方案
- App级build.gradle重复声明插件
你重复写了两次apply plugin: 'com.android.application',删掉其中一个即可。 - MainActivity存在编译错误
代码里import android.content.Intent;vhhghgh末尾的vhhghgh是乱码垃圾字符,直接删除,否则无法正常编译。 - 缺失主动获取FCM令牌的逻辑
onNewToken仅在令牌刷新时才会触发回调,首次安装启动应用时不会主动执行,需要在MainActivity的onCreate方法中主动调用FirebaseMessaging.getInstance().getToken()获取当前已生成的令牌,拿到后直接调用上传逻辑。 - 上传接口URL格式错误
MyFirebaseMessagingService里的请求URL少了参数分隔的等于号,当前写法是?token"+token,会导致参数拼接错误,后端无法正常接收token,修改为?token=即可。 - 未按需求上传安卓ID参数
目前上传逻辑仅携带了token参数,未携带安卓ID。可以先将MainActivity中获取到的安卓ID存入SharedPreferences,在上传令牌时从SharedPreferences读取安卓ID,拼接到请求参数中一并上传。 - Firebase初始化依赖缺失
请确认你已经将从Firebase控制台下载的google-services.json文件放到项目的app模块根目录下,没有该文件FCM无法正常初始化,自然无法获取到令牌。 - 明文HTTP请求适配问题
你当前的接口用的是HTTP协议,安卓9及以上系统默认禁止明文HTTP请求,请检查你的network_security_config.xml中已经配置了对应域名的明文请求允许规则,或者直接将接口升级为HTTPS协议。 - 服务未适配安卓12+规则
安卓12及以上系统要求带intent-filter的四大组件必须声明android:exported属性,你当前在Manifest中注册的MyFirebaseMessagingService没有加该属性,会导致高版本系统上服务无法正常注册,在service标签中添加android:exported="false"即可。 - Volley请求无异常日志
你当前Volley的成功和失败回调都是空实现,出现请求异常时无法排查问题,建议在回调中添加Log打印响应内容和错误信息,方便定位问题。
内容的提问来源于stack exchange,提问作者Parshant Prashar
相关产品推荐
相关产品推荐

