AppCenter推送通知无法送达求助:仅Google Firebase可正常推送
我之前也碰到过类似的问题,给你整理几个排查方向,应该能帮到你:
先从最基础的配置核对开始,这种跨平台推送的问题大多出在配置环节:
核对AppCenter的Firebase配置
确保你在AppCenter对应的Android应用里,已经正确上传了Firebase的google-services.json文件,而且这个文件和本地项目里用的是同一个。有时候会不小心传成其他项目的配置,或者文件里的Server Key有误。另外,检查AppCenter里的推送服务是否已经启用,有没有被误关闭。检查推送目标的匹配条件
AppCenter推送时选的目标群体是不是正确?比如选了「特定设备」,但设备的安装ID有没有正确添加?或者用了「自定义属性」筛选,但属性名称/值和实际设备上报的不匹配。可以先试试推送给「所有设备」,排除筛选条件的问题。查看AppCenter的推送日志
登录AppCenter后台,找到推送记录查看每条推送的状态详情。如果显示「已发送」但设备没收到,那可能是中间环节的问题;如果显示「发送失败」,日志里一般会给出具体错误(比如权限不足、配置错误),这是最直接的排查线索。核对本地代码的集成细节
虽然Firebase直接推送没问题,但AppCenter的SDK在接收推送时有没有额外的处理?比如:- 有没有正确初始化AppCenter推送模块?确保
AppCenter.start里包含了Push.class。 - 有没有自定义的推送接收器(Receiver)?如果有,要确保没有拦截或丢弃AppCenter的推送消息,尤其是
onMessageReceived方法里的处理逻辑。 - 检查应用权限配置,除了Firebase需要的权限,
INTERNET权限是AppCenter推送必须的,有没有在Manifest里声明?
- 有没有正确初始化AppCenter推送模块?确保
测试不同的推送场景
- 试试推送纯标题+正文的消息,不带任何自定义数据,看能不能收到;再试试带自定义数据的情况,排除数据格式的问题。
- 测试不同状态的设备:前台运行、后台运行、锁屏状态,有些情况下AppCenter的推送可能需要额外配置才能在后台唤醒应用。
检查Firebase的Cloud Messaging设置
确认Firebase里的Cloud Messaging API(Legacy)是否启用,因为AppCenter目前还是依赖这个Legacy API发送推送。如果这个API被禁用了,AppCenter就无法通过Firebase发消息,而你直接用Firebase控制台可能用的是新API,所以能正常推送。
内容的提问来源于stack exchange,提问作者ojorma

