提交 0c6668d8 编写于 作者: D DCloud_LXH

Merge branch 'master' into vuepress

......@@ -304,3 +304,8 @@ uni.requestPayment({
}
</script>
```
- [Paypal支付示例](https://uniapp.dcloud.io/app-payment-paypal)
- [Stripe支付示例](https://uniapp.dcloud.io/app-payment-stripe)
- [Google Pay支付示例](https://uniapp.dcloud.io/app-payment-google)
......@@ -55,6 +55,9 @@
||wxpay|微信支付||
||baidu|百度收银台||
||appleiap|苹果应用内支付|iOS 应用打包后可获取|
||google-pay|Google Pay支付|App 3.3.7+,Android 应用打包后可获取,Android 设备装有 18.0.0 或更高版本的 Google Play 服务|
||paypal|PayPal支付|App 3.3.7+,iOS11.0+支持,Android 5.0+ (API21+)|
||stripe|Stripe支付|App 3.3.7+,iOS13.0+支持|
|push|unipush|[UniPush](https://ask.dcloud.net.cn/article/35622)|推送服务是三选一,只会获取到一个供应商。|
||igexin|个推|填写配置并打包后可以获取,仅为向下兼容而保留,不再推荐使用|
||mipush|小米推送|填写配置并打包后可以获取,仅为向下兼容而保留,不再推荐使用|
......
从iOS9开始系统安全策略更新,加入对用户隐私以及禁止扫描系统信息的控制,限制了应用对scheme协议的访问。需要将其它App注册的scheme添加到应用访问白名单(LSApplicationQueriesSchemes)中才能实现以下功能:
- 通过scheme检查其它App是否安装,不添加到白名单则检测结果为未安装(即使应用已经安装)
- 通过scheme协议调用其它App,不添加到白名单则会弹出提示框,用户确认后才能启动应用,添加到白名单列表后则无需用户确认直接启动应用。
**注意**
iOS15及以上系统限制每个应用最多只能配置50个白名单列表,超过50个的白名单会失效,在配置白名单时需要注意以下问题:
- 部分模块使用的三方SDK(如微信登录)需要添加白名单列表,三方SDK添加的白名单优先级高于manifest.json中配置的白名单
- uni原生插件可能也会添加白名单列表,uni原生插件添加的白名单优先级高于manifest.json中配置的白名单
### 设置应用访问白名单列表
#### 可视化界面配置
打开项目的manifest.json文件,切换到“App常用其它设置”项,在“iOS设置”下的“应用访问白名单”编辑框中配置:
![](https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/uniapp/ios/chemewhitelist.png)
**注意:多个白名单列表使用“,”分割**
> 提示:如果可视化界面无法编辑,请切换到“源码视图”配置
#### 源码视图配置
打开项目的manifest.json文件,切换到“代码视图”
- uni-app项目
在manifest.json文件的"app-plus"->"distribute"->"ios"下添加urlschemewhitelist节点数据如下:
``` json
"plus": {
"distribute": {
"ios": {
"urlschemewhitelist": "baidumap,iosamap",
//...
},
//...
},
//...
},
//...
```
- 5+ App/Wap2App项目
把上面的urlschemewhitelist节点数据放到manifest.json的"plus"->"distribute"->"apple"节点下
**提示**
>低版本HBuilderX中urlschemewhitelist字段值为数组类型,如下:
>``` json
>"urlschemewhitelist": ["baidumap","iosamap"]
>```
>云端打包也可以兼容生效,只是无法在可视化界面编辑。
**注意**
- 配置后需提交云端打包后才能生效,真机运行时请使用[自定义调试基座](https://ask.dcloud.net.cn/article/35115)
- 离线打包请直接在XCode工程中修改Info.plist文件的`LSApplicationQueriesSchemes`字段值
### 云端打包默认添加应用访问白名单列表
为了方便开发者调用一些常用的第三方应用,云端打包默认已经添加以下白名单
``` txt
weixin
wechat
mqq
weibosdk2.5
weibosdk
mqqapi
mqzone
sinaweibo
sinaweibohd
mqqopensdkapiV3
mqqwpa
mqqopensdkapiV2
mqqOpensdkSSoLogin
qqmap
baidumap
iosamap
openApp.jdMobile
taobao
hbuilder
pinduoduo
imeituan
tmall
dianping
vipshop
yanxuan
suning
kaola
snssdk32
shark.video
wbmain
cydia
streamapp
kwai
pptv
bilibili
kugouURL
qqnews
zhihu
doubanradio
wccbyihaodian
ctrip
kuaikanmanhua
ntesopen
yddict
shanbay
gugutouchmanga
bobo
wtloginmqq2
qrxs
mailmaster
jcnhers
lightsky
gaeagj
yixin
ydcourse
awemesso'
```
**注意**
默认添加的应用访问白名单列表不会影响应用任何功能,当开发者配置的白名单超过50个时,默认添加的白名单列表将失效。
......@@ -127,7 +127,7 @@ WKWebview使用了更加严格的安全机制,使用原生混淆的js文件在
### 提交云端打包
配置好原生混淆的文件列表后,需要提交云端打包,**注意在App云端打包对话框中需要勾选“对配置的js文件进行原生混淆”**
![](https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/sec/confusion.png)
![](https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/uniapp/security/confusion.png)
**再次强调:为了保证加密数据的安全性,加密算法和key不对外公开,因此离线打包无法支持原生混淆。**
......
......@@ -249,11 +249,11 @@ nvue map 更换箭头图标格式参考: [https://ask.dcloud.net.cn/article/3790
- 小程序和 app-vue 中,css 动画对 `<map>` 组件无效。
- map 组件使用的经纬度是国测局坐标,调用 uni.getLocation 接口需要指定 type 为 gcj02。
- `<map>` 组件在不同平台的底层引擎是不同的:微信小程序为腾讯地图;H5为腾讯地图或谷歌地图;App、支付宝小程序为高德地图;百度小程序、快应用为百度地图。app-vue也可以使用百度地图,在manifest中配置,打包后生效,但app-nvue只支持高德地图。另外选择地图、查看地图位置的API也仅支持高德地图。App端如无特殊必要,建议使用高德地图。
- map 组件默认的api是参考微信小程序的,如需要使用plus.map,可以通过`$getAppMap`获取原生地图对象,[详见](https://uniapp.dcloud.io/api/location/map)。注意nvue的map组件不是plus.map对象,无法使用`$getAppMap`
- map 组件默认的api是参考微信小程序的,如需要使用plus.map,可以通过`$getAppMap`获取原生地图对象,[详见](/api/location/map)。注意nvue的map组件不是plus.map对象,无法使用`$getAppMap`
- H5 端获取定位信息,需要部署在 **https** 服务上,本地预览(localhost)仍然可以使用 http 协议。
- 无GPS模块或GPS无信号的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
- App 端使用地图组件需要**向高德或百度等三方服务商申请SDK资质,获取AppKey,打包时需要在manifest文件中勾选相应模块,在SDK配置中填写Appkey。注意申请包名和打包时的包名需匹配一致,证书信息匹配**。在manifest可视化界面有详细申请指南。
- H5 端使用地图和定位相关,需要在 (manifest.json)[/collocation/manifest?id=h5sdkconfig] 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
- H5 端使用地图和定位相关,需要在 [manifest.json](/collocation/manifest?id=h5sdkconfig) 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
- ios nvue Color 不支持 ARGB 十六进制,使用 rgba(r,g,b,a) 代替
##### FAQ
......
......@@ -25,7 +25,7 @@
|enable-progress-gesture|Boolean|true|是否开启控制进度的手势|字节跳动小程序不支持|
|object-fit|String|contain|当视频大小与 video 容器大小不一致时,视频的表现形式。contain:包含,fill:填充,cover:覆盖|App、微信小程序、字节跳动小程序、飞书小程序、H5|
|poster|String||视频封面的图片网络资源地址,如果 controls 属性值为 false 则设置 poster 无效||
|show-mute-btn|Boolean|false|是否显示静音按钮|微信小程序|
|show-mute-btn|Boolean|false|是否显示静音按钮|微信小程序、App-nvue|
|title|String||视频的标题,全屏时在顶部展示|微信小程序|
|play-btn-position|String|bottom|播放按钮的位置|微信小程序、字节跳动小程序、飞书小程序|
|enable-play-gesture|Boolean|false|是否开启播放手势,即双击切换播放/暂停|微信小程序、快手小程序|
......
......@@ -342,7 +342,7 @@ export default {
```js
onReady() {
// #ifdef APP-PLUS
var currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象
var currentWebview = this.$scope.page.$getAppWebview() //获取当前页面的webview对象
setTimeout(function() {
wv = currentWebview.children()[0]
wv.setStyle({scalable:true})
......
# 更新日志(Alpha 版)
---
#### 3.3.12.20220222-alpha
* 【uni-app】
+ App平台、H5平台 修复 vue3 项目两个开启了下拉刷新的页面跳转后返回,下拉刷新不触发 onPullDownRefresh 生命周期的Bug [详情](https://github.com/dcloudio/uni-app/issues/3187)
+ App平台 修复 vue3 项目 nvue 页面使用 map 组件时部分方法不生效的Bug [详情](https://ask.dcloud.net.cn/question/138515)
+ App-Android平台 修复 picker 组件选择选项后同页面 input 组件可能无法正常获取焦点的Bug [详情](https://ask.dcloud.net.cn/question/138237)
+ App-Android平台 修复 vue3 项目 安卓低版本时使用 type=number 的 input 组件输入报错的Bug [详情](https://ask.dcloud.net.cn/question/138088)
+ App-iOS平台 修复 3.3.2 版本引出的支持多个音频同时播放引发iOS影响静音开关的问题,默认不支持同时播放多个文件,如果需要可手动设置 sessionCategory
+ App-iOS平台 修复 vue3 项目 canvas 组件绘制本地图像后无法导出到本地到Bug
+ H5平台 优化 uni.chooseLocation 支持传入坐标
+ H5平台 修复 vue2 项目开启摇树后 ad 组件失效的Bug
+ H5平台 修复 vue3 项目 image 组件 mode=heightFix 图像大小显示错误的Bug
+ H5平台 修复 vue3 项目 button 组件发行后 loading 不显示的Bug
+ 支付宝小程序平台 修复 触发自定义事件报错的Bug [详情](https://ask.dcloud.net.cn/question/138706)
* 【uniCloud】
+ 修复 JQL语法 getTemp 返回结果传递给组件属性时在微信小程序端报错的Bug [详情](https://ask.dcloud.net.cn/question/138308)
* 【App插件(含5+App和uni-app的App端)】
+ 更新 uni-AD 腾讯优量汇SDK Android为 4.450.1320 版,iOS为 4.13.50 版;今日头条穿山甲SDK Android为 4.3.0.1 版, iOS为 4.3.0.2 版;快手广告SDK Android为 3.3.21 版,iOS为 3.3.21 版
+ Android平台 修复 一键登录 授权页面服务协议自定义复选框状态图片设置不正确的Bug [详情](https://ask.dcloud.net.cn/question/139830)
+ iOS平台 修复 Downloader 下载图片文件可能失败的Bug [详情](https://ask.dcloud.net.cn/question/116101)
+ iOS平台 修复 geitImageInfo 可能不触发回调的Bug [详情](https://ask.dcloud.net.cn/question/139361)
* 【uni小程序SDK】
+ iOS平台 修复 动态切换横竖屏导致页面布局异常的Bug
#### 3.3.8.20220114-alpha
* 【uniCloud】
......
### 使用代码块直接创建组件模板
为提升开发效率,HBuilderX将 ```uni-app``` 常用代码封装成了以 ```u``` 开头的代码块,如在 ```template``` 标签内输入 ```ulist``` 回车,会自动生成如下代码:
```html
<uni-list>
<uni-list-item title="" note=""></uni-list-item>
<uni-list-item title="" note=""></uni-list-item>
</uni-list>
```
注意需保障uni-list组件在项目的components目录下。比较简单的方式,是新建项目时,选 uni ui项目模板,在里面即可随便敲所有u开头的代码块。如果不是 uni ui项目模板,那么需要去插件市场手动把[uni ui组件](https://ext.dcloud.net.cn/plugin?id=55)下载到工程里。
代码块分为Tag代码块、JS代码块,如在 ```script``` 标签内输入 ```uShowToast``` 回车,会自动生成如下代码:
```js
uni.showToast({
title: '',
mask: false,
duration: 1500
});
```
```uni-app```已支持代码块见下方列表。
#### Tag代码块
- uButton
- uCheckbox
- uGrid:宫格,需引用uni ui
- uList:列表,需引用uni ui
- uListMedia
- uRadio
- uSwiper
- ......
几乎各种组件不管是内置组件还是uni ui的组件,均已封装为代码块,在HBuilderX的vue代码template区域中敲u,代码助手会提示所有可见列表。也可在HBuilderX菜单工具-代码块设置-vue代码块的左侧列表查阅所有。
除组件外,其他常用代码块包括:
- viewfor:生成一段带有v-for循环结构的视图代码块
- vbase:生成一段基本的vue代码结构
#### JS代码块
##### uni api代码块
- uRequest
- uGetLocation
- uShowToast
- uShowLoading
- uHideLoading
- uShowModal
- uShowActionSheet
- uNavigateTo
- uNavigateBack
- uRedirectTo
- uStartPullDownRefresh
- uStopPullDownRefresh
- uLogin
- uShare
- uPay
- ......
几乎各种常用js api,均已封装为代码块,在HBuilderX的js代码中敲u,代码助手会提示所有可见列表。也可在HBuilderX菜单工具-代码块设置-js代码块的左侧列表查阅所有。
##### vue js代码块
- vImport:导入文件
- ed:export default
- vData:输出 data(){return{}}
- vMethod:输出 methods:{}
- vComponents:输出 components: {}
##### 其他常用js代码块
- iff:简单if
- forr:for循环结构体
- fori:for循环结构体并包含i
- funn:函数
- funa:匿名函数
- rt:return true
- clog:输出:"console.log()"
- clogvar:增强的日志输出,可同时把变量的名字打印出来
- varcw:输出:"var currentWebview = this.$scope.page.$getAppWebview()"
- ifios:iOS的平台判断
- ifAndroid:Android的平台判断
预置代码块不满足需求的话,可以自定义代码块,教程参考[https://ask.dcloud.net.cn/article/35924](https://ask.dcloud.net.cn/article/35924)
### 使用HBuilderX内置浏览器调试H5@h5-debug-hx
打开 ``uni-app`` 项目的页面,点HBuilderX右上角的预览按钮,可以在内置浏览器里打开H5运行结果,也可以点右键打开控制台调试。
修改保存工程源码时,右边的浏览器内容可以自动刷新。
在HBuilderX控制台里,可以直接看到内置浏览器打印的日志。
打开内置浏览器的控制台的 `Sources` 栏,可以给 js 打断点调试。
在 `Page` 下找到 `webpack` 里的工程目录,可直接找到对应的`vue`页面进行断点调试;或按 `Ctrl+P`搜文件名,进入页面调试;也可点击控制台的 `log` 信息,进入对应的页面进行调试。
![](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/56abde90-4f34-11eb-8a36-ebb87efcf8c0.png)
![](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/5762ab70-4f34-11eb-bdc1-8bd33eb6adaa.png)
`点击工具栏的运行 -> 运行到浏览器 -> 选择 Chrome`,也可将 `uni-app`运行到 浏览器,可参考 [运行uni-app](/quickstart?id=运行uni-app)。
### 使用各家小程序开发工具调试@mp-debug
``uni-app`` 运行到微信web开发者工具等小程序开发工具里,可在这些工具的控制台查看 ``console`` 信息,网络请求等信息等。
页面样式调试和一般的`web`项目一样,通过调试的箭头选中元素即可查看相应的节点和样式,如下图:
![uni-app](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/51d2b830-4f34-11eb-a16f-5b3e54966275.png)
调试 `js` 时需要切换到 `Sources` 栏,根据sourcemap,找到 `webpack` 里正确的目录,选中想要调试的那个页面的`js`,进行调试(如果`js`代码是压缩过的,点击右下角的{}可格式化代码),如下图:
![uni-app](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/52889ab0-4f34-11eb-b680-7980c8a877b8.png)
### 关于 App 的调试debug@app-debug
常规开发里,在HBuilderX的运行菜单里运行App,手机端的错误或console.log日志信息会直接打印到控制台。
如果需要更多功能,比如审查元素、打断点debug,则需要启动调试模式。自 `HBuilderX 2.0.3+` 版本起开始支持 `App` 端的调试。
#### 打开调试窗口
在 `HBuilderX` 中,正确运行项目: `运行 --> 运行到手机或模拟器 --> 选择设备`,项目启动后,在下方的控制台选择 `debug` 图标。
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/55245430-4f34-11eb-97b7-0dc4655d6e68.png)
正确打开调试窗口后,显示如下:
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/50f7e890-4f34-11eb-b680-7980c8a877b8.png)
#### Elements
根据上一步,启动完成`debug`窗口后,可以看到`Elements`。`Elements` 主要显示当前页面的组织结构,目前`Elements`只支持`nvue`。
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/5433b2a0-4f34-11eb-8a36-ebb87efcf8c0.png)
#### console.log打日志
`console.log`是我们日常开发最常用的调试方法,`HBuilderX`中当然也不能少。
- App端提供真机运行的`console.log`日志输出,运行到真机或模拟器时,不用点`debug`按钮,操作手机,会在`HBuilderX`的控制台直接输出日志。
- 如果是比较复杂的逻辑,那就推荐使用调试工具中的`console`了。根据上一步,启动完成`debug`窗口后,执行`console.log`方法就可以看到打印的内容了。
`debug`窗口中看`console.log`的方法如下图:
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/53673ae0-4f34-11eb-a16f-5b3e54966275.jpg)
#### 调试页面
在调试窗口控制台的 `Sources` (图中指示1) 栏,可以给 `js` 打断点调试。
在 `uniapp`(图中指示2)下找到需要调试的页面,单击打开 ,在右侧可以看到我们需要调试的内容(图中指示3)。在需要调试的代码行号的位置,点击打上断点(图中指示4)。
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/58f09e70-4f34-11eb-8a36-ebb87efcf8c0.png)
之后,在设备上进行操作,进入断点位置,可以方便我们跟踪调试代码。
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/5839d190-4f34-11eb-8a36-ebb87efcf8c0.png)
#### 同步断点到调试器
在控制台众多代码中寻找要调试的代码是比较麻烦的一件事,`HBuilderX`的调试还提供一个便利的功能,可直接在编辑器中打断点,断点会自动同步到调试工具中。
操作步骤:在HBuilderX编辑器中对目标行的行号处点右键,在右键菜单中选择“同步断点到调试器”,然后调试控制台会自动打开对应的代码并在指定行处标记断点。演示如下:
![debug](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/55de5560-4f34-11eb-8a36-ebb87efcf8c0.gif)
Tip
- `vue` 和 `nvue` 页面均支持断点调试
- 目前仅支持 `nvue` 页面审查元素,`vue` 页面暂不支持,以及 `Android` 平台的 `nvue` 审查元素暂不支持查看 `style`
- App端提供真机运行的`console.log`日志输出,运行到真机或模拟器时,不用点`debug`按钮,运行手机App,会在`HBuilderX`的控制台直接输出日志。
- 如果是调试`App`的界面和常规API,推荐编译到H5端,点`HBuilderX`右上角的预览,在内置浏览器里调`Dom`,保存后立即看到结果,调试更方便。并且H5端也支持`titleNView`的各种复杂设置。唯一要注意的就是`css`兼容性,使用太新的`css`在`pc`上预览可能正常,但低端`Android`上异常,具体可查询`caniuse`等网站。
- 常用的开发模式就是`pc`上使用内置浏览器预览调dom,运行到真机上看`console.log`。如果是很复杂的问题才使用`debug`。
- vue页面也可以在微信开发者工具里调试,除了plus API,其他是一样的,微信开发者工具的查看`Dom`和网络和存储等调试工具相对而言更完善些。
注意:即使不发布微信小程序、只发布`App`,也需要安装微信开发者工具。
- uni-app的App端的webkit remote debug,只能调试视图层,不能调试逻辑层。因为uni-app的js不是运行在webview里,而是独立的jscore里。
- 部分manifest配置,如三方sdk配置,需要打包后生效的,可以打包一个自定义运行基座。打包自定义基座后运行这个自定义基座,同样可以真机运行和debug。打包正式包将无法真机运行和debug。
### 持续集成
很多公司的开发人员提交代码后,需要自动打包或持续集成。
此时需要在服务器安装uni-app的cli版本来发布。
HBuilderX版与cli版互转指南参考:[https://ask.dcloud.net.cn/article/35750](https://ask.dcloud.net.cn/article/35750)
如果是发布App,还需要使用[离线打包](https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/508),配置原生环境,来实现持续集成。
......@@ -67,7 +67,9 @@
* [未同意隐私政策模式运行](/tutorial/app-disagreemode.md)
* [Google Play上架](/tutorial/android-gp.md)
* [App Store上架](/tutorial/ios-app-store.md)
* [Android安全漏洞问题解决方案](/tutorial/app-sec-android.md)
* App安全问题
* [js/nvue文件原生混淆加密](/tutorial/app-sec-confusion.md)
* [Android安全漏洞问题解决方案](/tutorial/app-sec-android.md)
* [前端安全专题](/tutorial/web-security.md)
* 小程序专题
* [组件与WXS](/tutorial/miniprogram-subject.md)
......
......@@ -8,9 +8,10 @@
请认真的阅读以下步骤来检测自己的APP!有效的解决上架问题
+ 如果你的APP不是由HbuilderX`3.2.15+`云打包生产的请抓紧时间升级到HbuilderX`3.2.15+`版本。重新打包!
+ 如果你的APP是离线打包请升级SDK到`3.2.15+`版本重新编辑打包![下载地址](https://nativesupport.dcloud.net.cn/AppDocs/download/android)
+ 如果你的APP没有配置隐私与政策提示框。请认真阅读[Android平台隐私与政策提示框配置方法](https://ask.dcloud.net.cn/article/36937)配置你APP的隐私弹窗。
+ APP不是由HbuilderX`3.2.15+`云打包生产的请抓紧时间升级到HbuilderX`3.2.15+`版本。重新打包!
+ APP是离线打包请升级SDK到`3.2.15+`版本重新编辑打包![下载地址](https://nativesupport.dcloud.net.cn/AppDocs/download/android)
+ 不要将自定义基座提交平台审核。调试模式下不会处理合规问题。需要注意!
+ APP没有配置隐私与政策提示框。请认真阅读[Android平台隐私与政策提示框配置方法](https://ask.dcloud.net.cn/article/36937)配置你APP的隐私弹窗。
+ 配置隐私弹窗时一定要配置使用`template`模式。否则无法上架应用市场。应用内部自己实现的隐私弹窗也不行。一定要使用uni提供的隐私弹窗并使用`template`模式切记!
```
//androidPrivacy.json
......@@ -24,7 +25,7 @@
+ 填写隐私协一定要结合实际使用的模块功能。填写相关隐私条款!不能含糊不清。模块收集了什么信息都要填写完整。否则影响上架!请参考当前文档中的`隐私政策注意事项`
+ 查看是否集成uni原生插件。有些权限或是违规获取可能是uni原生插件引发的。建议使用排除法删除插件重新打包检测
+ 检查是否集成了fcm推送(包含unipush中的fcm)、google统计、google推送、google登录模块。由于这些模块都集成google的gms服务会提前获取android id导致无法在国内正常上架。打包时请在manifest.json配置中排除这些功能模块。
+ 你的APP上面排查点都符合要求。上架依然失败请向检测平台要求提供代码调用堆栈。请拿着堆栈信息去[ASK论坛](https://ask.dcloud.net.cn/explore/)发帖说明问题并@管理人员反馈
+ APP都符合以上条件要求。上架依然失败!请向检测平台要求提供代码调用堆栈。请拿着堆栈信息去[ASK论坛](https://ask.dcloud.net.cn/explore/)发帖说明问题并@管理人员反馈
### 隐私政策注意事项
......@@ -127,6 +128,24 @@
+ 检查uni-app项目在manifest.json将上诉模块去除重新打包上架
+ 没有集成这些模块可以向检测平台获取调用堆栈。拿到java调用堆栈在[ask论坛](https://ask.dcloud.net.cn/explore/)发帖咨询
#### 16、离线打包自定义DCloudApplication,初始化其他三方SDK如何处理合规问题
+ 我们推荐将三方SDK集成方式改为原生插件集成到离线打包中。通过UniAppHookProxy生命周期回调初始化SDK即可无需关心合规问题。
+ 如果开发者同学一定要在Application中初始化三方SDK。可以在Application的onCreate回调中添加初始化逻辑。但前台是需要在super.onCreate()之后调用。并使用SDK.isAgreePrivacy(Context)获取当前隐私协议状态特殊处理。
```
public class MyApplication extends DCloudApplication {
@Override
public void onCreate() {
super.onCreate();
if(SDK.isAgreePrivacy(getBaseContext())) {
//正常初始化三方SDK
} else {
//初始化三方SDK提供规避隐私合规初始化函数 如果没有则不要初始化
}
}
}
```
#### 看不懂文档不知道如何修改?
可开通付费技术服务 参考:[https://ask.dcloud.net.cn/article/13015](https://ask.dcloud.net.cn/article/13015)
......
......@@ -7,6 +7,8 @@
更多信息详见 [申请开通Paypal操作指南](https://uniapp.dcloud.io/app-payment-paypal-open)
**注意**
- 仅支持iOS11.0及以上版本
### 配置
在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“paypal支付”项并配置相关参数
......
### 开通
- [登录Stripe](https://dashboard.stripe.com/login)注册账号
* 注册账号后可获取开发测试的API密钥(公钥、私钥),注意:需[激活账户](https://dashboard.stripe.com/account/onboarding)获取正式的API密钥
### 开通
- [登录Stripe](https://dashboard.stripe.com/login)注册账号
* 注册账号后可获取开发测试的API密钥(公钥、私钥),注意:需[激活账户](https://dashboard.stripe.com/account/onboarding)获取正式的API密钥
* 设置[支付方式](https://dashboard.stripe.com/settings/payment_methods)
更多信息详见[申请开通Stripe操作指南](https://uniapp.dcloud.io/app-payment-stripe-open)
更多信息详见[申请开通Stripe操作指南](https://uniapp.dcloud.io/app-payment-stripe-open)
**注意**
- 仅支持iOS13.0及以上版本
### 配置
在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“paypal支付”项并配置相关参数
......@@ -13,10 +15,12 @@
**参数说明**
- returnURL
Android平台使用,格式为"your-app://stripe"(示例 io.dcloud.test://stripe),'your-app'为应用的bundle id或其它自定义scheme,参考:[配置一个自定义页面内跳转协议 (URL Scheme)](https://ask.dcloud.net.cn/article/64)
### 服务器生成订单
### 服务器生成订单
在 App 端调用支付前,需在业务服务器生成[PaymentIntent](https://stripe.com/docs/api/payment_intents),详情可参考Stripe官方文档:[Add an endpoint](https://stripe.com/docs/payments/accept-a-payment?platform=android&ui=payment-sheet#add-server-endpoint)
激活账户前可通过POST请求Stripe官方沙盒服务器[https://stripe.com/docs/payments/accept-a-payment](https://stripe.com/docs/payments/accept-a-payment),生成测试PaymentIntent,示例如下:
激活账户前可通过POST请求Stripe官方沙盒服务器[https://stripe.com/docs/payments/accept-a-payment](https://stripe.com/docs/payments/accept-a-payment),生成测试PaymentIntent,示例如下:
``` js
uni.request({
......@@ -30,9 +34,9 @@ uni.request({
var ephemeralKey = res.data.ephemeralKey;
}
});
```
```
### 应用内发起支付
- uni-app项目
......
......@@ -136,8 +136,42 @@ HBuilderX发布到App的Android平台最低支持Android4.4,即minSdkVersion
HBuilderX3.1.14+版本已修复此问题,在内部逻辑中使用的密钥全部做了混淆加密处理。
#### SO文件破解风险漏洞
**风险描述**
**风险描述**
SO文件为APK中包含的动态链接库文件,Android利用NDK技术将C/C++语言实现的核心代码编译为SO库文件供Java层调用。SO文件被破解可能导致应用的核心功能代码和算法泄露。攻击者利用核心功能与算法可轻易抓取到客户端的敏感数据,并对其解密,导致用户的隐私泄露或直接财产损失
**修复方案**
**修复方案**
建议使用专业安全加固平台对APK中的SO文件进行加固保护
#### Strandhogg漏洞
**风险描述**
StrandHogg之所以独特,是因为它无需进行植根即可启用复杂的攻击,它利用Android的多任务系统中的一个弱点来实施强大的攻击,使恶意应用程序可以伪装成该设备上的任何其他应用程序。此漏洞利用基于一个称为“ taskAffinity”的Android控件设置,该控件允许任何应用程序(包括恶意应用程序)自由地采用其所需的多任务处理系统中的任何身份。
**修复方案**
该漏洞已于2020.4.1的安全补丁中修复(涵盖Android 8.0 / 8.1 / 9.0+)。由于已经通过系统补丁封堵。理论上该漏洞不会对高版本系统的手机设备构成威胁。
而app客户端开发并没有彻底规避该漏洞的方案。各检测平台推荐配置`android:taskAffinity=“”`,但仅是临时方案。但该方案会导致应用运行到android11+系统设备时任务堆栈窗口变成两个的问题。
由于`android:taskAffinity=“”`配置存在bug!所以我们并不会默认这样配置。但为开发者提供的云打包配置选项。由开发者决定是否配置临时封堵该漏洞。具体如下:
+ 请使用HX3.3.10+版本。根据app类型在项目的manifest.json中配置`hasTaskAffinity`。true表示配置`android:taskAffinity=“”`,false不配置。默认为false
+ **uni-app** 请按如下配置填写到项目的manifest.json中。
```
"app-plus" : {
"distribute" : {
"android" : {
...
...
"hasTaskAffinity": true
}
}
}
```
+ **5+/web2app** 请按如下配置填写到项目的manifest.json中。
```
"plus" : {
"distribute" : {
"google" : {
...
...
"hasTaskAffinity": true
}
}
}
```
......@@ -337,4 +337,16 @@
```
\ No newline at end of file
- 在 Vue3 中,this 对象下的 `$mp` 调整为 `$scope`
- 在 Vue3 中,如果 nvue 使用了 Vuex 的相关 API,需要在 main.js 的 createApp 的返回值中 return 一下 Vuex 示例:
```js
export function createApp() {
const app = createSSRApp(App)
app.use(store)
return {
app,
Vuex // 如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex
}
}
```
\ No newline at end of file
### 使用代码块直接创建组件模板
为提升开发效率,HBuilderX将 ```uni-app``` 常用代码封装成了以 ```u``` 开头的代码块,如在 ```template``` 标签内输入 ```ulist``` 回车,会自动生成如下代码:
```html
<uni-list>
<uni-list-item title="" note=""></uni-list-item>
<uni-list-item title="" note=""></uni-list-item>
</uni-list>
```
注意需保障uni-list组件在项目的components目录下。比较简单的方式,是新建项目时,选 uni ui项目模板,在里面即可随便敲所有u开头的代码块。如果不是 uni ui项目模板,那么需要去插件市场手动把[uni ui组件](https://ext.dcloud.net.cn/plugin?id=55)下载到工程里。
代码块分为Tag代码块、JS代码块,如在 ```script``` 标签内输入 ```uShowToast``` 回车,会自动生成如下代码:
```js
uni.showToast({
title: '',
mask: false,
duration: 1500
});
```
```uni-app```已支持代码块见下方列表。
#### Tag代码块
- uButton
- uCheckbox
- uGrid:宫格,需引用uni ui
- uList:列表,需引用uni ui
- uListMedia
- uRadio
- uSwiper
- ......
几乎各种组件不管是内置组件还是uni ui的组件,均已封装为代码块,在HBuilderX的vue代码template区域中敲u,代码助手会提示所有可见列表。也可在HBuilderX菜单工具-代码块设置-vue代码块的左侧列表查阅所有。
除组件外,其他常用代码块包括:
- viewfor:生成一段带有v-for循环结构的视图代码块
- vbase:生成一段基本的vue代码结构
#### JS代码块
##### uni api代码块
- uRequest
- uGetLocation
- uShowToast
- uShowLoading
- uHideLoading
- uShowModal
- uShowActionSheet
- uNavigateTo
- uNavigateBack
- uRedirectTo
- uStartPullDownRefresh
- uStopPullDownRefresh
- uLogin
- uShare
- uPay
- ......
几乎各种常用js api,均已封装为代码块,在HBuilderX的js代码中敲u,代码助手会提示所有可见列表。也可在HBuilderX菜单工具-代码块设置-js代码块的左侧列表查阅所有。
##### vue js代码块
- vImport:导入文件
- ed:export default
- vData:输出 data(){return{}}
- vMethod:输出 methods:{}
- vComponents:输出 components: {}
##### 其他常用js代码块
- iff:简单if
- forr:for循环结构体
- fori:for循环结构体并包含i
- funn:函数
- funa:匿名函数
- rt:return true
- clog:输出:"console.log()"
- clogvar:增强的日志输出,可同时把变量的名字打印出来
- varcw:输出:"var currentWebview = this.$mp.page.$getAppWebview()"
- ifios:iOS的平台判断
- ifAndroid:Android的平台判断
预置代码块不满足需求的话,可以自定义代码块,教程参考[https://ask.dcloud.net.cn/article/35924](https://ask.dcloud.net.cn/article/35924)
### 更多技巧
- [如何调试](/tutorial/run-and-debug.html#h5-debug-hx)
\ No newline at end of file
注:本更新日志仅限uniCloud,包括uniCloud web控制台、uniCloud 云端运行环境。这些更新不跟随HBuilderX发版更新。
#### 2022-02-22
+ 修复 JQL语法 getTemp 返回结果传递给组件属性时在微信小程序端报错的Bug [详情](https://ask.dcloud.net.cn/question/138308)
#### 2022-01-14
+ 修复 3.3.7-alpha引出的JQL数据库管理无法正常使用的Bug [详情](https://ask.dcloud.net.cn/question/138139)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册