You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击OneSignal通知仅安卓端无法打开Flutter应用问题咨询

问题解决方案

你遇到的Android端点击OneSignal通知无法将应用唤起到前台的问题,核心关联构建输出的Android V1嵌入废弃警告:OneSignal 3.2.3版本适配的是Flutter Android V1嵌入标准,Flutter 2.5及以上版本对V1嵌入的Activity唤起逻辑做了兼容性调整,导致通知点击后仅能触发回调、无法将退到后台的应用唤起到前台,iOS端不受嵌入版本约束所以逻辑正常。

方案1:升级插件版本(推荐)

升级OneSignal版本可同时解决通知唤起问题和构建废弃警告:

  • 将pubspec.yaml中的onesignal_flutter依赖升级到3.3.0及以上版本,该版本官方已完成Android V2嵌入适配
  • 修改依赖后执行flutter clean清理缓存,再重新构建应用即可,原有通知配置、回调逻辑基本无需调整,仅需核对回调参数结构是否符合现有业务逻辑

方案2:无需升级插件的手动适配方案

如果暂时无法升级OneSignal版本,可通过修改Android端原生配置解决问题:

  1. 打开android/app/src/main/AndroidManifest.xml,找到主Activity配置节点,新增两项属性:
<activity
    android:name=".MainActivity"
    android:launchMode="singleTop"
    <!-- 新增以下两个属性 -->
    android:showWhenLocked="true"
    android:turnScreenOn="true">
  1. 在android/app/src/main/kotlin/你的包名路径/MainActivity.kt的onCreate方法中新增唤起逻辑,Java项目对应调整语法即可:
import android.content.Intent
import com.onesignal.OneSignal

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 原有逻辑保持不变,新增以下代码
    OneSignal.setNotificationOpenedHandler {
        if (!isTaskRoot) {
            val launchIntent = packageManager.getLaunchIntentForPackage(packageName)
            launchIntent?.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
            startActivity(launchIntent)
        }
    }
}

内容的提问来源于stack exchange,提问作者Nimr Sawafta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:39:03