提交 c009aa03 编写于 作者: JiaRongPing's avatar JiaRongPing

Merge branch 'master' of https://gitee.com/dcloud/unidocs-zh

node_modules
docs/.vuepress/dist
dist
.DS_Store
dist
\ No newline at end of file
......@@ -125,9 +125,19 @@ export default {
this.navbarHeight = this.navbar.clientHeight
this.subNavBarHeight = this.subNavBar.clientHeight
this.mainNavBarHeight = this.mainNavBar.clientHeight
this.scrollBehavior()
},
scrollBehavior () {
this.removeWindowScroll()
this.onWindowScroll()
if(this.showSubNavBar) {
this.addWindowScroll()
} else {
this.fixedNavbar = true
}
},
addWindowScroll () {
if (os.pc) {
this.onWindowScroll()
window.addEventListener('scroll', this.onWindowScroll, false)
}
},
......@@ -137,10 +147,12 @@ export default {
this.sideBar && this.sideBar.removeAttribute('style')
this.vuepressToc && this.vuepressToc.removeAttribute('style')
this.navbar && this.navbar.removeAttribute('style')
this.pageContainer && (this.pageContainer.style.marginTop = 'auto')
if (this.pageContainer) {
this.pageContainer.style.marginTop = this.showSubNavBar ? 'auto' : `${this.navbarHeight}px`
}
},
onWindowScroll () {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
const scrollTop = !this.showSubNavBar ? 0 : document.documentElement.scrollTop || document.body.scrollTop;
if (!this.fixedNavbar) {
let sideTop = this.navbarHeight - scrollTop
......@@ -190,10 +202,12 @@ export default {
watch: {
fixedNavbar () {
this.fixedSideBarHeight()
this.scrollBehavior()
},
'navConfig.userNavIndex' () {
this.$nextTick(()=>{
this.fixedSideBarHeight()
this.scrollBehavior()
})
}
}
......
......@@ -40,7 +40,7 @@
<a
target="_blank"
style="text-decoration: underline"
href="https://qm.qq.com/cgi-bin/qm/qr?k=MLk5rRqBovn4JRdAR9EglVRKGhiV8M8m&jump_from=webapi"
href="https://qm.qq.com/cgi-bin/qm/qr?k=pBv6FRZq7pAeF-ri-FfOPfwxrZzBKDK-&jump_from=webapi"
>
点此加入
</a>
......
......@@ -96,11 +96,11 @@ export const navbar = [
type: 'link',
link: 'https://mp.kuaishou.com/docs/develop/frame/config/conf_appjson.html'
},
{
text: '京东小程序',
type: 'link',
link: 'https://mp-docs.jd.com/framework/'
},
{
text: '京东小程序',
type: 'link',
link: 'https://mp-docs.jd.com/framework/'
},
{
text: '华为快应用',
type: 'link',
......@@ -118,12 +118,12 @@ export const navbar = [
},
]
},
/* {
{
link: "https://github.com/dcloudio/uni-app",
target: "_blank",
text: "GitHub",
type: "link"
} */
}
]
},
{
......
......@@ -125,14 +125,14 @@ export default {
"prefix": "群19"
},
{
"number": "165796402",
"number": "717019120",
"state": 1,
"prefix": "群20"
"prefix": "群21"
},
{
"number": "717019120",
"number": "687186952",
"state": 1,
"prefix": "群21"
"prefix": "群22"
},
{
"number": "599958679",
......@@ -200,9 +200,9 @@ export default {
"prefix": "群35"
},
{
"number": "687186952",
"number": "165796402",
"state": 0,
"prefix": "群22"
"prefix": "群20"
}
]
}
......@@ -4,7 +4,9 @@
* [定时器](api/timer.md)
* [uni.base64ToArrayBuffer](api/base64ToArrayBuffer.md)
* [uni.arrayBufferToBase64](api/arrayBufferToBase64.md)
* [生命周期](api/lifecycle.md)
* 生命周期
* [uni.getLaunchOptionsSync](api/plugins/getLaunchOptionsSync.md)
* [uni.getEnterOptionsSync](api/plugins/getEnterOptionsSync.md)
* [应用级事件](api/application.md)
* [拦截器](api/interceptor.md)
* [全局API](api/global.md)
......
......@@ -560,6 +560,10 @@ App平台 3.1.15+ 支持穿山甲/优量汇/快手
相对来讲服务器回调将更加安全,可以依赖广告平台的反作弊机制来避免用户模拟观看广告完成的事件。
![激励视频回调](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/d0e94790-68e4-4007-8e34-bdb8cb6b4d34.jpg)
如何使用
1. 申请激励视频广告位时开启服务器回调
2. 创建激励视频广告时传入回调参数
......
......@@ -441,7 +441,7 @@ poiList|Array.&lt;poiObject&gt;|POI信息数组
- H5 端获取定位信息,需要部署在 **https** 服务上,本地预览(localhost)仍然可以使用 http 协议。
- 无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
- App 端使用地图组件需要向高德或百度等三方服务商申请SDK资质,获取AppKey,打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南,详见:[https://ask.dcloud.net.cn/article/29](https://ask.dcloud.net.cn/article/29)
- H5 端使用地图和定位相关,需要在 (manifest.json)[/collocation/manifest?id=h5sdkconfig] 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
- H5 端使用地图和定位相关,需要在 [manifest.json](https://uniapp.dcloud.io/collocation/manifest.html#h5sdkconfig) 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
- ``<map>`` 组件默认为国测局坐标,调用 ``uni.getLocation`` 返回结果传递给 ``<map>`` 组件时,需指定 type 为 gcj02。
### 三方定位和地图服务收费说明
......
### uni.getEnterOptionsSync()
获取本次启动时的参数。返回值与App.onLaunch的回调参数一致
|App|H5|微信小程序|支付宝小程序|字节跳动小程序|快手小程序|QQ小程序|百度小程序|京东小程序|钉钉小程序|飞书小程序|
|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|
|√ `(3.4.9+)`|x|√|√|√|√|x|x|x|x|x|
**返回参数说明**
|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|path|String|启动的路径(代码包路径)|其他平台均支持,`字节小程序(1.12.0)`|
|scene|Number|启动时的场景值,具体值含义请查看各平台文档说明|其他平台均支持,`字节小程序(1.12.0)`|
|query|Object|启动时的 query 参数|其他平台均支持,`字节小程序(1.12.0)`|
|referrerInfo|Object|来源信息。如果没有则返回 `{}`|其他平台均支持,`字节小程序(1.15.0)`|
|forwardMaterials|Array.\<Object\>|打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数|`微信小程序`|
|chatType|number|打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数|`仅微信小程序`|
|apiCategory|string|API 类别|`仅微信小程序(2.20.0)`|
|showFrom|number|唤起小程序的方式,目前取值固定为 10,表示通过 schema 唤起|`仅字节小程序(1.90.0)`|
|mode|'default' | 'halfPage'|启动小程序的模式|`仅快手小程序`|
**Object referrerInfo**
|属性|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|appId|String|来源小程序 appId |其他平台均支持,`字节小程序(1.15.0)`|
|extraData|Object|来源小程序传过来的数据。|其他平台均支持,`字节小程序(1.15.0)`|
\ No newline at end of file
### uni.getLaunchOptionsSync()
获取本次启动时的参数。返回值与App.onLaunch的回调参数一致
|App|H5|微信小程序|支付宝小程序|字节跳动小程序|QQ小程序|快手小程序|钉钉小程序|飞书小程序|百度小程序|京东小程序|
|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|
|√ `(3.4.9+)`|x|√|√|√|√|√|√|√|x|x|
**返回参数说明**
|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|path|String|启动的路径(代码包路径)|其他平台均支持,`字节小程序(1.12.0)`|
|scene|Number|启动时的场景值,具体值含义请查看各平台文档说明。钉钉小程序在 IDE 恒为0000,真机不支持。|其他平台均支持,`字节小程序(1.12.0)`|
|query|Object|启动时的 query 参数|其他平台均支持,`字节小程序(1.12.0)`|
|referrerInfo|Object|来源信息。如果没有则返回 `{}`|其他平台均支持,`字节小程序(1.15.0)``飞书小程序不支持``钉钉小程序不支持`|
|forwardMaterials|Array.\<Object\>|打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数|`微信小程序``QQ小程序`|
|entryDataHash|string|群入口信息,通过群应用商店打开、群分享卡片打开的小程序可获得|`仅QQ小程序`|
|chatType|number|打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数|`仅微信小程序`|
|apiCategory|string|API 类别|`仅微信小程序(2.20.0)`|
|showFrom|number|唤起小程序的方式,目前取值固定为 10,表示通过 schema 唤起|`仅字节小程序(1.90.0)`|
|mode|'default' | 'halfPage'|启动小程序的模式|`仅快手小程序`|
|subScene|string|子场景值(定义待补充)|`仅飞书小程序`|
**Object referrerInfo**
|属性|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|appId|String|来源小程序 appId |其他平台均支持,`字节小程序(1.15.0)`|
|extraData|Object|来源小程序传过来的数据|其他平台均支持,`字节小程序(1.15.0)`|
\ No newline at end of file
......@@ -29,7 +29,6 @@
|version|引擎版本号|H5不支持|
|storage|设备磁盘容量|支付宝小程序|
|currentBattery|当前电量百分比|支付宝小程序|
|appName|宿主APP名称|字节跳动小程序、飞书小程序|
|AppPlatform|App平台|QQ小程序|
|host|宿主平台|百度小程序|
|app|当前运行的客户端|支付宝小程序|
......@@ -55,6 +54,28 @@
|safeArea|在竖屏正方向下的安全区域|App、H5、微信小程序|
|safeAreaInsets|在竖屏正方向下的安全区域插入位置(2.5.3+)|App、H5、微信小程序|
|deviceId|设备 id|非 App 端由 uni-app 框架生成并存储,清空 Storage 会导致改变|
|deviceBrand|设备品牌。如:`apple``huawei`|`HBuilderX (3.4.9+)`|
|deviceModel|设备型号 |`HBuilderX (3.4.9+)`|
|deviceType|设备类型。`phone``pad``pc` |`HBuilderX (3.4.9+)`|
|uniPlatform|uni-app 运行平台。如:`app``mp-weixin``web` |`HBuilderX (3.4.9+)`|
|uniCompileVersion| uni 编译器版本号 |`HBuilderX (3.4.9+)`|
|uniRuntimeVersion| uni 运行时版本 |`HBuilderX (3.4.9+)`|
|appId |`manifest.json` 中应用appid。 |`HBuilderX (3.4.9+)`|
|appName|`manifest.json` 中应用名称。和`字节跳动小程序、飞书小程序`字段冲突,原字端与`hostName`一致|`HBuilderX (3.4.9+)`|
|appVersion |`manifest.json` 中应用版本名称。 |`HBuilderX (3.4.9+)`|
|appVersionCode |`manifest.json` 中应用版本名号。 |`HBuilderX (3.4.9+)`|
|ua| 用户标识。小程序端为空 |`HBuilderX (3.4.9+)`|
|browserName | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |`HBuilderX (3.4.9+)`|
|browseVersion | 浏览器版本、webview 版本。小程序端为空 |`HBuilderX (3.4.9+)`|
|osName |ios、android、windows、mac、linux |`HBuilderX (3.4.9+)`|
|osVersion |操作系统版本。如 ios 版本,andriod 版本 |`HBuilderX (3.4.9+)`|
|osLanguage |操作系统语言,小程序端与 `version` 相同,H5 与浏览器语言一致 |`HBuilderX (3.4.9+)`|
|osTheme |操作系统主题 light、dark。小程序端为小程序主题,H5 端为空 |`HBuilderX (3.4.9+)`|
|hostName |App、小程序宿主名称,如:`WeChat``FeiShu`。H5 端为浏览器名称|`HBuilderX (3.4.9+)`|
|hostVersion |App、小程序宿主版本。如:微信版本号。H5 端为浏览器版本 |`HBuilderX (3.4.9+)`|
|hostLanguage |浏览器语言、小程序宿主语言、app 语言 |`HBuilderX (3.4.9+)`|
|hostTheme |App 主题 `light``dark`。H5 端为空,小程序端为系统当前主题 |`HBuilderX (3.4.9+)`|
|hostPackageName |小程序宿主包名。仅 App 支持,其他平台为空 |`HBuilderX (3.4.9+)`|
**Tips**
- 屏幕高度 = 原生NavigationBar高度(含状态栏高度)+ 可使用窗口高度 + 原生TabBar高度
......@@ -62,6 +83,9 @@
- H5端,windowTop等于NavigationBar高度,windowBottom等于TabBar高度
- App端,windowTop等于透明状态NavigationBar高度,windowBottom等于透明状态TabBar高度
- 高度相关信息,要放在 onReady 里获取
- `device 概念`:运行应用的设备
- `os 概念`:运行应用的操作系统,如 iOS 系统、Andriod 系统
- `host 概念`:运行应用的主程序,如 微信应用、浏览器、使用 uni 小程序 SDK 的 uni-app 应用
**safeArea 的结构**
......@@ -147,6 +171,28 @@ uni.getSystemInfo({
|safeArea|在竖屏正方向下的安全区域|App、H5、微信小程序|
|safeAreaInsets|在竖屏正方向下的安全区域插入位置(2.5.3+)|App、H5、微信小程序|
|deviceId|设备 id|非 App 端由 uni-app 框架生成并存储,清空 Storage 会导致改变|
|deviceBrand|设备品牌。如:`apple``huawei`|`HBuilderX (3.4.9+)`|
|deviceModel|设备型号 |`HBuilderX (3.4.9+)`|
|deviceType|设备类型。`phone``pad``pc` |`HBuilderX (3.4.9+)`|
|uniPlatform|uni-app 运行平台。如:`app``mp-weixin``web` |`HBuilderX (3.4.9+)`|
|uniCompileVersion| uni 编译器版本号 |`HBuilderX (3.4.9+)`|
|uniRuntimeVersion| uni 运行时版本 |`HBuilderX (3.4.9+)`|
|appId |`manifest.json` 中应用appid。 |`HBuilderX (3.4.9+)`|
|appName|`manifest.json` 中应用名称。和`字节跳动小程序、飞书小程序`字段冲突,原字端与`hostName`一致|`HBuilderX (3.4.9+)`|
|appVersion |`manifest.json` 中应用版本名称。 |`HBuilderX (3.4.9+)`|
|appVersionCode |`manifest.json` 中应用版本名号。 |`HBuilderX (3.4.9+)`|
|ua| 用户标识。小程序端为空 |`HBuilderX (3.4.9+)`|
|browserName | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |`HBuilderX (3.4.9+)`|
|browseVersion | 浏览器版本、webview 版本。小程序端为空 |`HBuilderX (3.4.9+)`|
|osName |ios、android、windows、mac、linux |`HBuilderX (3.4.9+)`|
|osVersion |操作系统版本。如 ios 版本,andriod 版本 |`HBuilderX (3.4.9+)`|
|osLanguage |操作系统语言,小程序端与 `version` 相同,H5 与浏览器语言一致 |`HBuilderX (3.4.9+)`|
|osTheme |操作系统主题 light、dark。小程序端为小程序主题,H5 端为空 |`HBuilderX (3.4.9+)`|
|hostName |App、小程序宿主名称,如:`WeChat``FeiShu`。H5 端为浏览器名称|`HBuilderX (3.4.9+)`|
|hostVersion |App、小程序宿主版本。如:微信版本号。H5 端为浏览器版本 |`HBuilderX (3.4.9+)`|
|hostLanguage |浏览器语言、小程序宿主语言、app 语言 |`HBuilderX (3.4.9+)`|
|hostTheme |App 主题 `light``dark`。H5 端为空,小程序端为系统当前主题 |`HBuilderX (3.4.9+)`|
|hostPackageName |小程序宿主包名。仅 App 支持,其他平台为空 |`HBuilderX (3.4.9+)`|
**Tips**
- 使用注意同上getSystemInfo
......
......@@ -51,6 +51,7 @@
* [ad-draw](component/ad-draw.md)
* [ad-content-page](component/ad-content-page.md)
* [Grid 广告](component/ad-grid.md)
* [广告错误码](component/ad-error-code.md)
* [页面属性配置节点](component/page-meta.md)
* [page-meta](component/page-meta.md)
* [navigation-bar](component/navigation-bar.md)
......
......@@ -80,10 +80,10 @@ export default {
},
methods: {
onadload(e) {
console.log("onload");
console.log("onadload",e);
},
onaderror(e) {
console.log("onerror");
console.log("onaderror",e);
}
}
}
......
......@@ -136,7 +136,7 @@
)
},
onload(e) {
console.log("onload");
console.log("onload",e);
},
onerror(e) {
console.log("onerror: " + e.detail.errCode + " message:: " + e.detail.errMsg);
......
## 广告错误码
### app平台错误码
code|message|
:-|:-|
-5001|广告位标识adpid为空,请传入有效的adpid
-5002|无效的广告位标识adpid,请使用正确的adpid
-5003|未开通广告,请在广告平台申请并确保已审核通过
-5004|无广告模块,打包时请配置要使用的广告模块
-5005|广告加载失败,请过段时间重新加载,否则可能触发系统策略导致流量收益下降
-5006|广告未加载完成无法播放,请加载完成后再调show播放
-5007|无法获取广告配置数据,请尝试重试
-5008|广告已过期,请重新加载数据
-5100|其他错误,聚合广告商内部错误
**广告商详细错误码**
- App端聚合的穿山甲(iOS):[错误码详情](https://ad.oceanengine.com/union/media/union/download/detail?id=16&docId=5de8d574b1afac00129330d5&osType=ios)
- App端聚合的穿山甲(Android):[错误码详情](https://ad.oceanengine.com/union/media/union/download/detail?id=4&docId=5de8d9b925b16b00113af0ed&osType=android)
- App端聚合的广点通(iOS):[错误码详情](https://developers.adnet.qq.com/doc/ios/union/union_debug#%E9%94%99%E8%AF%AF%E7%A0%81)
- App端聚合的广点通(Android):[错误码详情](https://developers.adnet.qq.com/doc/android/union/union_debug#sdk%20%E9%94%99%E8%AF%AF%E7%A0%81)
- App端聚合的Sigmob(iOS):[错误码详情](http://docs.sigmob.cn/#/sdk/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/ios/)
- App端聚合的Sigmob(Android):[错误码详情](http://docs.sigmob.cn/#/sdk/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/android/)
- App端聚合的快手错误码
|code|message|
|:-:|:-:|
|40001|没有网络|
|40002|数据解析失败|
|40003|广告数据为空|
|40004|缓存视频资源失|
|100001|参数有误|
|100002|服务器错误|
|100003|不允许的操作|
|100004|服务不可用|
|310001|appId未注册|
|310002|appId无效|
|310003|appId已封禁|
|310004|packageName与注册的packageName不一致|
|310005|操作系统与注册的不一致|
|320002|appId对应账号无效|
|320003|appId对应账号已封禁|
|330001|posId未注册|
|330002|posId无效|
|330003|posId已封禁|
|330004|posid与注册的appId信息不一致|
......@@ -71,7 +71,7 @@
```html
<template>
<view class="content">
<ad-fullscreen-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @load="onload" @close="onclose" @close="onerror">
<ad-fullscreen-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @load="onadload" @close="onadclose" @error="onaderror">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-fullscreen-video>
......@@ -85,12 +85,13 @@ export default {
}
},
methods: {
onload(e) {
onadload(e) {
console.log('广告数据加载成功');
},
onclose(e) {
onadclose(e) {
console.log("onadclose",e);
},
onerror(e) {
onaderror(e) {
// 广告加载失败
console.log("onerror: ", e.detail);
}
......@@ -98,3 +99,7 @@ export default {
}
</script>
```
**错误码**
[错误码相关问题排查](https://uniapp.dcloud.net.cn/component/ad-error-code.html)
......@@ -67,10 +67,13 @@ Grid 广告在创建后会自动拉取广告。开发者可以通过 ad 组件
},
methods: {
adLoad() {
console.log("adLoad",e);
},
adError(e) {
console.log("adError",e);
},
adClose(e) {
console.log("adClose",e);
}
}
}
......
......@@ -72,7 +72,7 @@ HBuilder 基座的测试广告位 `adpid` 为 `1111111113`
```html
<template>
<view class="content">
<ad-interstitial adpid="1111111113" :loadnext="true" v-slot:default="{loading, error}" @load="onload" @close="onclose" @close="onerror">
<ad-interstitial adpid="1111111113" :loadnext="true" v-slot:default="{loading, error}" @load="onadload" @close="onadclose" @error="onaderror">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-interstitial>
......@@ -86,16 +86,21 @@ export default {
}
},
methods: {
onload(e) {
onadload(e) {
console.log('广告数据加载成功');
},
onclose(e) {
onadclose(e) {
console.log("onadclose",e);
},
onerror(e) {
onaderror(e) {
// 广告加载失败
console.log("onerror: ", e.detail);
console.log("onaderror: ", e.detail);
}
}
}
</script>
```
**错误码**
[错误码相关问题排查](https://uniapp.dcloud.net.cn/component/ad-error-code.html)
......@@ -92,7 +92,7 @@
```html
<template>
<view class="content">
<ad-rewarded-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @load="onload" @close="onclose" @close="onerror">
<ad-rewarded-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @load="onadload" @close="onadclose" @error="onaderror">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-rewarded-video>
......@@ -106,23 +106,23 @@ export default {
}
},
methods: {
onload(e) {
onadload(e) {
console.log('广告数据加载成功');
},
onclose(e) {
onadclose(e) {
const detail = e.detail
// 用户点击了【关闭广告】按钮
if (detail && detail.isEnded) {
// 正常播放结束
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
} else {
// 播放中途退出
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
}
},
onerror(e) {
onaderror(e) {
// 广告加载失败
console.log("onerror: ", e.detail);
console.log("onaderror: ", e.detail);
}
}
}
......@@ -134,7 +134,7 @@ export default {
```html
<template>
<view class="content">
<ad-rewarded-video :adpid="adpids" :loadnext="true" v-slot:default="{loading, error}">
<ad-rewarded-video :adpid="adpids" :loadnext="true" v-slot:default="{loading, error}" @load="onadload" @close="onadclose" @error="onaderror">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-rewarded-video>
......@@ -149,29 +149,78 @@ export default {
}
},
methods: {
onload(e) {
onadload(e) {
console.log('广告数据加载成功');
},
onclose(e) {
onadclose(e) {
const detail = e.detail
// 用户点击了【关闭广告】按钮
if (detail && detail.isEnded) {
// 正常播放结束
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
} else {
// 播放中途退出
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
}
},
onerror(e) {
onaderror(e) {
// 广告加载失败
console.log("onerror: ", e.detail);
console.log("onaderror: ", e.detail);
}
}
}
</script>
```
#### 获取广告商名称
#### 语法
`getProvider()`
#### 说明
返回值 为 string 类型
|值|描述|
|:-:|:-:|
|csj|穿山甲|
|gdt|腾讯优量汇(前称广点通)|
|ks|快手|
|sigmob|Sigmob|
示例代码
```html
<template>
<view class="content">
<ad-rewarded-video ref="adRewardedVideo" adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @load="onload">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-rewarded-video>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
onload(e) {
console.log('广告数据加载成功');
let providerName = this.$refs.adRewardedVideo.getProvider();
console.log('广告商名称::', providerName);
}
}
}
</script>
```
### 显示/隐藏
激励视频广告组件默认是隐藏的,在用户主动触发广告后进行显示。
......@@ -207,7 +256,7 @@ export default {
```html
<template>
<view class="content">
<ad-rewarded-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @close="onclose">
<ad-rewarded-video adpid="1507000611" :loadnext="true" v-slot:default="{loading, error}" @close="onadclose">
<button :disabled="loading" :loading="loading">显示广告</button>
<view v-if="error">{{error}}</view>
</ad-rewarded-video>
......@@ -217,16 +266,16 @@ export default {
<script>
export default {
methods: {
onclose(e) {
onadclose(e) {
const detail = e.detail
// 用户点击了【关闭广告】按钮
if (detail && detail.isEnded) {
// 正常播放结束
// 这里应该联网给予用户激励。且这段代码应该做安全保护,详见下文中的“安全注意”
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
} else {
// 播放中途退出
console.log("onClose " + detail.isEnded);
console.log("onadclose " + detail.isEnded);
}
}
}
......@@ -243,6 +292,11 @@ App平台 3.1.15+ 支持穿山甲/优量汇/快手
相对来讲服务器回调将更加安全,可以依赖广告平台的反作弊机制来避免用户模拟观看广告完成的事件。
![激励视频回调](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/d0e94790-68e4-4007-8e34-bdb8cb6b4d34.jpg)
如何使用
1. 申请激励视频广告位时开启服务器回调
2. 创建激励视频广告时传入回调参数
......@@ -469,52 +523,6 @@ exports.main = async (event, context) => {
4. 避免使用短信验证码来识别身份,推荐使用可信度更高的 [手机号一键登录](/univerify)[微信登录](/api/plugins/login?id=login)
5. 必要时可使用[生物认证(指纹和faceid)](/api/system/authentication)[活体检测的sdk](https://ext.dcloud.net.cn/search?q=%E6%B4%BB%E4%BD%93%E6%A3%80%E6%B5%8B&orderBy=Relevance&cat1=5&cat2=51)
#### 获取广告商名称
> HBuilderX 2.6.8+
#### 语法
`getProvider()`
#### 说明
返回值 为 string 类型
|值|描述|
|:-:|:-:|
|csj|穿山甲|
|gdt|腾讯优量汇(前称广点通)|
|ks|快手|
|sigmob|Sigmob|
```js
```
### app平台错误码
code|message|
:-|:-|
-5001|广告位标识adpid为空,请传入有效的adpid
-5002|无效的广告位标识adpid,请使用正确的adpid
-5003|未开通广告,请在广告平台申请并确保已审核通过
-5004|无广告模块,打包时请配置要使用的广告模块
-5005|广告加载失败,请过段时间重新加载,否则可能触发系统策略导致流量收益下降
-5006|广告未加载完成无法播放,请加载完成后再调show播放
-5007|无法获取广告配置数据,请尝试重试
-5008|广告已过期,请重新加载数据
-5100|其他错误,聚合广告商内部错误
**@error 详细错误码**
- App端聚合的穿山甲(iOS):[错误码](https://ad.oceanengine.com/union/media/union/download/detail?id=16&docId=5de8d574b1afac00129330d5&osType=ios)
- App端聚合的穿山甲(Android):[错误码](https://ad.oceanengine.com/union/media/union/download/detail?id=4&docId=5de8d9b925b16b00113af0ed&osType=android)
- App端聚合的广点通(iOS):[错误码](https://developers.adnet.qq.com/doc/ios/union/union_debug#%E9%94%99%E8%AF%AF%E7%A0%81)
- App端聚合的广点通(Android):[错误码](https://developers.adnet.qq.com/doc/android/union/union_debug#sdk%20%E9%94%99%E8%AF%AF%E7%A0%81)
### manifest 配置@manifest
......@@ -570,3 +578,7 @@ code|message|
### 案例参考
- 项目源码《养猫合成游戏》,拿走就能用,[https://ext.dcloud.net.cn/plugin?id=4095](https://ext.dcloud.net.cn/plugin?id=4095)
- 项目源码《有奖猜歌》,拿走就能用,[https://ext.dcloud.net.cn/plugin?id=4826](https://ext.dcloud.net.cn/plugin?id=4826)
**错误码**
[错误码相关问题排查](https://uniapp.dcloud.net.cn/component/ad-error-code.html)
......@@ -13,15 +13,14 @@ Banner或信息流广告展现场景非常灵活,常见的展现场景为:
- App端的广告源由腾讯优量汇、头条穿山甲、快手广告联盟等主流广告渠道以及部分DCloud直投广告组成,在DCloud的uni-AD后台注册:[https://uniad.dcloud.net.cn/](https://uniad.dcloud.net.cn/)
- H5端的广告由DCloud直接提供
- 微信小程序端的广告由DCloud直接提供
- H5端、微信小程序端的广告由DCloud直接提供
- 其他小程序端由小程序平台提供
**平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快应用|360小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√(2.5.2+)|3.3.8+|√|x|√|√|√|x|x|√|x|
|√(2.5.2+)|3.4.8+|√|x|√|√|√|x|x|√|x|
**开通配置广告**
......@@ -40,10 +39,10 @@ Banner或信息流广告展现场景非常灵活,常见的展现场景为:
|属性名|类型|默认值|说明|平台差异|
|:-|:-|:-|:-|:-|
|data|Object|可选|广告数据,通过 plus.ad.getAds (参考示例代码),设置后adpid将无效|App|
|adpid|String||uni-AD App广告位id,在[uni-AD官网](https://uniad.dcloud.net.cn/)申请广告位|App|
|unit-id|String||广告单元id,可在小程序管理后台的流量主模块新建|微信小程序、字节跳动小程序(最低版本1.19.0+)、QQ小程序、快手小程序|
|ad-intervals|number||广告自动刷新的间隔时间,单位为秒,参数值必须大于等于30(该参数不传入时 Banner 广告不会自动刷新)|微信小程序(基础库2.3.1+)|
|data|Object|可选|广告数据,通过 plus.ad.getAds (参考示例代码),优先级高于adpid|App|
|appid|String||小程序应用 ID|百度小程序|
|apid|String||小程序广告位 ID|百度小程序|
|ad-left|Number||type为feeds时广告左边距(px),必须大于0|QQ小程序|
......@@ -86,13 +85,8 @@ App和微信小程序的ad组件没有type属性,可以用于banner,也可
- 广点通概率出现重复广告,可根据需求请求广告数据,推荐单次大于1条(plus.ad.getAds) 来降低重复率
- HBuilderX2.8+版本Android平台更新穿山甲(今日头条)广告SDK后不再支持x86类型CPU,无法运行到x86类型cpu的模拟器。
- `<ad>` 组件测试广告位是上图下文,uniAD后台申请的广告位默认左图右文
- HBuilderX标准基座真机运行测试信息流广告位标识(adpid)为:1111111111
**@error 错误码**
- App端聚合的穿山甲(iOS):[错误码](https://ad.oceanengine.com/union/media/union/download/detail?id=16&docId=5de8d574b1afac00129330d5&osType=ios)
- App端聚合的穿山甲(Android):[错误码](https://ad.oceanengine.com/union/media/union/download/detail?id=4&docId=5de8d9b925b16b00113af0ed&osType=android)
- App端聚合的广点通(iOS):[错误码](https://developers.adnet.qq.com/doc/ios/union/union_debug#%E9%94%99%E8%AF%AF%E7%A0%81)
- App端聚合的广点通(Android):[错误码](https://developers.adnet.qq.com/doc/android/union/union_debug#sdk%20%E9%94%99%E8%AF%AF%E7%A0%81)
- HBuilderX标准基座真机运行测试信息流广告位标识(adpid)为:1111111111,微信小程序和H5平台暂不提供测试广告位
- 3.4.8+ 微信小程序平台,如果组件同时设置了adpid和unit-id,组件被编译为 uniad, uniad同时支持DCloud广告和微信原生广告,如果不需要此功能移除adpid属性或使用条件编译
**示例:**
......@@ -100,8 +94,6 @@ App和微信小程序的ad组件没有type属性,可以用于banner,也可
```html
<template>
<view class="content">
<!-- App平台 -->
<!-- adpid="1111111111" 此广告位标识仅在HBuilderX标准基座中有效,仅用于测试 -->
<!-- 广告后台申请的广告位(adpid)需要自定义基座/云打包/本地打包后生效 -->
<view class="ad-view">
......@@ -205,6 +197,7 @@ export default {
使用 ad/ad-draw 模拟插屏广告效果@Interstitial
```html
<template>
<view>
......@@ -275,7 +268,14 @@ export default {
**激励视频广告**
文档地址:[https://uniapp.dcloud.io/api/a-d/rewarded-video](https://uniapp.dcloud.io/api/a-d/rewarded-video)
文档地址:[https://uniapp.dcloud.io/component/ad-rewarded-video](https://uniapp.dcloud.io/component/ad-rewarded-video)
**全屏视频广告**
文档地址:[https://uniapp.dcloud.io/component/ad-fullscreen-video](https://uniapp.dcloud.io/component/ad-fullscreen-video)
**插屏广告**
文档地址:[https://uniapp.dcloud.io/component/ad-interstitial](https://uniapp.dcloud.io/component/ad-interstitial)
**注意**
- iOS平台配置应用使用广告标识(IDFA)详见:[https://ask.dcloud.net.cn/article/36107](https://ask.dcloud.net.cn/article/36107)
......@@ -283,3 +283,8 @@ export default {
- App端除了ad组件,还支持开屏、激励视频等多种广告形式。详见[uni-AD官网](https://uniad.dcloud.net.cn/)
- App端uni-AD聚合了腾讯广点通、头条穿山甲、360广告联盟等服务,打包时必须勾选相应的sdk,详见:[https://ask.dcloud.net.cn/article/36718](https://ask.dcloud.net.cn/article/36718)
![](https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/f21eb570-4f32-11eb-b680-7980c8a877b8.jpg)
**错误码**
[错误码相关问题排查](https://uniapp.dcloud.net.cn/component/ad-error-code.html)
#### 3.4.8.20220428-alpha
* 【uni-app】
+ 新增 vue3 项目内置支持 pinia [详情](https://uniapp.dcloud.net.cn/tutorial/vue3-pinia.html)
+ 修复 3.4.6 版本引发的 vue3 项目使用 pinia 报错的Bug [详情](https://ask.dcloud.net.cn/question/143578)
+ 修复 3.4.6 版本引发的 vue3 项目部分情况编译变慢的Bug [详情](https://github.com/dcloudio/uni-app/issues/3458)
+ App平台、H5平台 修复 canvas 组件画图裁剪异常的Bug [详情](https://ask.dcloud.net.cn/question/142494)
+ App平台、微信小程序平台 新增 vue2 ad-rewarded-video 激励视频广告组件 [详情](https://uniapp.dcloud.net.cn/component/ad-rewarded-video.html)
+ App平台、微信小程序平台 新增 vue2 ad-fullscreen-video 全屏视频广告组件 [详情](https://uniapp.dcloud.net.cn/component/ad-fullscreen-video.html)
+ App平台、微信小程序平台 新增 vue2 ad-interstitial 插屏广告组件 [详情](https://uniapp.dcloud.net.cn/component/ad-interstitial.html)
+ App平台 修复 vue3 nvue 页面引用的静态资源编译后可能不存在的Bug
+ App平台 修复 vue3 nvue 页面事件无法冒泡的Bug
+ App平台 修复 vue3 nvue input,textarea 组件的 v-model 不生效的Bug [详情](https://ask.dcloud.net.cn/question/143547)
+ App平台 修复 navigator 组件 animation-type、animation-duration 属性无效的Bug [详情](https://ask.dcloud.net.cn/question/143377)
+ App平台 修复 vue3 nvue movable 组件使用异常的Bug [详情](https://ask.dcloud.net.cn/question/143742)
+ App平台 修复 3.4.2 版本引发的 ArrayBuffer 类型判断错误的Bug [详情](https://ask.dcloud.net.cn/question/143534)
+ App-Android平台 修复 3.4.6版本 引出的 nvue 页面在部分设备可能出现渲染闪烁的Bug [详情](https://ask.dcloud.net.cn/question/143657)
+ App-Android平台 修复 3.4.6版本 引出的 nvue 页面 boxShadow 在部分情况下可能渲染异常的Bug [详情](https://ask.dcloud.net.cn/question/143727)
+ App-Android平台 修复 bindingx 执行 getComputedStyle 方法返回异常的Bug [详情](https://ask.dcloud.net.cn/question/143697)
+ App-iOS平台 修复 nvue swiper 组件与页面返回手势冲突的Bug [详情](https://ask.dcloud.net.cn/question/137505)
+ H5平台 修复 vue3 项目 html 原生标签(如div)renderjs/wxs 事件监听无法获取 ownerInstance 的Bug [详情](https://github.com/dcloudio/uni-app/issues/3436)
+ H5平台 修复 vue3 项目运行到浏览器,本地服务端口校验可能报错的Bug [详情](https://ask.dcloud.net.cn/question/143504)
+ H5平台 修复 vue3 项目 map 组件 polyline、circles 颜色设置不生效的Bug [详情](https://github.com/dcloudio/uni-app/issues/3433)
+ 小程序平台 修复 vue3 项目当 style 样式值为数字,部分情况下丢失的Bug [详情](https://github.com/dcloudio/uni-app/issues/3456)
+ 小程序平台 修复 v-if 内连用多个逻辑表达式编译出错的Bug [详情](https://ask.dcloud.net.cn/question/129122)
+ 微信小程序平台 修复 vue3 项目当 input 事件函数返回 Promise 时,输入框显示错误的Bug [详情](https://github.com/dcloudio/uni-app/issues/3462)
+ 微信小程序平台 修复 uni.getSystemInfoSync() 获取的 safeAreaInsets.bottom 为负数的Bug [详情](https://ask.dcloud.net.cn/question/133479)
* 【uniCloud】
+ 修复 云对象 自动展示错误提示界面时 toast 图标错误的Bug [详情](https://ask.dcloud.net.cn/question/142246)
+ 新增 uniCloud 支持云对象本地运行和调试 [详情](https://uniapp.dcloud.net.cn/uniCloud/cloud-obj.html#run-local)
* 【App插件(含5+App和uni-app的App端)】
+ 更新 uni-AD 腾讯优量汇SDK Android为 4.462.1332 版,iOS为 4.13.63 版;今日头条穿山甲SDK iOS为 4.4.0.5 版;快手广告SDK Android为 3.3.23 版,iOS为 3.3.23 版;快手内容联盟SDK iOS为 3.3.28 版;百度百青藤广告SDK iOS为 4.861 版;Sigmob广告联盟SDK iOS为 4.1.0 版
+ Android平台 更新 高德地图SDK为 9.2.0 版, 解决在部分设备使用地图引起应用崩溃的Bug [详情](https://ask.dcloud.net.cn/question/143573)
+ Android平台 修复 uni-AD 离线打包开通开屏广告可能引起应用崩溃的Bug
+ iOS平台 修复 3.4.6版本 引出的 获取底部安全区域高度不正确的Bug [详情](https://ask.dcloud.net.cn/question/143633)
+ iOS平台 修复 3.4.4版本 引出的 未使用Push模块上传 AppStore 报`ITMS-90078: Missing Push Notification Entitlement`警告的Bug
* 【Uni小程序SDK】
+ iOS平台 修复 调用 closeWithCompletion 方法关闭小程序后紧接着在打开小程序可能引起崩溃的Bug
#### 3.4.6.20220416-alpha
* 【uni-app】
+ 优化 vue3 项目 支持导出 onSaveExitState 生命周期 [详情](https://github.com/dcloudio/uni-app/issues/3427)
......
......@@ -495,3 +495,17 @@ vue3 全平台新增:通过 props 来获取页面参数的使用方式
};
</script>
```
## 小程序和App端不支持插值方式定义国际化@vue-i18n
因运行平台限制,目前在小程序和 App 端不支持插值方式定义国际化,需要使用 Messages Functions 定义国际化信息,[参考文档](https://vue-i18n.intlify.dev/guide/advanced/function.html)
示例:
```js
const messages = {
en: {
greeting: ({ named }) => `hello, ${named('name')}!`
}
}
```
......@@ -86,8 +86,8 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。
::: warning 注意
- 在分平台下如有`uniStatistics -> enable`字段,则优先使用分平台下配置 ,反之使用全局统计设置
- 分平台无需设置 `version``debyg` 属性 ,两个属性仅全局生效
- 分平台无需设置 `debyg` 属性 ,`debyg` 属性仅全局生效
- 分平台无需设置 `version``debug` 属性 ,两个属性仅全局生效
- 分平台无需设置 `debug` 属性 ,该属性仅在全局生效
- 仅在开启调试模式或发行代码后才会正常上报数据
:::
......@@ -601,7 +601,7 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。
└── index.js # 代理入口文件,提供对外访问的uni-stat对象
```
#### 三、 公共模块配置项说明
#### 公共模块配置项说明
uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `uni-stat/config.json`文件中,用户可根据自身系统需要自定义各配置项的值。
::: warning 注意
......@@ -703,6 +703,17 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
- 不支持 CLI 项目
:::
### 常见问题
**1. 启动uni统计,何时可以查看报表数据?**
答:与定时任务配置配置有关,默认`统计首页``今日概况`等数据为1小时后可见,其余数据为次日可见。要想详细了解各类型数据统计时间请参考[定时任务配置说明](#定时任务配置说明)
**2. 如何判断是否需要配置分钟级定时任务?**
答:一般情况下是不需要自行配置的,但如果`定时任务云函数(uni-stat-cron)`出现运行超时的情况时,就要考虑去开启分钟级定时任务了。
<!-- ## 扩展和自定义方式
uni统计提供了基础的数据报表,如不能达到预期的数据采集,可以在客户端通过 `uni.report(eventKey,param)` 自由上报数据 ,并通过 uni-admin 增加页面 ,自行统计数据。
......
......@@ -17,7 +17,7 @@ uni-admin 框架,是基于 uni-app 和 uniCloud 的应用后台管理的开源
版本支持:HBuilderX 3.0+
演示地址:https://unicloudadmindemo.dcloud.net.cn
演示地址:[http://hellouniadmin.dcloud.net.cn/#/](http://hellouniadmin.dcloud.net.cn/#/)
下载地址:[https://ext.dcloud.net.cn/plugin?id=3268](https://ext.dcloud.net.cn/plugin?id=3268)
......
......@@ -589,10 +589,10 @@ serverless默认是没有固定的服务器IP的,因为有很多服务器在
**使用注意**
- 适用于云函数连接三方服务器的场景,如果你的云函数只处理数据库请求,不要修改此配置,保持为1即可
- 云函数内存使用量会随着并发量增大而增加
- 如果并发的不同请求对全局变量同时进行读写会污染全局变量,可能会导致意想不到的后果,开启单实例多并发后请不要编写修改全局变量的代码,除非你熟悉这种技术带来的特殊应用,比如下文进阶部分提到的ip过滤。
- 设置过大的单实例多并发可能会导致实例底层网络请求排队从而导致请求超时,**再次强调此项,一般情况下不要设置过大的并发度,对于一般的云函数设置为10左右比较合适。具体数值可以自己针对业务代码测试一下**
- 通常情况下不需要设置此项(如果你的云函数只处理数据库请求,不要修改此配置,保持为1即可)
- 设置过大的单实例多并发可能会导致实例底层网络请求排队从而导致请求超时,**再次强调此项,一般情况下不要设置过大的并发度,具体数值可以自己针对业务代码测试一下**
**适用场景**
......
......@@ -139,7 +139,7 @@ async function addToDo () {
以上传统开发需要68行代码,对比云对象的33行代码,不但工作量大,而且逻辑也不如云对象清晰。
_注:以上例子仅用于方便初学者理解。实质上对于简单的数据库操作,使用clientDB在前端直接操作数据库是更简单、代码更少的方案,[另见](/uniCloud/clientdb)_
_注:以上例子仅用于方便初学者理解。实际开发中对于简单的数据库操作,使用[clientDB](/uniCloud/clientdb)在前端直接操作数据库是更简单、代码更少的方案,都不需要写云端代码。
总结下云对象带来的好处:
1. 更清晰的逻辑
......@@ -205,45 +205,6 @@ const res = await todo.add('title demo', 'content demo')
const todo = uniCloud.importObject('todo')
```
### 自动显示交互界面@auto-ui
> 新增于 HBuilderX 3.4.6,本次调整属于非兼容更新。
HBuilderX 3.4.6及更高版本,调用云对象的方法时,默认会自动显示交互/提示界面。
1. 在请求开始时显示loading,
2. 结束后隐藏loading
3. 如果请求报错,显示弹窗(可配置为显示Toast)
如需关闭此行为,请传入`customUI: true`
例:
```js
uniCloud.importObject('todo', {
customUI: true // 取消自动展示的交互提示界面
})
```
关于交互/提示界面的完整配置如下:
**注意**
- 配置仅对当前`importObject`返回的云对象实例生效
```js
uniCloud.importObject('todo', {
customUI: false, // 是否取消自动展示的交互界面。默认为false,配置为true时取消自动展示的交互提示界面,以下配置均不再生效
loadingOptions: { // loading相关配置
text: '加载中...', // 显示的loading内的提示文字。默认值为:加载中...
mask: true // 是否使用透明遮罩,配置为true时不可点击页面其他内容。默认值为:true
},
errorOptions: { // 错误界面相关配置
type: 'modal', // 错误信息展示方式,可取值:modal(弹框,默认)、toast(toast消息框)。默认值为:modal
retry: false // 是否展示重试按钮,仅在type为modal时生效。用户点击重试按钮时将重新请求调用的方法,默认为false
}
})
```
## 云对象的API@api
......@@ -527,18 +488,58 @@ const todo = mycloud.importObject('todo')
const res = await todo.add('title demo', 'content demo')
```
## 自动显示交互界面@auto-ui
## 注意事项
> 新增于 HBuilderX 3.4.6,本次调整属于非兼容更新。
背景:每次写客户端联网的代码时,开发者都免不了重复写一堆代码:先调用loading等待框,联网结束后再关闭loading,如果服务器异常则弹出提示。
从HBuilderX 3.4.6起,调用云对象的方法时,默认会自动显示交互/提示界面。
1. 在请求联网开始时显示loading等待框,
2. 结束后隐藏loading
3. 如果请求报错,显示弹窗(也可配置为显示Toast)
如果默认显示的UI不符合你的需求,你可以通过配置自定义一些交互内容,也可以直接关闭自动显示的交互界面。
- 如需关闭自动显示的UI,请在客户端导入云对象时传入参数`customUI: true`
例:
```js
uniCloud.importObject('todo', {
customUI: true // 取消自动展示的交互提示界面
})
```
- 如需自定义默认显示的UI,配置如下:
```js
uniCloud.importObject('todo', {
customUI: false, // 是否取消自动展示的交互界面。默认为false,配置为true时取消自动展示的交互提示界面,以下配置均不再生效
loadingOptions: { // loading相关配置
text: '加载中...', // 显示的loading内的提示文字。默认值为:加载中...
mask: true // 是否使用透明遮罩,配置为true时不可点击页面其他内容。默认值为:true
},
errorOptions: { // 错误界面相关配置
type: 'modal', // 错误信息展示方式,可取值:modal(弹框,默认)、toast(toast消息框)。默认值为:modal
retry: false // 是否展示重试按钮,仅在type为modal时生效。用户点击重试按钮时将重新请求调用的方法,默认为false
}
})
```
**注意**
1. 配置仅对当前`importObject`返回的云对象实例生效
2. 本功能仅对客户端调用云对象生效。在云函数或云对象中调用云对象不生效
- 云对象和云函数都在cloudfunctions目录下,但是不同于云函数,云对象的入口为`index.obj.js`,而云函数则是`index.js`**为正确区分两者uniCloud做出了限制,云函数内不可存在index.obj.js,云对象内也不可存在index.js。**
- 所有`_`开头的方法都是私有方法,客户端不可访问
- 云对象也可以引用公共模块或者npm上的包,引用方式和云函数完全一致。
## 本地运行@run-local
`HBuilderX 2.4.8`之前,云对象目前无法直接本地运行,可以通过其他云函数调用本地云对象(在调用云对象的云函数右键本地运行),或者客户端调用本地云对象的方式来实现云对象的本地运行。
`HBuilderX 3.4.8`之前,云对象无法直接本地运行。可以通过其他云函数调用本地云对象(在调用云对象的云函数右键本地运行),或者客户端调用本地云对象的方式来实现云对象的本地运行。
`HBuilderX 3.4.8`起,云对象可以本地运行。打开云对象下的js文件,按Ctrl+r或点击运行菜单运行云对象。
`HBuilderX 2.4.8`及之后版本,云对象可以直接运行。打开云对象下的js文件,按ctrl+r或点击运行菜单运行云对象。运行云对象之前需要先选择执行云对象的哪个方法,以及传递什么参数。
运行云对象之前需要先选择执行云对象的哪个方法,以及传递什么参数。
以下述云对象为例:
......@@ -558,6 +559,12 @@ module.exports = {
![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/db974aec-7975-45b7-bb64-24afd8a59213.jpg)
## 注意事项
- 云对象和云函数都在cloudfunctions目录下,但是不同于云函数,云对象的入口为`index.obj.js`,而云函数则是`index.js`**为正确区分两者uniCloud做出了限制,云函数内不可存在index.obj.js,云对象内也不可存在index.js。**
- 所有`_`开头的方法都是私有方法,客户端不可访问
- 云对象也可以引用公共模块或者npm上的包,引用方式和云函数完全一致。
## 推荐最佳实践
uniCloud的服务器和客户端交互,有云函数、云对象、clientDB三种方式。
......
# 扩展库Redis
> 2021年11月18日,已支持腾讯云和阿里云
> 2021年11月18日,腾讯云和阿里云均支持
redis是一个内存中的数据结构存储系统,在项目中通常作为数据库的中间件来使用。相对于直接从数据库中读取数据,速度上会有明显的提升。
redis是一个内存中的数据结构存储系统,在项目中通常作为数据库的中间件来搭配使用。它的核心优势是快,相对于直接从MongoDB等数据库的磁盘存储中读写数据,操作Redis内存数据库在速度上会有质的提升。但它只能存储key/value格式的数据,也不方便做复杂的查询。所以Redis一般需要与MongoDB搭配使用。
Redis常见使用场景:
- 缓存高频数据,比如首页列表
- 秒杀抢购
- ip黑名单屏蔽
- 其他数据库操作速度不满足需求的场景
## 开通Redis扩展库@buy
......@@ -10,7 +16,9 @@ redis是一个内存中的数据结构存储系统,在项目中通常作为数
## 为云函数启用redis扩展库@use-in-function
目前需要开发者手动在云函数的package.json内添加云函数的扩展库,后续HBuilderX会提供图形化界面。(如果云函数目录下没有package.json,可以通过在云函数目录下执行`npm init -y`来生成)
- HBuilderX 3.4起提供了可视化界面,新建云函数/云对象时可选择Redis扩展库,或者在已有的云函数目录点右键选择“管理公共模块或扩展库依赖”
- HBuilderX 3.4以前,没有可视化界面,需要开发者手动在云函数/云对象的package.json内添加云函数的扩展库(如果云函数目录下没有package.json,可以通过在云函数目录下执行`npm init -y`来生成)
下面是一个开启了redis扩展库的云函数的package.json示例,**注意不可有注释,以下文件内容中的注释仅为说明,如果拷贝此文件,切记去除注释**
......@@ -28,7 +36,7 @@ redis是一个内存中的数据结构存储系统,在项目中通常作为数
```
```js
// 简单的使用示例
// 云函数中调用Redis示例
'use strict';
const redis = uniCloud.redis()
exports.main = async (event, context) => {
......@@ -42,6 +50,11 @@ exports.main = async (event, context) => {
```
注意:
因为Redis在云函数的内网中,所以
1. 目前Redis仅支持在云函数中访问,客户端不能直接访问。
2. 目前Redis不支持本地运行,需要把云函数上传到服务空间后才能使用。
## 数据类型@data-type
redis中数据被存储为key-value形式,key均为字符串,value有以下几种类型
......@@ -767,14 +780,10 @@ const [operationType, currentValue] = await redis.eval(`local val = redis.call('
和传统开发不同,云函数实例之间是不互通的,也就是说每个使用redis的函数实例都会和redis建立一个连接,在云函数实例复用时此连接也会复用。
- 云函数本地调试
目前不支持本地运行使用了Redis扩展库的云函数,请上传到云端测试
## 最佳实践
### 高并发下抢购逻辑@snap-over-sell
### 高并发下抢购/秒杀/防超卖示例@snap-over-sell
可以利用redis的原子操作保证在高并发下不会超卖,以下为一个简单示例
......
注:本更新日志仅限uniCloud,包括uniCloud web控制台、uniCloud 云端运行环境。这些更新不跟随HBuilderX发版更新。
#### 2022-04-28
+ 修复 云对象 自动展示错误提示界面时 toast 图标错误的Bug [详情](https://ask.dcloud.net.cn/question/142246)
+ 新增 uniCloud 支持云对象本地运行和调试 [详情](https://uniapp.dcloud.net.cn/uniCloud/cloud-obj.html#run-local)
#### 2022-04-24
+ 【重要】阿里云 调整 nodejs8 版本云函数使用的 nodejs 版本由 8.9.0 调整为 8.17.0
......
......@@ -126,6 +126,10 @@ plus.push.getClientInfoAsync((info) => {
5. 在华为平台是否开通了华为推送服务
6. 保存完参数,需要重新提交云端打包
**特别注意**
华为厂商平台更换应用包名或者证书时,需要同步更新云端的agconnect-services.json和包名等信息,否则将导致打包失败。
## 二、服务端推送消息
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册