diff --git a/docs/api/plugins/payment.md b/docs/api/plugins/payment.md index 62614b3accf0cc27481586c42c1e1ae95e99cf25..dbd020da6380d6a088cb0dbb7d7ea7821e155f5c 100644 --- a/docs/api/plugins/payment.md +++ b/docs/api/plugins/payment.md @@ -304,3 +304,8 @@ uni.requestPayment({ } ``` + + +- [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) diff --git a/docs/api/plugins/provider.md b/docs/api/plugins/provider.md index 363cce58ce2c5bd363840e1447ebac92b1531868..f71e8d009a6ef4a68b16660da58aaecf3569405e 100644 --- a/docs/api/plugins/provider.md +++ b/docs/api/plugins/provider.md @@ -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|小米推送|填写配置并打包后可以获取,仅为向下兼容而保留,不再推荐使用| diff --git a/docs/app-ios-schemewhitelist.md b/docs/app-ios-schemewhitelist.md new file mode 100644 index 0000000000000000000000000000000000000000..1b3dee8de4a24b46f46ee1cb9cabee1455f0f9e8 --- /dev/null +++ b/docs/app-ios-schemewhitelist.md @@ -0,0 +1,120 @@ +从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个时,默认添加的白名单列表将失效。 + + diff --git a/docs/app-sec-confusion.md b/docs/app-sec-confusion.md index 2d9b09e39e961c864abca2dff96cf6e76669fd31..63d46f71ae632b0a8aaf1d34a8370263ddb3670a 100644 --- a/docs/app-sec-confusion.md +++ b/docs/app-sec-confusion.md @@ -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不对外公开,因此离线打包无法支持原生混淆。** diff --git a/docs/component/map.md b/docs/component/map.md index 1e7007f3aafcafed4b2719635e0a46f129a98a1c..aa17d13726350bea62ad3ad805cef99231149754 100644 --- a/docs/component/map.md +++ b/docs/component/map.md @@ -249,11 +249,11 @@ nvue map 更换箭头图标格式参考: [https://ask.dcloud.net.cn/article/3790 - 小程序和 app-vue 中,css 动画对 `` 组件无效。 - map 组件使用的经纬度是国测局坐标,调用 uni.getLocation 接口需要指定 type 为 gcj02。 - `` 组件在不同平台的底层引擎是不同的:微信小程序为腾讯地图;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 diff --git a/docs/component/video.md b/docs/component/video.md index d9319807b4eccf0e62d0ffb74b7da279e2d4be64..ccde93cfb3187a295fe04efbd0bb579f2dc6f0e0 100644 --- a/docs/component/video.md +++ b/docs/component/video.md @@ -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|是否开启播放手势,即双击切换播放/暂停|微信小程序、快手小程序| diff --git a/docs/component/web-view.md b/docs/component/web-view.md index e741ac2061d426bb1d020c7cc5150902bb0009b8..1e32d8139902c6fc18e1083e6f1b5fdcefd7a801 100644 --- a/docs/component/web-view.md +++ b/docs/component/web-view.md @@ -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}) diff --git a/docs/release-note-alpha.md b/docs/release-note-alpha.md index ac3eddc65fe572c2ce217dc951476c3807fe3491..2576650e4e6c7439ab536fa9169e80025ade2897 100755 --- a/docs/release-note-alpha.md +++ b/docs/release-note-alpha.md @@ -1,5 +1,27 @@ # 更新日志(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】 diff --git a/docs/snippet.md b/docs/snippet.md new file mode 100644 index 0000000000000000000000000000000000000000..d1bac57999d99edab1d5af124cbe26ca1a93da6a --- /dev/null +++ b/docs/snippet.md @@ -0,0 +1,191 @@ + +### 使用代码块直接创建组件模板 + +为提升开发效率,HBuilderX将 ```uni-app``` 常用代码封装成了以 ```u``` 开头的代码块,如在 ```template``` 标签内输入 ```ulist``` 回车,会自动生成如下代码: + +```html + + + + +``` +注意需保障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),配置原生环境,来实现持续集成。 diff --git a/docs/tutorial/_sidebar.md b/docs/tutorial/_sidebar.md index a67feb7db594c5ce38b99ea17f9d9f72f792955e..624222235831ff522b47b9888270006067cbbb28 100644 --- a/docs/tutorial/_sidebar.md +++ b/docs/tutorial/_sidebar.md @@ -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) diff --git a/docs/tutorial/android-store.md b/docs/tutorial/android-store.md index 034537b3ed08831f9a191f1c2b843acf5dc935c6..18aef8ba0d8c329b236f4483aedc1bb6ab33bf2f 100644 --- a/docs/tutorial/android-store.md +++ b/docs/tutorial/android-store.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) diff --git a/docs/tutorial/app-payment-paypal.md b/docs/tutorial/app-payment-paypal.md index c2c073de95853ff4719d4bbeb82540743dfd75b5..ad5b1e371a5ddcee56c7e49134ae98c372dfa2ce 100644 --- a/docs/tutorial/app-payment-paypal.md +++ b/docs/tutorial/app-payment-paypal.md @@ -7,6 +7,8 @@ 更多信息详见 [申请开通Paypal操作指南](https://uniapp.dcloud.io/app-payment-paypal-open) +**注意** +- 仅支持iOS11.0及以上版本 ### 配置 在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“paypal支付”项并配置相关参数 diff --git a/docs/tutorial/app-payment-stripe.md b/docs/tutorial/app-payment-stripe.md index 81d6293b290b136a89bdaa7331fd932f02e3770c..6dfae1b29f914dea535869ae69a8cc610aa11155 100644 --- a/docs/tutorial/app-payment-stripe.md +++ b/docs/tutorial/app-payment-stripe.md @@ -1,10 +1,12 @@ -### 开通 -- [登录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项目 diff --git a/docs/tutorial/app-sec-android.md b/docs/tutorial/app-sec-android.md index 4e8945ee5c9aeb7cd5a940a6e7bd99b7188bf532..5efa480b1f83d373d38b6684175b22c3c8be51a1 100644 --- a/docs/tutorial/app-sec-android.md +++ b/docs/tutorial/app-sec-android.md @@ -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 + } + } +} +``` diff --git a/docs/tutorial/migration-to-vue3.md b/docs/tutorial/migration-to-vue3.md index 56a2fcdbefc7a36fc5758a26da81e5451c71eb37..51d86d23d0d6d62934a13fd1a928e0a89065029e 100644 --- a/docs/tutorial/migration-to-vue3.md +++ b/docs/tutorial/migration-to-vue3.md @@ -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 diff --git a/docs/tutorial/snippet.md b/docs/tutorial/snippet.md deleted file mode 100644 index baa2139cc5e2e0b32ec416cea3f511630a11d105..0000000000000000000000000000000000000000 --- a/docs/tutorial/snippet.md +++ /dev/null @@ -1,90 +0,0 @@ -### 使用代码块直接创建组件模板 - -为提升开发效率,HBuilderX将 ```uni-app``` 常用代码封装成了以 ```u``` 开头的代码块,如在 ```template``` 标签内输入 ```ulist``` 回车,会自动生成如下代码: - -```html - - - - -``` -注意需保障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 diff --git a/docs/uniCloud/release.md b/docs/uniCloud/release.md index 07c2dc9a82fc51dccf5bc8160cb039a6a39480f4..707e4341dd4b03e364926ce9c2ec0b1ff94f508f 100644 --- a/docs/uniCloud/release.md +++ b/docs/uniCloud/release.md @@ -1,5 +1,8 @@ 注:本更新日志仅限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)