点击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端原生配置解决问题:
- 打开
android/app/src/main/AndroidManifest.xml,找到主Activity配置节点,新增两项属性:
<activity android:name=".MainActivity" android:launchMode="singleTop" <!-- 新增以下两个属性 --> android:showWhenLocked="true" android:turnScreenOn="true">
- 在
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
相关产品推荐
相关产品推荐

