uniapp配置android首次进入应用配置隐私政策提示弹框

1.打开manifest.json文件,切换到”App启动界面配置”,在”Android启动界面样式”中勾选”使用原生隐私政策提示框”

注意!androidPrivacy.json不要添加注释,会影响隐私政策提示框的显示!!!

2.勾选后会在项目中自动添加androidPrivacy.json文件,可以双击打开自定义配置以下内容:

message内容可根据需求定义

{  
  "version": "1",    
  "prompt": "template",  
  "title": "服务协议和隐私政策",  
  "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:
为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。
<br/> 你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。
如果你同意,请点击下面按钮开始接受我们的服务。",  
  "buttonAccept": "同意并接受",  
  "buttonRefuse": "暂不同意",  
  "second": {  
    "title": "确认提示",  
    "message": "  进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">
《隐私政策》</a>,否则将退出应用。",  
    "buttonAccept": "同意并继续",  
    "buttonRefuse": "退出应用"  
  },  
  "styles": {  
    "backgroundColor": "#00FF00",  
    "borderRadius":"5px",  
    "title": {  
      "color": "#ff00ff"  
    },  
    "buttonAccept": {  
      "color": "#ffff00"  
    },  
    "buttonRefuse": {  
      "color": "#00ffff"  
    }  
  }  
}

 

  • version
    隐私政策版本号,如果应用升级后希望重新弹出隐私政策提示框,则需要设置新版本
  • prompt
    是否使用原生隐私政策提示框,值为“template”表示使用,“none”表示不使用
  • title
    隐私政策提示框标题文本内容
  • message
    隐私政策提示框正文内容,支持富文本richtext类型字符串,支持a/font/br等节点,点击a链接会调用内置页面打开其href属性中链接地址。
    注意:务必配置此提示内容,参考上面示例内容并修改《服务协议》和《隐私政策》链接地址
  • buttonAccept
    模板提示框上接受按钮的文本,默认值为“同意”
  • buttonRefuse
    模板提示框上拒绝按钮的文本,默认不显示此按钮
  • second
    配置二次确认提示框显示内容,message属性值不为空时弹出二次确认提示框
    • title 二次确认提示框上的标题
    • message 二次确认提示框上的内容,支持富文本richtext类型字符串
    • buttonAccept 二次确认提示框上接受按钮的文本
    • buttonRefuse 二次确认提示框上拒绝按钮的文本
  • styles
    配置隐私政策提示框样式
    • backgroundColor 提示框背景颜色,#RRGGBB格式字符串
    • borderRadius 提示框背景圆角半径,单位为px(逻辑像素)
    • title 提示框标题样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
    • buttonAccept 接受按钮样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
    • buttonRefuse 拒绝按钮样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
  • disagreeMode
    未同意隐私政策模式 HBuilder X 3.3.1版本新增支持 具体配置及说明查看uni-app官网
    • support true表示开启disagreeMode;false表示不开启(用户不同意“隐私政策”则退出应用)。默认值为false。
    • loadNativePlugins 表示在disagreeMode模式是否加载uni原生插件,true表示加载;false表示不加载(此时调用uni.requireNativePlugin加载插件扩展Module返回undefined,扩展组件Component也无法使用)。默认值为true。

uni-app项目可以使用uni原生插件能支持更多自定义隐私政策提示框样式,可参考:Android 自定义隐私弹窗示例 - DCloud 插件市场

配置后 效果如下图

 

 也可以自定义隐私弹窗样式

uniapp官方链接 :https://ask.dcloud.net.cn/article/39199

ios隐私弹框后续补上

### UniApp 中录音权限的配置与申请 在 UniApp 应用开发过程中,为了实现录音功能并确保应用能够正常访问设备的麦克风资源,需要完成以下两部分工作:一是 **manifest.json 配置模块** 的设置;二是运行时动态请求用户的授权。 #### 一、Manifest.json 文件中的权限配置 在 `manifest.json` 文件中,开发者需手动添加必要的权限声明。对于 Android 平台而言,录制音频涉及的核心权限为 `android.permission.RECORD_AUDIO` 和其他可能关联的存储权限(如果需要保存录音文件)。具体操作如下: 1. 打开项目根目录下的 `manifest.json` 文件; 2. 定位至 `"permissions"` 字段,在其中加入所需的权限项: ```json { "name": "android.permission.RECORD_AUDIO", "description": "用于录音" } ``` 注意:修改完成后务必重新编译整个工程以使更改生效[^1]。 #### 二、Android 动态权限申请流程 由于 Android 6.0 (API Level 23) 及以上版本引入了更严格的隐私保护机制——即所谓的“运行时权限”,因此即使已经在 manifest 文件里申明过 RECORD_AUDIO 权限,仍需进一步向用户发起显式的许可请求才能实际获得该能力。以下是具体的实现方式: ```javascript function requestAudioPermission() { const permission = plus.android.importClass('android.Manifest.permission'); let permissionsToRequest = [permission.RECORD_AUDIO]; plus.android.requestPermissions( permissionsToRequest, function(resultObj){ console.log(`result=${JSON.stringify(resultObj)}`); if (!resultObj.granted) { // 如果有任意一项被拒,则提示失败信息给用户 alert("获取录音权限失败"); } else { startRecording(); // 成功后可以启动录音逻辑 } }, function(error){ console.error(`error=${JSON.stringify(error)}`); alert("发生错误:" + error.message); } ); } ``` 上述代码片段展示了如何利用 `plus.android.requestPermissions()` 方法来检测当前应用程序是否已经获得了指定列表内的所有权限,并根据返回的结果采取相应措施。 #### 三、iOS 平台上的特殊处理 相比之下,苹果 iOS 对于敏感数据采集类别的控制更加严格。除了同样要在 Info.plist 添加 NSMicrophoneUsageDescription 键值对外说明用途外,还需要借助 uni-app 提供的相关 API 进行额外判断和引导用户授予同意。 - 使用 `uni.getRecorderManager().getRecordPermission()` 探测当前状态; - 当发现尚未决定时调用 `uni.authorize({scope:'scope.record'})` 请求确认; - 用户曾经明确拒绝的情况下无法再次提醒,此时建议导航至系统设定界面让用户自行调整选项。 示例代码如下所示: ```javascript // 获取录音机实例对象 const recorderManager = uni.getRecorderManager(); recorderManager.onStop((res) => { console.log('停止录音', res.tempFilePath); }); async function checkAndRequestIOSPermission(){ try{ var status = await new Promise(resolve=>{ recorderManager.getRecordPermission(function(res){ resolve(res.authStatus); }); }); switch(status){ case 'not_determined': await uni.authorize({ scope: 'scope.record' }); break; case 'denied': uni.showModal({ title:"警告",content:"您之前拒绝了录音权限,请前往设置开启。", success:function(){ uni.openSetting(); } }); break; default:// authorized or restricted ; } }catch(e){console.warn(e);} } checkAndRequestIOSPermission(); ``` 综上所述,无论是针对哪种操作系统环境,都需要遵循官方文档指导妥善解决好基础层面的技术细节问题之后再考虑更高阶的功能扩展需求[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值