FCM结合Parse Server推送通知遇mismatchsenderid及客户端应用错误
兄弟,看你先是踩了GCM对接Parse Server的坑,听了建议转投FCM,而且已经成功拿到设备注册ID了——从你贴的日志来看:
04-15 17:01:29.773 I/parse.GcmRegistrar(30144): GCM registration successful. Registration Id: APA91bFoNUPYdsjN6O_CkPje-O0hXjNz9kvURZMex72xClyBr_5o6D0vYtI-F0iyAGgSYjpIEaJt2QQ2CXk2qpI11gPFUSUdzH-NxQRXSK3hPkuaiC_lciVV3E0fp6A_VZUoYJ8VxOIh
这一步完全没问题,已经跨过了最基础的注册关卡。虽然你没说用Firebase控制台发通知时具体遇到啥状况,但我给你列几个高频踩坑点,你可以挨个排查:
确认Parse Server的FCM配置是否到位:你得保证Parse Server初始化时,已经把FCM的关键信息配置正确。比如在启动脚本里要加上类似这样的代码段:
const api = new ParseServer({ // 其他基础配置 push: { android: { senderId: "你的Firebase项目Sender ID", apiKey: "你的FCM服务器密钥" } } });要是这里的密钥或者Sender ID错了,就算设备拿到注册ID,推送也根本发不出去。
检查Parse的
_Installation表数据:去Parse Dashboard里看看_Installation表,对应设备的条目里,deviceToken字段是不是已经准确存入了你拿到的那个FCM注册ID。要是这个字段是空的或者存错了,Firebase控制台就算选对目标,也找不到你的设备。Firebase控制台的推送目标是否选对:如果是选「单个设备」推送,一定要确认粘贴的注册ID完全和日志里的一致——多一个空格、少一个字符都不行。也可以试试用「主题推送」或者「用户分段」测试,排除单个ID的输入问题。
设备端的通知权限和运行状态:先确认设备给APP开了通知权限,然后看看APP是在前台还是后台运行。如果是前台,得确保你在代码里处理了FCM的通知回调;有些安卓设备的省电模式会强制拦截后台通知,也记得去设置里关一下试试。
查看Parse Server的日志排查异常:如果是自托管的Parse Server,去翻一下它的运行日志,看看有没有推送相关的报错——比如API密钥无效、网络连不上FCM服务器之类的,这些信息能直接定位问题。
要是你能补充一下发送通知时的具体症状(比如完全没收到、控制台弹报错、Parse日志有异常信息),我能给你更精准的解决方案。
内容的提问来源于stack exchange,提问作者upTheIrons

