One Signal通知显示已送达但客户端未接收问题求助
One Signal推送显示已送达但客户端未收到的排查方案
问题详情
已完成One Signal SDK集成与官方文档要求的所有配置,但在控制台推送通知时,后台显示「已送达」,客户端却未收到通知。
初始化代码如下:
OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.INFO); OneSignal.initWithContext(this); OneSignal.setAppId(ONE_SIGNAL_ID);
可能的原因及排查步骤
- 设备通知权限未开启:确认应用是否获取到通知权限,Android 13+需单独申请
POST_NOTIFICATIONS权限,检查代码是否有动态申请逻辑,也可能是用户手动关闭了权限。 - 通知渠道配置异常:Android 8.0+必须配置通知渠道,若控制台推送未指定对应渠道,或该渠道被用户禁用,通知会被静默。检查初始化代码是否创建了推送渠道,以及控制台推送时是否选择了匹配的渠道。
- 设备Token失效:One Signal的「已送达」仅代表推送请求发送至FCM/APNs,若设备Token已失效(如应用卸载重装、系统重置),消息无法实际送达设备。可在控制台「用户」面板查看目标设备Token的活跃状态。
- 厂商后台管控拦截:小米、华为、vivo等国产安卓厂商的后台管控会限制非白名单应用接收推送,需引导用户将应用加入后台白名单、关闭省电模式类限制。
- SDK初始化时机错误:初始化代码需放在
Application的onCreate()中执行,若在Activity中初始化,可能因启动时机过晚导致Token未完成注册,错过推送。 - 日志排查细节:已开启VERBOSE日志等级,查看Logcat中的One Signal相关日志,重点关注Token获取结果、设备注册状态,以及推送到达时的处理日志,报错信息会直接指向问题。
- 通知设置不合理:若推送设置为低优先级或静默通知样式,系统可能不会弹窗提示,仅在通知栏隐藏显示或完全不提示。检查控制台推送时的通知优先级、样式配置。
内容的提问来源于stack exchange,提问作者Taki
相关产品推荐
相关产品推荐

