You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Expo SDK 53(53.0.16)Android端通知冷启动时启动屏图片不显示问题咨询

Expo SDK 53(53.0.16)Android端通知冷启动时启动屏图片不显示问题咨询

问题概述

我遇到了一个奇怪的启动屏异常:当Android应用处于完全关闭状态,通过推送通知冷启动时,启动屏的背景色能正常显示,但配置的启动屏图片却加载不出来;而直接点击应用图标正常启动时,图片显示完全正常。iOS端没有这个问题,所有启动场景下启动屏都能正常渲染。

当前app.jsonexpo-splash-screen插件配置

[
  "expo-splash-screen",
  {
    "ios": {
      "backgroundColor": "#000000",
      "image": "./assets/images/splash-icon-light.png",
      "dark": {
        "image": "./assets/images/splash-icon-light.png",
        "backgroundColor": "#000000"
      },
      "resizeMode": "contain",
      "imageWidth": 300
    },
    "android": {
      "backgroundColor": "#0000FF",
      "image": "./assets/images/splash-icon-light.png",
      "imageWidth": 250,
      "resizeMode": "contain"
    }
  }
]

已做的测试验证

  • 分别在EAS构建的预览包和生产包中测试,问题均复现
  • 测试时排除了Expo Go和dev-client,只针对正式构建的APK/AAB
  • 尝试过调整resizeModecontain(当前已配置),但无法稳定解决问题
  • 根据社区反馈和自己的排查,推测这是Expo Android端与通知冷启动相关的已知bug,核心应该是通知触发冷启动时,启动屏对应的Drawable资源加载逻辑出现了异常

想咨询的问题

1. 有没有可靠的临时解决方案?

这里有几个可以尝试的方向:

  • 手动模拟启动屏:在App的根组件中,通过useEffect结合expo-notifications的API判断是否是通过通知冷启动,如果是,则先渲染一个和官方启动屏样式完全一致的自定义组件,直到应用初始化完成再隐藏这个组件,替代原生启动屏的缺失。
  • 修改Android原生启动屏资源:通过eas build:configure生成Android原生项目代码,手动去res/drawable目录下修改启动屏相关的Drawable文件,确保通知启动场景下资源能被正确加载。修改后需要重新构建应用。
  • 延迟通知路由处理:在推送通知的payload中添加一个标记,当应用冷启动时,先完成基础的启动流程(确保应用加载完成),延迟1-2秒再处理通知对应的路由跳转,给启动屏足够的加载时间。

2. 官方有没有修复这个问题的时间线?

目前这个问题属于Expo Android端的已知issue,官方团队一般会在后续的SDK小版本更新或者大版本迭代中修复,但暂时没有公开的明确时间线。建议你关注Expo的官方更新日志,或者在Expo社区论坛跟进相关讨论,获取修复进度的最新消息。

3. 有没有临时优化用户体验的方法?

  • 统一视觉风格:如果图片暂时无法显示,可以调整启动屏背景色,让它和应用的主题色更贴近,减少用户的视觉落差。
  • 添加加载状态提示:在启动屏背景上添加简单的文字提示(比如“正在启动,请稍候...”),让用户明确感知到应用正在加载,避免误以为应用卡住。
  • 优化冷启动速度:尽量精简应用冷启动时的初始化任务,比如延迟非必要的第三方SDK初始化,加快应用加载完成的速度,缩短用户看不到启动屏图片的等待时长。

内容来源于stack exchange

火山引擎 最新活动