sofashi
sofashi
  • 发布:2026-06-01 09:52
  • 更新:2026-06-01 10:43
  • 阅读:86

pushRegisterMode 写成了 manual oppo还是审核不通过

分类:uni-app

按照配置文件写法,将 pushRegisterMode 写成了 manual ,oppo手机还是一打开就会申请通知权限,其他手机不会。造成oppo那边审核不通过

2026-06-01 09:52 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

针对你提到的 OPPO 手机配置了 pushRegisterMode: "manual" 但一打开应用仍会申请通知权限,导致 OPPO 审核不通过的问题,核心原因和解决方案如下:

核心原因分析

pushRegisterMode: "manual" 这个配置项主要是针对 iOS 平台的。在 uni-app 中,它用于控制 iOS 端是否在应用启动时自动注册 Push 通知并弹出授权框。

对于 Android 平台,特别是集成了 uniPush 模块后,通知权限的弹出行为主要受以下因素影响:

  1. Android 系统版本:从 Android 13 开始,系统要求动态申请 POST_NOTIFICATIONS 权限。如果应用没有适配,可能会在启动时自动弹出权限请求。
  2. uniPush 模块的初始化时机:uniPush 模块在原生层初始化时,可能会触发系统通知权限的申请流程,尤其在 OPPO 等厂商的深度定制系统上,行为可能更加严格。
  3. 你的应用 targetSdkVersion:如果你的应用 targetSdkVersion 设置为了 33 或更高,就必须遵循 Android 13 的新权限规定。

解决方案

你需要对 Android 平台进行专门的适配,而不是依赖 iOS 的配置项。

  1. 配置隐私政策弹窗(必须)
    这是解决合规问题的根本。你需要在应用启动时,先展示一个用户隐私协议弹窗,在用户点击“同意”之前,不进行任何可能涉及隐私的初始化操作(包括获取 Push ClientId、获取设备信息等)。
    请严格按照官方文档配置:Android平台隐私与政策提示框

  2. 延迟调用获取 ClientId 的 API
    确保不要在 App.vueonLaunch 或首页的 onLoad 中立即调用 uni.getPushClientId()plus.push.getClientInfo()。必须在用户同意隐私政策之后,再调用这些 API 来初始化推送服务。

  3. 使用 Android 原生权限配置(推荐)
    manifest.json 文件的源码视图(Source View)中,为 Android 平台配置 pushRegisterMode。这与 iOS 的配置路径不同。

    修改 manifest.json 源码视图,在 "app-plus" -> "distribute" -> "android" 下添加配置:

    {  
        "app-plus": {  
            "distribute": {  
                "android": {  
                    "pushRegisterMode": "manual"  
                }  
            }  
        }  
    }  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
    请注意:

    • 这个配置项在 HBuilderX 4.87+ 版本中,官方人员已确认 Android 平台也支持。
    • 配置后,需要重新提交云端打包才能生效,自定义基座也需要重新制作。
    • 配置为 "manual" 后,你必须在代码中主动调用 uni.getPushClientId(),系统才会弹出通知权限申请框。
  4. 检查 targetSdkVersion
    确保你的 manifest.json 中配置的 targetSdkVersion 符合要求。如果设置为 33 或以上,必须适配 POST_NOTIFICATIONS 权限的动态申请。

总结

OPPO 审核不通过,是因为应用在隐私协议同意前就触发了系统通知权限的弹窗。请按以下顺序操作:

  1. 首先,实现 App 启动时的隐私政策弹窗。
  2. 其次,在 manifest.json 源码视图中,为 Android 平台配置 "pushRegisterMode": "manual"
  3. 最后,将 uni.getPushClientId() 的调用移到用户同意隐私政策之后。

如果上述步骤完成后问题依旧,建议在 uni-app 官方技术交流群 中进行咨询,并提供你的 manifest.json 完整截图(特别是模块配置和权限页签),以便进行更深入的分析。

内容为 AI 生成,仅供参考
sofashi

sofashi (作者)

好的,谢谢,我再排查一下

sofashi

sofashi (作者)

试过了,没有用 targetSdkVersion调低到了 30, oppo还是报申请通知权限,其他手机没事

要回复问题请先登录注册