OneSignal推送通知点击后无法打开已关闭的Android应用问题求助
问题排查及解决方法
你出现该问题的核心原因是在AndroidManifest.xml中配置了com.onesignal.NotificationOpened.DEFAULT为DISABLE,该配置会直接禁用OneSignal SDK默认的「点击通知启动应用」逻辑,你没有手动实现点击回调的前提下,自然会出现点击通知无响应的情况,可以按以下步骤修复:
方案1:保留自定义跳转逻辑,添加通知点击监听
在Loader类的onCreate方法中,OneSignal初始化完成后添加点击事件回调,示例代码如下:
// OneSignal Initialization OneSignal.initWithContext(this); OneSignal.setAppId(ONESIGNAL_APP_ID); // 新增通知点击回调逻辑 OneSignal.setNotificationOpenedHandler(result -> { // 按需跳转指定页面,此处示例跳转Loader启动页 Intent intent = new Intent(this, Loader.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); // 若需要获取通知携带的自定义参数,可通过以下代码获取 // JSONObject additionalData = result.getNotification().getAdditionalData(); });
方案2:不需要自定义跳转,直接删除禁用配置
如果你不需要自定义点击通知的跳转逻辑,直接删除AndroidManifest.xml中如下配置即可,OneSignal会自动启用默认的点击通知启动应用首页的逻辑:
<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />
其他场景补充排查
- 确认
LoaderActivity已经在AndroidManifest.xml中正确配置了启动类的<intent-filter>,包含android.intent.action.MAIN和android.intent.category.LAUNCHER属性 - Android 13及以上版本需要动态申请
POST_NOTIFICATIONS权限,确保通知可以正常被接收 - 小米、华为、vivo等国产定制系统需要授予应用「自启动」「后台弹出界面」权限,这类系统会默认禁止后台应用主动拉起Activity,导致点击通知无响应
- 应用完全关闭状态下测试时,可以通过Logcat过滤
OneSignal标签,查看点击通知时是否有崩溃、权限拦截类的报错日志
内容的提问来源于stack exchange,提问作者Enwinkel
相关产品推荐
相关产品推荐

