“fc374821ddb9d40daaaf443c3d78ac2d3643ce03”上不存在“paddle/fluid/operators/elementwise/elementwise_sub_op.h”
提交 676384e4 编写于 作者: D DCloud_LXH

feat: uniAD、uni-AD 改为 uni-ad

上级 3e219425
...@@ -103,7 +103,7 @@ export default { ...@@ -103,7 +103,7 @@ export default {
title: '运营产品', title: '运营产品',
content: [ content: [
{ {
subTitle: 'uni-AD', subTitle: 'uni-ad',
url: 'https://uniad.dcloud.net.cn/login', url: 'https://uniad.dcloud.net.cn/login',
}, },
{ {
......
...@@ -21,7 +21,7 @@ export default { ...@@ -21,7 +21,7 @@ export default {
imageUrl: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/d@2x.png', imageUrl: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/d@2x.png',
}, },
{ {
name: 'uniAD', name: 'uni-ad',
url: 'https://uniad.dcloud.net.cn', url: 'https://uniad.dcloud.net.cn',
imageUrl: imageUrl:
'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uniad-520.png', 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uniad-520.png',
......
...@@ -19,7 +19,7 @@ export default { ...@@ -19,7 +19,7 @@ export default {
imageUrl: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/d@2x.png', imageUrl: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/d@2x.png',
}, },
{ {
name: 'uniAD', name: 'uni-ad',
url: 'https://uniad.dcloud.net.cn', url: 'https://uniad.dcloud.net.cn',
imageUrl: imageUrl:
'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uniad-520.png', 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uniad-520.png',
......
...@@ -345,7 +345,7 @@ Map & Geolocation模块集成的三方SDK说明 ...@@ -345,7 +345,7 @@ Map & Geolocation模块集成的三方SDK说明
</tr> </tr>
</table> </table>
### uni-AD ### uni-ad
<a id="uniAd"/> <a id="uniAd"/>
...@@ -362,14 +362,14 @@ uni-AD广告模块集成的三方SDK说明 ...@@ -362,14 +362,14 @@ uni-AD广告模块集成的三方SDK说明
<th style="width:10%">SDK隐私政策链接/目的</th> <th style="width:10%">SDK隐私政策链接/目的</th>
</tr> </tr>
<tr> <tr>
<td>uni-AD</td> <td>uni-ad</td>
<td></td> <td></td>
<td>基础广告 </td> <td>基础广告 </td>
<td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td> <td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td>
<td style="font-size:12px"> <td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br> android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br> android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_COARSE_LOCATION
</td> </td>
<td>广告投放合作,广告归因、反作弊、安全 </td> <td>广告投放合作,广告归因、反作弊、安全 </td>
<td><a href="https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/" target="_blank">隐私协议</a></td> <td><a href="https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/" target="_blank">隐私协议</a></td>
...@@ -382,7 +382,7 @@ uni-AD广告模块集成的三方SDK说明 ...@@ -382,7 +382,7 @@ uni-AD广告模块集成的三方SDK说明
<td style="font-size:12px"> <td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br> android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br> android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_COARSE_LOCATION
</td> </td>
<td style="font-size:12px">识别广告、活动作弊行为;改善 SDK 崩溃率、推送个性化广告;广告投放。 </td> <td style="font-size:12px">识别广告、活动作弊行为;改善 SDK 崩溃率、推送个性化广告;广告投放。 </td>
<td><a href= "https://yun.tuia.cn/tuia/sdk/agreement/index.html" target="_blank">推啊隐私协议</a></td> <td><a href= "https://yun.tuia.cn/tuia/sdk/agreement/index.html" target="_blank">推啊隐私协议</a></td>
...@@ -398,7 +398,7 @@ uni-AD广告模块集成的三方SDK说明 ...@@ -398,7 +398,7 @@ uni-AD广告模块集成的三方SDK说明
android.permission.READ_PHONE_STATE <br> android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_WIFI_STATE <br> android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br> android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.VIBRATE android.permission.VIBRATE
</td> </td>
<td>广告投放、广告归因、反作弊、安全 </td> <td>广告投放、广告归因、反作弊、安全 </td>
<td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手隐私协议</a></td> <td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手隐私协议</a></td>
...@@ -434,11 +434,11 @@ uni-AD广告模块集成的三方SDK说明 ...@@ -434,11 +434,11 @@ uni-AD广告模块集成的三方SDK说明
android.permission.ACCESS_NETWORK_STATE <br> android.permission.ACCESS_NETWORK_STATE <br>
android.permission.ACCESS_WIFI_STATE <br> android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br> android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.CHANGE_NETWORK_STATE<br> android.permission.CHANGE_NETWORK_STATE<br>
android.permission.QUERY_ALL_PACKAGES <br> android.permission.QUERY_ALL_PACKAGES <br>
android.permission.REORDER_TASKS<br> android.permission.REORDER_TASKS<br>
android.permission.VIBRATE <br> android.permission.VIBRATE <br>
android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_COARSE_LOCATION
</td> </td>
<td style="font-size:12px">广告投放与监测归因、广告主统计投放结果、减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td> <td style="font-size:12px">广告投放与监测归因、广告主统计投放结果、减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td>
<td><a href="https://imgcache.qq.com/gdt/cdn/adn/uniondoc/ylh_sdk_privacy_statement.html"target="_blank">优量汇隐私协议</a></td> <td><a href="https://imgcache.qq.com/gdt/cdn/adn/uniondoc/ylh_sdk_privacy_statement.html"target="_blank">优量汇隐私协议</a></td>
...@@ -451,7 +451,7 @@ uni-AD广告模块集成的三方SDK说明 ...@@ -451,7 +451,7 @@ uni-AD广告模块集成的三方SDK说明
<td style="font-size:12px"> <td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br> android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br> android.permission.READ_PHONE_STATE <br>
android.permission.WRITE_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE
</td> </td>
<td>广告投放合作、广告归因、反作弊 </td> <td>广告投放合作、广告归因、反作弊 </td>
<td><a href="https://www.pangle.cn/privacy/partner" target="_blank">穿山甲隐私协议</a></td> <td><a href="https://www.pangle.cn/privacy/partner" target="_blank">穿山甲隐私协议</a></td>
......
...@@ -11,15 +11,15 @@ UniPush即降低了开发成本、又提高了push送达率,并且免费,是 ...@@ -11,15 +11,15 @@ UniPush即降低了开发成本、又提高了push送达率,并且免费,是
uni-app,自带免费统计平台。无需到处对接统计sdk,可以在一张报表里看到所有端(iOS、Android、H5及各家小程序)的运营数据。 uni-app,自带免费统计平台。无需到处对接统计sdk,可以在一张报表里看到所有端(iOS、Android、H5及各家小程序)的运营数据。
uni统计官网地址:[https://tongji.dcloud.net.cn/](https://tongji.dcloud.net.cn/) uni统计官网地址:[https://tongji.dcloud.net.cn/](https://tongji.dcloud.net.cn/)
### 广告变现 ### 广告变现
`uni-app` 支持接入`uni-AD`广告联盟,开发者可实现**一次开发,多端变现** `uni-app` 支持接入`uni-ad`广告联盟,开发者可实现**一次开发,多端变现**
`uni-AD`支持开屏、信息流、激励视频、悬浮红包、推送等丰富的广告形式,且聚合了腾讯广点通、今日头条穿山甲、快手、360联盟等主流广告源,有更高的广告填充率。 `uni-ad`支持开屏、信息流、激励视频、悬浮红包、推送等丰富的广告形式,且聚合了腾讯广点通、今日头条穿山甲、快手、360联盟等主流广告源,有更高的广告填充率。
更多信息参考 [uni-AD 广告联盟](https://uniad.dcloud.net.cn) 更多信息参考 [uni-ad 广告联盟](https://uniad.dcloud.net.cn)
### 制作统一发行页面 ### 制作统一发行页面
......
...@@ -15,7 +15,7 @@ uni-app是当今主流的开发框架,DCloud有900万开发者,uni统计手 ...@@ -15,7 +15,7 @@ uni-app是当今主流的开发框架,DCloud有900万开发者,uni统计手
`uni-app` 是免费并且属于Apache2.0开源协议的产品。DCloud官方承诺无论HBuilderX、uni-app,面向全球程序员永久免费。大家可以放心使用。 `uni-app` 是免费并且属于Apache2.0开源协议的产品。DCloud官方承诺无论HBuilderX、uni-app,面向全球程序员永久免费。大家可以放心使用。
DCloud的盈利方式在帮助开发者进行流量变现(uni-AD)和提供有价值的云服务(uniCloud)上,而不在开发工具收费上。 DCloud的盈利方式在帮助开发者进行流量变现(uni-ad)和提供有价值的云服务(uniCloud)上,而不在开发工具收费上。
**跨端会造成功能受限制吗?** **跨端会造成功能受限制吗?**
...@@ -135,7 +135,7 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟 ...@@ -135,7 +135,7 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
2. 小程序端:uni-app没有限制,同该小程序自身能支持的最低平台 2. 小程序端:uni-app没有限制,同该小程序自身能支持的最低平台
3. App端: 3. App端:
- Vue2: Android4.4+、iOS9+。Android4.4已经是2013年发布的手机了。 - Vue2: Android4.4+、iOS9+。Android4.4已经是2013年发布的手机了。
- Vue3: 支持的范围是:Android >=5 (使用nvue和vue有区别。某些老国产Android5的rom无法动态升级Android system webview,此时如果使用vue页面需搭配x5内核) , iOS >= 10 - Vue3: 支持的范围是:Android >=5 (使用nvue和vue有区别。某些老国产Android5的rom无法动态升级Android system webview,此时如果使用vue页面需搭配x5内核) , iOS >= 10
**uni-app成熟度高吗?** **uni-app成熟度高吗?**
......
...@@ -52,7 +52,7 @@ uni-AD国内增强广告(如穿山甲、广点通、快手等SDK)显示的 ...@@ -52,7 +52,7 @@ uni-AD国内增强广告(如穿山甲、广点通、快手等SDK)显示的
![](https://img-cdn-aliyun.dcloud.net.cn/uni-app/doc/app/android/googleplay/ad.png) ![](https://img-cdn-aliyun.dcloud.net.cn/uni-app/doc/app/android/googleplay/ad.png)
**注意:uni-AD 广告基础功能不受影响** **注意:uni-ad 广告基础功能不受影响**
#### 离线打包: #### 离线打包:
...@@ -68,4 +68,4 @@ uni-AD国内增强广告(如穿山甲、广点通、快手等SDK)显示的 ...@@ -68,4 +68,4 @@ uni-AD国内增强广告(如穿山甲、广点通、快手等SDK)显示的
请不要集成X5相依赖库webview-x5-release.aar,如有请删除 请不要集成X5相依赖库webview-x5-release.aar,如有请删除
### 其它相关问题 ### 其它相关问题
- Android App Bundle(AAB)格式相关说明:[https://ask.dcloud.net.cn/article/39052](https://ask.dcloud.net.cn/article/39052) - Android App Bundle(AAB)格式相关说明:[https://ask.dcloud.net.cn/article/39052](https://ask.dcloud.net.cn/article/39052)
\ No newline at end of file
2012年9月份iOS6发布,IDFA面世,主要用于给开发者跟踪应用中广告的投放效果,但很多应用(或三方SDK)会获取IDFA作为设备唯一标识使用。 2012年9月份iOS6发布,IDFA面世,主要用于给开发者跟踪应用中广告的投放效果,但很多应用(或三方SDK)会获取IDFA作为设备唯一标识使用。
iOS14.5 发布之后,苹果要求应用获取 IDFA 时,需弹出用户许可收集跟踪数据的授权框,如果没有弹出授权框则可能会被App Store审核拒绝,提示违反5.1.2规则: iOS14.5 发布之后,苹果要求应用获取 IDFA 时,需弹出用户许可收集跟踪数据的授权框,如果没有弹出授权框则可能会被App Store审核拒绝,提示违反5.1.2规则:
```txt ```txt
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
...@@ -22,71 +22,71 @@ Resources ...@@ -22,71 +22,71 @@ Resources
``` ```
**如果上架App Store遇到上述问题,请按本文步骤配置开启IDFA,重新打包后再提交审核** **如果上架App Store遇到上述问题,请按本文步骤配置开启IDFA,重新打包后再提交审核**
- 确保更新到HBuilderX3.2.9或以上版本,建议使用最新版本 - 确保更新到HBuilderX3.2.9或以上版本,建议使用最新版本
- 如果是 cli 命令创建的项目,需要将 cli 升级到最新版本,参考[cli命令行](https://uniapp.dcloud.io/quickstart-cli?id=cliversion) - 如果是 cli 命令创建的项目,需要将 cli 升级到最新版本,参考[cli命令行](https://uniapp.dcloud.io/quickstart-cli?id=cliversion)
### 如何判断是否需要开启广告标识(IDFA) ### 如何判断是否需要开启广告标识(IDFA)
- App中使用了`uni-AD`中的增强广告(优量汇、穿山甲、或快手)需要开启IDFA - App中使用了`uni-ad`中的增强广告(优量汇、穿山甲、或快手)需要开启IDFA
- HBuilderX版本低于`3.2.15`,App使用了`新浪微博登录和分享``一键登录``友盟统计`中的一个或多个功能模块则需要开启IDFA(3.2.15及以上版本更新了这些模块的三方SDK,可以不用开启IDFA) - HBuilderX版本低于`3.2.15`,App使用了`新浪微博登录和分享``一键登录``友盟统计`中的一个或多个功能模块则需要开启IDFA(3.2.15及以上版本更新了这些模块的三方SDK,可以不用开启IDFA)
- HBuilderX版本大于或等于`3.5.3`,App使用了`百度地图``百度定位`中的一个或多个功能模块则需要开启IDFA - HBuilderX版本大于或等于`3.5.3`,App使用了`百度地图``百度定位`中的一个或多个功能模块则需要开启IDFA
- uni原生插件也也可能会读取IDFA,建议提交APP Store审核不通过,提示违反5.1.2规则且内容中包含`App Tracking Transparency`都可以通过配置开启IDFA解决 - uni原生插件也也可能会读取IDFA,建议提交APP Store审核不通过,提示违反5.1.2规则且内容中包含`App Tracking Transparency`都可以通过配置开启IDFA解决
> 注意: > 注意:
> uni-AD中的基础广告无需访问IDFA,没有勾选三方增强广告SDK时可以不开启广告标识(IDFA) > uni-AD中的基础广告无需访问IDFA,没有勾选三方增强广告SDK时可以不开启广告标识(IDFA)
> 对于非广告类的三方SDK,我们会密切关注其官方的版本更新,待官方出了不包含IDFA的版本我们会尽快适配升级 > 对于非广告类的三方SDK,我们会密切关注其官方的版本更新,待官方出了不包含IDFA的版本我们会尽快适配升级
### 设置开启广告标识(IDFA) ### 设置开启广告标识(IDFA)
打开项目的manifest.json文件,在 “App常用其它设置” -> “iOS设置” 中勾选“使用广告标识(IDFA)”: 打开项目的manifest.json文件,在 “App常用其它设置” -> “iOS设置” 中勾选“使用广告标识(IDFA)”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-manifest.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-manifest.png)
#### 设置 NSUserTrackingUsageDescription 隐私描述 #### 设置 NSUserTrackingUsageDescription 隐私描述
开启广告标识(IDFA)后,云端打包默认隐私描述为“请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备并保障服务安全与提示浏览体验”。 开启广告标识(IDFA)后,云端打包默认隐私描述为“请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备并保障服务安全与提示浏览体验”。
如需自定义隐私描述,打开项目的 manifest.json 文件,在 “App权限配置” -> “iOS隐私信息访问的许可描述” 下配置“跟踪用户的活动(NSUserTrackingUsageDescription)”: 如需自定义隐私描述,打开项目的 manifest.json 文件,在 “App权限配置” -> “iOS隐私信息访问的许可描述” 下配置“跟踪用户的活动(NSUserTrackingUsageDescription)”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-privacy.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-privacy.png)
隐私描述是为了告诉用户,应用为什么要跟踪用户及访问设备的IDFA,配置的描述内容会展示在授权框上,参考以下建议描述说明: 隐私描述是为了告诉用户,应用为什么要跟踪用户及访问设备的IDFA,配置的描述内容会展示在授权框上,参考以下建议描述说明:
- 包含uni-AD功能时 - 包含uni-AD功能时
“请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备、第三方广告、并保障服务安全与提示浏览体验” “请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备、第三方广告、并保障服务安全与提示浏览体验”
- 不包含uni-AD功能时 - 不包含uni-AD功能时
“请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备并保障服务安全与提示浏览体验” “请放心,开启权限不会获取您在其他站点的隐私信息,该权限仅用于标识设备并保障服务安全与提示浏览体验”
配置后需提交云端打包后才能生效,真机运行时请使用[自定义调试基座](https://ask.dcloud.net.cn/article/35115),运行时弹出授权提示框显示效果如下: 配置后需提交云端打包后才能生效,真机运行时请使用[自定义调试基座](https://ask.dcloud.net.cn/article/35115),运行时弹出授权提示框显示效果如下:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-tips.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-tips.png)
离线打包配置参考文档:[iOS配置IDFA](https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios?id=%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%aeidfa) 离线打包配置参考文档:[iOS配置IDFA](https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios?id=%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%aeidfa)
### 配置 App 隐私 ### 配置 App 隐私
开启广告标识(IDFA)后,提交App Store审核之前,需登录[App Store Connect](https://appstoreconnect.apple.com/),进入App详情页面,打开 “App 隐私” -> “数据类型”,点击“编辑”,勾选 “是,我们会从此App收集数据”: 开启广告标识(IDFA)后,提交App Store审核之前,需登录[App Store Connect](https://appstoreconnect.apple.com/),进入App详情页面,打开 “App 隐私” -> “数据类型”,点击“编辑”,勾选 “是,我们会从此App收集数据”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-1.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-1.png)
点击“下一步”,在标识符项中勾选“设备ID”,在诊断数据向中勾选“崩溃数据”,如果使用了`uni-AD`则需在使用数据项中勾选“广告数据”: 点击“下一步”,在标识符项中勾选“设备ID”,在诊断数据向中勾选“崩溃数据”,如果使用了`uni-ad`则需在使用数据项中勾选“广告数据”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-2.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-2.png)
保存后,分别编辑收集的数据用途: 保存后,分别编辑收集的数据用途:
#### 设备 ID #### 设备 ID
点击“设备 ID”旁的“编辑”,勾选“其它用途”: 点击“设备 ID”旁的“编辑”,勾选“其它用途”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-id.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-id.png)
> 如果使用了`uni-AD`,需同时勾选“第三方广告” > 如果使用了`uni-ad`,需同时勾选“第三方广告”
#### 广告数据 #### 广告数据
点击“广告数据”旁的“编辑”,勾选“第三方广告”: 点击“广告数据”旁的“编辑”,勾选“第三方广告”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-ad.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-ad.png)
#### 崩溃数据 #### 崩溃数据
点击“崩溃数据”旁的“编辑”,勾选“App 功能”: 点击“崩溃数据”旁的“编辑”,勾选“App 功能”:
![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-app.png) ![](https://native-res.dcloud.net.cn/images/uniapp/others/idfa-appstoreconnect-app.png)
> 如果使用了`uni-AD`,需同时勾选“第三方广告” > 如果使用了`uni-ad`,需同时勾选“第三方广告”
### App中获取IDFA标识 ### App中获取IDFA标识
通过[plus.device.getInfo](https://www.html5plus.org/doc/zh_cn/device.html#plus.device.getInfo)获取: 通过[plus.device.getInfo](https://www.html5plus.org/doc/zh_cn/device.html#plus.device.getInfo)获取:
``` js ``` js
plus.device.getInfo({//需要勾选IDFA plus.device.getInfo({//需要勾选IDFA
success:function(e){ success:function(e){
console.log('idfa = '+JSON.stringify(e.idfa)); console.log('idfa = '+JSON.stringify(e.idfa));
...@@ -97,7 +97,7 @@ plus.device.getInfo({//需要勾选IDFA ...@@ -97,7 +97,7 @@ plus.device.getInfo({//需要勾选IDFA
}); });
``` ```
也可通过native.js获取: 也可通过native.js获取:
``` js ``` js
var idfa = ''; var idfa = '';
var manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager'); var manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager');
if(plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')){ if(plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')){
...@@ -112,24 +112,24 @@ console.log('idfa = '+idfa); ...@@ -112,24 +112,24 @@ console.log('idfa = '+idfa);
参考Uni插件示例:[https://ext.dcloud.net.cn/plugin?id=726](https://ext.dcloud.net.cn/plugin?id=726) 参考Uni插件示例:[https://ext.dcloud.net.cn/plugin?id=726](https://ext.dcloud.net.cn/plugin?id=726)
### 注意事项 ### 注意事项
#### 配置NSUserTrackingUsageDescription仍然审核不通过,提示违反5.1.1规则: #### 配置NSUserTrackingUsageDescription仍然审核不通过,提示违反5.1.1规则:
如果配置了开启广告标识(IDFA)并且也配置了 NSUserTrackingUsageDescription隐私描述,但是应用还是被App Stroe审核拒绝,且提示违反5.1.1规则: 如果配置了开启广告标识(IDFA)并且也配置了 NSUserTrackingUsageDescription隐私描述,但是应用还是被App Stroe审核拒绝,且提示违反5.1.1规则:
```txt ```txt
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that your app requests the user's consent to access the AppTrackingTransparency framework, but doesn't sufficiently explain the use of the AppTrackingTransparency framework in the purpose string. We noticed that your app requests the user's consent to access the AppTrackingTransparency framework, but doesn't sufficiently explain the use of the AppTrackingTransparency framework in the purpose string.
To help users make informed decisions about how their data is used, all permission request alerts need to specify how your app will use the requested information. To help users make informed decisions about how their data is used, all permission request alerts need to specify how your app will use the requested information.
Next Steps Next Steps
Please revise the relevant purpose string in your app's Info.plist file to specify why your app needs access to the user's AppTrackingTransparency framework. Please revise the relevant purpose string in your app's Info.plist file to specify why your app needs access to the user's AppTrackingTransparency framework.
You can modify your app's Info.plist file using the property list editor in Xcode. You can modify your app's Info.plist file using the property list editor in Xcode.
Resources Resources
- See example of helpful, informative purpose strings. - See example of helpful, informative purpose strings.
- Review a list of relevant property list keys. - Review a list of relevant property list keys.
...@@ -161,4 +161,3 @@ Since your App Store Connect status is Metadata Rejected, we do NOT require a ne ...@@ -161,4 +161,3 @@ Since your App Store Connect status is Metadata Rejected, we do NOT require a ne
#### 配置NSUserTrackingUsageDescription后真机运行不弹出授权提示框 #### 配置NSUserTrackingUsageDescription后真机运行不弹出授权提示框
如果按照上述描述勾选了IDFA 和配置了NSUserTrackingUsageDescription隐私描述,但是真机运行App启动时没有弹出授权提示框,可能的原因是,手机的系统版本是iOS14以下的,或者是iOS14.5的手机,但是手机“设置-隐私-跟踪”里,系统默认将“跟踪选项”关闭了且灰色不可设置;目前这种情况还不确定是iOS的bug,还是是针对地区特殊对待,解决办法:可以将账号切换成一个美区的,这时“跟踪选项”是可以操作的;或者将手机设置还原成默认设置,这时App启动时也能弹出授权提示框,但只会弹出一次。 如果按照上述描述勾选了IDFA 和配置了NSUserTrackingUsageDescription隐私描述,但是真机运行App启动时没有弹出授权提示框,可能的原因是,手机的系统版本是iOS14以下的,或者是iOS14.5的手机,但是手机“设置-隐私-跟踪”里,系统默认将“跟踪选项”关闭了且灰色不可设置;目前这种情况还不确定是iOS的bug,还是是针对地区特殊对待,解决办法:可以将账号切换成一个美区的,这时“跟踪选项”是可以操作的;或者将手机设置还原成默认设置,这时App启动时也能弹出授权提示框,但只会弹出一次。
根据工业和信息化部关于开展APP侵害用户权益专项整治要求,应用的隐私政策中需详细描述使用权限的用途。 根据工业和信息化部关于开展APP侵害用户权益专项整治要求,应用的隐私政策中需详细描述使用权限的用途。
应用发布时应该避免使用过多权限,请根据应用实际功能需求配置权限。 应用发布时应该避免使用过多权限,请根据应用实际功能需求配置权限。
Android平台云端打包使用的权限包括以下几个方面: Android平台云端打包使用的权限包括以下几个方面:
- 默认使用的权限,不做任何配置云端打包自动包含的权限,参考[默认使用的权限](#default) - 默认使用的权限,不做任何配置云端打包自动包含的权限,参考[默认使用的权限](#default)
- App使用模块依赖的权限,也包含模块依赖三方SDK需要的权限,参考[App模块需要的权限](#modules) - App使用模块依赖的权限,也包含模块依赖三方SDK需要的权限,参考[App模块需要的权限](#modules)
- manifest.json中配置额外添加的权限,参考[App配置添加权限](#app-permissions) - manifest.json中配置额外添加的权限,参考[App配置添加权限](#app-permissions)
- App原生插件依赖的权限 - App原生插件依赖的权限
如果希望去掉以上添加的某个权限,请参考[移除Android权限](app-nativeresource-android.md#removepermissions)操作。 如果希望去掉以上添加的某个权限,请参考[移除Android权限](app-nativeresource-android.md#removepermissions)操作。
### 默认使用的权限@default ### 默认使用的权限@default
提交云端打包后会自动添加以下权限: 提交云端打包后会自动添加以下权限:
...@@ -25,46 +25,46 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -25,46 +25,46 @@ Android平台云端打包使用的权限包括以下几个方面:
``` ```
权限说明: 权限说明:
- android.permission.INTERNET - android.permission.INTERNET
使用网络权限,应用基础权限 使用网络权限,应用基础权限
- android.permission.READ_EXTERNAL_STORAGE 和 android.permission.WRITE_EXTERNAL_STORAGE - android.permission.READ_EXTERNAL_STORAGE 和 android.permission.WRITE_EXTERNAL_STORAGE
读写SD卡权限,系统授权提示未“访问设备上的照片、媒体内容和文件”,可以参考这里配置应用启动时[申请读写手机存储策略](https://ask.dcloud.net.cn/article/36549#externalstorage) 读写SD卡权限,系统授权提示未“访问设备上的照片、媒体内容和文件”,可以参考这里配置应用启动时[申请读写手机存储策略](https://ask.dcloud.net.cn/article/36549#externalstorage)
- android.permission.READ_PHONE_STATE、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE - android.permission.READ_PHONE_STATE、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE
读取设备标识使用,用于[uni统计服务](https://tongji.dcloud.net.cn/),可以参考这里配置应用启动时[申请访问设备信息权限策略](https://ask.dcloud.net.cn/article/36549#phonestate) 读取设备标识使用,用于[uni统计服务](https://tongji.dcloud.net.cn/),可以参考这里配置应用启动时[申请访问设备信息权限策略](https://ask.dcloud.net.cn/article/36549#phonestate)
- android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES - android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES
安装apk需要的权限,应用中使用[plus.runtime.install](https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.install)升级应用则需要此权限 安装apk需要的权限,应用中使用[plus.runtime.install](https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.install)升级应用则需要此权限
**注意:HBuilder2.6.3+开始Goog Play渠道默认不再添加此权限,因为GooglePlay审核规则禁止应用下载apk更新,必须通过上传GooglePlay审核更新** **注意:HBuilder2.6.3+开始Goog Play渠道默认不再添加此权限,因为GooglePlay审核规则禁止应用下载apk更新,必须通过上传GooglePlay审核更新**
特定权限说明: 特定权限说明:
- com.asus.msa.SupplementaryDID.ACCESS - com.asus.msa.SupplementaryDID.ACCESS
获取设备标识信息oaid在华硕设备上需要用到的权限 获取设备标识信息oaid在华硕设备上需要用到的权限
- com.huawei.android.launcher.permission.CHANGE_BADGE - com.huawei.android.launcher.permission.CHANGE_BADGE
设置应用角标功能在华为设备上需要用到的权限 设置应用角标功能在华为设备上需要用到的权限
- com.android.launcher.permission.INSTALL_SHORTCUT - com.android.launcher.permission.INSTALL_SHORTCUT
创建桌面快捷方式权限,应用中使用[plus.navigator.createShortcut](https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.createShortcut)创建桌面快捷方式则需要此权限 创建桌面快捷方式权限,应用中使用[plus.navigator.createShortcut](https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.createShortcut)创建桌面快捷方式则需要此权限
- com.android.launcher.permission.UNINSTALL_SHORTCUT - com.android.launcher.permission.UNINSTALL_SHORTCUT
删除桌面快捷方式权限,应用中使用[native.js](https://www.html5plus.org/doc/zh_cn/android.html)删除桌面快捷方式则需要此权限 删除桌面快捷方式权限,应用中使用[native.js](https://www.html5plus.org/doc/zh_cn/android.html)删除桌面快捷方式则需要此权限
<a id='sdkpermission' /> <a id='sdkpermission' />
### App模块(三方SDK)的权限@modules ### App模块(三方SDK)的权限@modules
提交云端打包时,勾选使用三方SDK相关的功能模块时,默认会自动添加三方SDK需要的所有权限。 提交云端打包时,勾选使用三方SDK相关的功能模块时,默认会自动添加三方SDK需要的所有权限。
为了保证三方SDK(或模块)的功能完整,默认会添加可能需要的所有权限,如果应用只用到三方SDK提供的部分功能,需通过Android原生应用清单文件配置[移除Android权限](app-nativeresource-android.md#removepermissions) 为了保证三方SDK(或模块)的功能完整,默认会添加可能需要的所有权限,如果应用只用到三方SDK提供的部分功能,需通过Android原生应用清单文件配置[移除Android权限](app-nativeresource-android.md#removepermissions)
保存后提交云端打包生效。 保存后提交云端打包生效。
**注意:HBuilderX中manifest.json文件的 “App权限配置” -> “Android自动添加第三方SDK需要的权限” 复选框功能已失效(即不勾选也会添加三方SDK需要的权限),后续版本将会移除此配置项** **注意:HBuilderX中manifest.json文件的 “App权限配置” -> “Android自动添加第三方SDK需要的权限” 复选框功能已失效(即不勾选也会添加三方SDK需要的权限),后续版本将会移除此配置项**
### App配置添加权限@app_permissions ### App配置添加权限@app_permissions
打开项目的manifest.json文件,在“(App)模块权限配置”页的“Android权限配置”项下根据需求勾选需要的权限: 打开项目的manifest.json文件,在“(App)模块权限配置”页的“Android权限配置”项下根据需求勾选需要的权限:
![](https://native-res.dcloud.net.cn/images/uniapp/permission/android.png) ![](https://native-res.dcloud.net.cn/images/uniapp/permission/android.png)
**如果没有列出需要的权限,可按以下方法手动添加** **如果没有列出需要的权限,可按以下方法手动添加**
在manifest.json页面,切换到“代码视图” 在manifest.json页面,切换到“代码视图”
- uni-app项目 - uni-app项目
在 "app-plus" -> "distribute" -> "android" -> "permissions" 下添加需要的权限如下: 在 "app-plus" -> "distribute" -> "android" -> "permissions" 下添加需要的权限如下:
```json ```json
"app-plus": { "app-plus": {
"distribute": { "distribute": {
...@@ -78,8 +78,8 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -78,8 +78,8 @@ Android平台云端打包使用的权限包括以下几个方面:
}, },
//... //...
``` ```
- 5+ APP(WAP2APP)项目 - 5+ APP(WAP2APP)项目
在 "plus" -> "distribute" -> "google" -> "permissions" 下添加需要的权限如下: 在 "plus" -> "distribute" -> "google" -> "permissions" 下添加需要的权限如下:
```json ```json
"app-plus": { "app-plus": {
"distribute": { "distribute": {
...@@ -94,8 +94,8 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -94,8 +94,8 @@ Android平台云端打包使用的权限包括以下几个方面:
//... //...
``` ```
### App模块(三方SDK)的权限列表@modules_permission ### App模块(三方SDK)的权限列表@modules_permission
#### Bluetooth(低功耗蓝牙) #### Bluetooth(低功耗蓝牙)
``` ```
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
...@@ -103,14 +103,14 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -103,14 +103,14 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.BLUETOOTH\" />" "<uses-permission android:name=\"android.permission.BLUETOOTH\" />"
``` ```
#### Contact(通讯录) #### Contact(通讯录)
``` ```
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>" "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"
``` ```
#### Fingerprint(指纹识别) #### Fingerprint(指纹识别)
``` ```
"<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>" "<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>"
``` ```
...@@ -126,7 +126,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -126,7 +126,7 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
``` ```
#### iBeacon #### iBeacon
``` ```
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
...@@ -134,8 +134,8 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -134,8 +134,8 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.BLUETOOTH\" />" "<uses-permission android:name=\"android.permission.BLUETOOTH\" />"
``` ```
#### Maps(定位和地图) #### Maps(定位和地图)
- 高德地图 - 高德地图
``` ```
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
...@@ -149,7 +149,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -149,7 +149,7 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.BLUETOOTH\" />", "<uses-permission android:name=\"android.permission.BLUETOOTH\" />",
"<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />" "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />"
``` ```
- 百度地图 - 百度地图
``` ```
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
...@@ -164,7 +164,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -164,7 +164,7 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
``` ```
#### Messaging(短彩邮件消息) #### Messaging(短彩邮件消息)
``` ```
"<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>", "<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>",
"<uses-permission android:name=\"android.permission.SEND_SMS\"/>", "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
...@@ -172,33 +172,33 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -172,33 +172,33 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.READ_SMS\"/>" "<uses-permission android:name=\"android.permission.READ_SMS\"/>"
``` ```
#### OAuth(登录鉴权) #### OAuth(登录鉴权)
- 微信登录 - 微信登录
``` ```
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
``` ```
- QQ登录 - QQ登录
``` ```
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
``` ```
- 新浪微博登录 - 新浪微博登录
- 小米登录 - 小米登录
#### Payment(支付) #### Payment(支付)
- 支付宝支付 - 支付宝支付
``` ```
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
``` ```
- 微信支付 - 微信支付
``` ```
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
``` ```
#### Push(消息推送) #### Push(消息推送)
- uniPush - uniPush
``` ```
<!--个推通道必需权限 权限说明: https://docs.getui.com/getui/question/sdk/ --> <!--个推通道必需权限 权限说明: https://docs.getui.com/getui/question/sdk/ -->
"<uses-permission android:name=\"android.permission.INTERNET\" />", "<uses-permission android:name=\"android.permission.INTERNET\" />",
...@@ -231,16 +231,16 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -231,16 +231,16 @@ Android平台云端打包使用的权限包括以下几个方面:
**个推推送与uniPush一致** **个推推送与uniPush一致**
#### Share(分享) #### Share(分享)
- 微信分享 - 微信分享
``` ```
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
``` ```
- QQ分享 - QQ分享
``` ```
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
``` ```
- 新浪微博分享 - 新浪微博分享
``` ```
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",
...@@ -249,8 +249,8 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -249,8 +249,8 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />" "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"
``` ```
#### Speech(语音识别) #### Speech(语音识别)
- 百度语音识别 - 百度语音识别
``` ```
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />", "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
"<uses-permission android:name=\"android.permission.INTERNET\" />", "<uses-permission android:name=\"android.permission.INTERNET\" />",
...@@ -260,7 +260,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -260,7 +260,7 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />" "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"
``` ```
- 讯飞语音识别 - 讯飞语音识别
``` ```
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />", "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
"<uses-permission android:name=\"android.permission.INTERNET\" />", "<uses-permission android:name=\"android.permission.INTERNET\" />",
...@@ -271,16 +271,16 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -271,16 +271,16 @@ Android平台云端打包使用的权限包括以下几个方面:
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />" "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"
``` ```
#### Static(统计) #### Static(统计)
- 友盟统计 - 友盟统计
``` ```
"<uses-permission android:name=\"android.permission.READ_LOGS\" />", "<uses-permission android:name=\"android.permission.READ_LOGS\" />",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />", "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />",
"<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\" />" "<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\" />"
``` ```
#### uni-AD #### uni-ad
- 穿山甲&GroMore广告联盟 - 穿山甲&GroMore广告联盟
``` ```
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
...@@ -293,7 +293,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -293,7 +293,7 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>
``` ```
- 腾讯优量汇广告联盟 - 腾讯优量汇广告联盟
``` ```
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
...@@ -306,7 +306,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -306,7 +306,7 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
``` ```
- 快手广告联盟 - 快手广告联盟
``` ```
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
...@@ -316,7 +316,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -316,7 +316,7 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
``` ```
- 快手内容联盟 - 快手内容联盟
``` ```
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
...@@ -331,11 +331,11 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -331,11 +331,11 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
``` ```
- 百度广告联盟 - 百度广告联盟
- sigmob广告联盟 - sigmob广告联盟
``` ```
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...@@ -344,7 +344,7 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -344,7 +344,7 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
``` ```
- 华为广告联盟 - 华为广告联盟
``` ```
<uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
...@@ -354,14 +354,14 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -354,14 +354,14 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
``` ```
- Pangle(海外穿山甲) - Pangle(海外穿山甲)
``` ```
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
``` ```
- google AdMob - google AdMob
``` ```
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...@@ -371,6 +371,6 @@ Android平台云端打包使用的权限包括以下几个方面: ...@@ -371,6 +371,6 @@ Android平台云端打包使用的权限包括以下几个方面:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" /> <uses-permission android:name="com.google.android.gms.permission.AD_ID" />
``` ```
### 相关参考 ### 相关参考
- Android官方权限说明,参考:[https://developer.android.google.cn/guide/topics/permissions/overview](https://developer.android.google.cn/guide/topics/permissions/overview?hl=zh_cn) - Android官方权限说明,参考:[https://developer.android.google.cn/guide/topics/permissions/overview](https://developer.android.google.cn/guide/topics/permissions/overview?hl=zh_cn)
- Android官方权限常量文档,参考:[https://developer.android.google.cn/reference/android/Manifest.permission](https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh_cn) - Android官方权限常量文档,参考:[https://developer.android.google.cn/reference/android/Manifest.permission](https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh_cn)
# uni错误规范 # uni错误规范
## 背景 ## 背景
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
所有异步API,都应通过callback回调返回错误,在回调函数参数中包含错误信息,回调函数参数为UniError类型 所有异步API,都应通过callback回调返回错误,在回调函数参数中包含错误信息,回调函数参数为UniError类型
完整错误类型定义如下: 完整错误类型定义如下:
```ts ```ts
//源错误信息 //源错误信息
interface SourceError { interface SourceError {
message: string, message: string,
...@@ -48,46 +48,46 @@ interface UniError { ...@@ -48,46 +48,46 @@ interface UniError {
function CallBack(err:UniError){ function CallBack(err:UniError){
//console.log(JSON.stringify(res)); //console.log(JSON.stringify(res));
} }
``` ```
## SourceError ## SourceError
用于保存引起错误的源错误,如app端三方SDK的错误信息,包括以下属性: 用于保存引起错误的源错误,如app端三方SDK的错误信息,包括以下属性:
- subject - subject
源错误(如app端三方SDK)模块名称,如uni-AD中的穿山甲广告SDK的模块名称为"csj" 源错误(如app端三方SDK)模块名称,如uni-AD中的穿山甲广告SDK的模块名称为"csj"
- code - code
源错误(如app端三方SDK)的原始错误码 源错误(如app端三方SDK)的原始错误码
- message - message
源错误(如app端三方SDK)的原始错误描述信息 源错误(如app端三方SDK)的原始错误描述信息
- cause - cause
上级源错误,只有一个源错误时是SourceError,包含多个源错误时封装成AggregateError 上级源错误,只有一个源错误时是SourceError,包含多个源错误时封装成AggregateError
**注意** **注意**
源错误可以根据业务情况扩展其它属性,如uni-AD中,可以添加slotId来表示聚合的三方广告位标识 源错误可以根据业务情况扩展其它属性,如uni-AD中,可以添加slotId来表示聚合的三方广告位标识
## UniAggregateError ## UniAggregateError
用于保存多个源错误,如app端某个错误可能是由多个三方SDK的错误引起,可将多个源错误组成UniAggregateError对象。 用于保存多个源错误,如app端某个错误可能是由多个三方SDK的错误引起,可将多个源错误组成UniAggregateError对象。
包括以下属性: 包括以下属性:
- errors - errors
数组,可包含SourceError或UniAggregateError对象 数组,可包含SourceError或UniAggregateError对象
## UniError ## UniError
Uni统一错误信息,用于统一各平台(端)错误信息 Uni统一错误信息,用于统一各平台(端)错误信息
- errSubject - errSubject
统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errsubject) 统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errsubject)
- errCode - errCode
统一错误码,数字类型,通常0表示成功,其它为错误码。\ 统一错误码,数字类型,通常0表示成功,其它为错误码。\
对于已经实现的API,继续保留现有errCode规范(保留向下兼容)。\ 对于已经实现的API,继续保留现有errCode规范(保留向下兼容)。\
错误码长度及规范参考微信小程序的[Errno错误码](https://developers.weixin.qq.com/miniprogram/dev/framework/usability/PublicErrno.html#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8),使用 7 位数错误码,第 1 - 2 位标识 API 接口的一级类目,第 3 - 4 位标识 API 接口的二级类目,第 5 - 7 位表示具体的错误类型。 错误码长度及规范参考微信小程序的[Errno错误码](https://developers.weixin.qq.com/miniprogram/dev/framework/usability/PublicErrno.html#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8),使用 7 位数错误码,第 1 - 2 位标识 API 接口的一级类目,第 3 - 4 位标识 API 接口的二级类目,第 5 - 7 位表示具体的错误类型。
其他平台,与微信小程序相同的错误,错误码应尽量保持一致。定义平台专有错误码时,为了避免冲突,错误码的第 5 - 7 位按以下规则: 其他平台,与微信小程序相同的错误,错误码应尽量保持一致。定义平台专有错误码时,为了避免冲突,错误码的第 5 - 7 位按以下规则:
+ 跨端(App/Web):使用6xx + 跨端(App/Web):使用6xx
+ App-Android端:使用7xx + App-Android端:使用7xx
+ App-iOS端:使用8xx + App-iOS端:使用8xx
+ Web端:使用9xx + Web端:使用9xx
- errMsg - errMsg
统一错误描述信息,字符串类型,应准确描述引起的错误原因 统一错误描述信息,字符串类型,应准确描述引起的错误原因
- data - data
可选,错误时返回的数据,比如获取设备信息时,如部分数据获取成功,部分数据获取失败,此时触发错误回调,需将获取成功的数据放到data属性中 可选,错误时返回的数据,比如获取设备信息时,如部分数据获取成功,部分数据获取失败,此时触发错误回调,需将获取成功的数据放到data属性中
- cause - cause
可选,源错误信息,可以包含多个错误,详见SourceError 可选,源错误信息,可以包含多个错误,详见SourceError
...@@ -99,7 +99,7 @@ function CallBack(err:UniError){ ...@@ -99,7 +99,7 @@ function CallBack(err:UniError){
``` ```
## errSubject(模块/主题)名称@errSubject ## errSubject(模块/主题)名称@errSubject
errSubject属性值表示返回错误的调用模块名称。 errSubject属性值表示返回错误的调用模块名称。
...@@ -107,100 +107,97 @@ errSubject属性值表示返回错误的调用模块名称。 ...@@ -107,100 +107,97 @@ errSubject属性值表示返回错误的调用模块名称。
|----|----| |----|----|
| uni-runtime | app端SDK运行环境错误 | | uni-runtime | app端SDK运行环境错误 |
| uni-secure-network | 安全网络 | | uni-secure-network | 安全网络 |
| uni-ad | uni-AD | | uni-ad | uni-ad |
| uni-push | UniPush | | uni-push | UniPush |
| uni-login | OAuth(登录鉴权) | | uni-login | OAuth(登录鉴权) |
| uni-verify | 一键登录 | | uni-verify | 一键登录 |
**注意** **注意**
- uni内置模块errSubject属性值为“uni-模块英文名称”,如果英文名称由多个单词组成,单词键应该加-分割 - uni内置模块errSubject属性值为“uni-模块英文名称”,如果英文名称由多个单词组成,单词键应该加-分割
- uni API的errSubject属性值 - uni API的errSubject属性值
+ uni.XXX API时 + uni.XXX API时
errSubject属性值为“uni-API名称”,如uni.getSystemInfo(),错误回调中errSubject属性值为“uni-getSystemInfo” errSubject属性值为“uni-API名称”,如uni.getSystemInfo(),错误回调中errSubject属性值为“uni-getSystemInfo”
+ Object.XX API时 + Object.XX API时
errSubject属性值为“uni-Object名称-API名称”,如SocketTask.onMessage(),错误回调中errSubject属性值为“uni-SocketTask-onMessage” errSubject属性值为“uni-Object名称-API名称”,如SocketTask.onMessage(),错误回调中errSubject属性值为“uni-SocketTask-onMessage”
- uni插件中返回错误时建议将“插件id”作为errSubject属性值,如果插件的API较多时可将每个API单独定义errSubject,建议使用errSubject属性值格式为“插件id-API名称”。 - uni插件中返回错误时建议将“插件id”作为errSubject属性值,如果插件的API较多时可将每个API单独定义errSubject,建议使用errSubject属性值格式为“插件id-API名称”。
## uts插件或uvue页面中使用UniError ## uts插件或uvue页面中使用UniError
在uni-app、uni-app x中的错误信息建议统一使用UniError对象,以便在发生错误时统一捕获处理,特别是以下情况: 在uni-app、uni-app x中的错误信息建议统一使用UniError对象,以便在发生错误时统一捕获处理,特别是以下情况:
- 在uts插件中封装API给uni-app使用时,返回的错误信息要求使用UniError对象。 - 在uts插件中封装API给uni-app使用时,返回的错误信息要求使用UniError对象。
- 在uni-app x项目的uvue页面中,抛出错误要求使用UniError对象。 - 在uni-app x项目的uvue页面中,抛出错误要求使用UniError对象。
在App端,UniError和SourceError都是从uts的[Error](https://uniapp.dcloud.net.cn/uts/buildin-object-api/error.html)继承。 在App端,UniError和SourceError都是从uts的[Error](https://uniapp.dcloud.net.cn/uts/buildin-object-api/error.html)继承。
### 构造UniError对象 ### 构造UniError对象
UniError对象必须通过 new 操作符构造 UniError对象必须通过 new 操作符构造
**语法** **语法**
```ts ```ts
new UniError() new UniError()
new UniError(errSubject:string, errCode:number, errMsg:string) new UniError(errSubject:string, errCode:number, errMsg:string)
``` ```
**参数** **参数**
- errSubject - errSubject
统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errsubject) 统一错误主题(模块)名称,字符串类型,存在多级模块时使用"::"分割,即"模块名称::二级模块名称",参考[errSubject(模块/主题)名称](#errsubject)
- errCode - errCode
统一错误码,数字类型,通常0表示成功,其它为错误码 统一错误码,数字类型,通常0表示成功,其它为错误码
- errMsg - errMsg
统一错误描述信息,字符串类型,应准确描述引起的错误原因 统一错误描述信息,字符串类型,应准确描述引起的错误原因
**示例** **示例**
```ts ```ts
//创建一个UniError //创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error"); let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置data数据(可选) //设置data数据(可选)
error.data = { error.data = {
"dataName": "custom data value" "dataName": "custom data value"
}; };
``` ```
### 构造SourceError对象 ### 构造SourceError对象
当错误信息是有三方SDK或其它模块引起时,可以将三方SDK或其它模块的错误信息封装在SourceError中作为UniError的源错误 当错误信息是有三方SDK或其它模块引起时,可以将三方SDK或其它模块的错误信息封装在SourceError中作为UniError的源错误
**语法** **语法**
```ts ```ts
new SourceError() new SourceError()
new SourceError(message:string) new SourceError(message:string)
``` ```
**参数** **参数**
- message - message
源错误描述信息,字符串类型 源错误描述信息,字符串类型
**示例** **示例**
```ts ```ts
//创建一个SourceError //创建一个SourceError
let sourceError = new SourceError("Third SDK error message"); let sourceError = new SourceError("Third SDK error message");
//创建一个UniError //创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error"); let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置源错误 //设置源错误
error.cause = sourceError; error.cause = sourceError;
``` ```
### 构造UniAggregateError对象 ### 构造UniAggregateError对象
当错误是由多个SourceError源错误引起时,可以将多个源错误放到一个UniAggregateError对象中 当错误是由多个SourceError源错误引起时,可以将多个源错误放到一个UniAggregateError对象中
**语法** **语法**
```ts ```ts
new UniAggregateError(errors:Array<SourceError>) new UniAggregateError(errors:Array<SourceError>)
``` ```
**参数** **参数**
- errors - errors
源错误数组,Array<SourceError>类型 源错误数组,Array<SourceError>类型
**示例** **示例**
```ts ```ts
//创建UniAggregateError //创建UniAggregateError
let aggregateError = new UniAggregateError([new SourceError("First 3rd SDK error message"), new SourceError("Second 3rd SDK error message")]); let aggregateError = new UniAggregateError([new SourceError("First 3rd SDK error message"), new SourceError("Second 3rd SDK error message")]);
//创建一个UniError //创建一个UniError
let error = new UniError("uni-apidName", 60000, "Custom uni error"); let error = new UniError("uni-apidName", 60000, "Custom uni error");
//设置源错误 //设置源错误
error.cause = aggregateError; error.cause = aggregateError;
``` ```
...@@ -25,7 +25,7 @@ DCloud为支持海外开发者,特推出“国际区”注册服务,注册 ...@@ -25,7 +25,7 @@ DCloud为支持海外开发者,特推出“国际区”注册服务,注册
“国际区”账号尚不支持部分功能点,具体如下: “国际区”账号尚不支持部分功能点,具体如下:
1. “国际区”账号尚不支持[问答社区](https://ask.dcloud.net.cn)发帖,但你可以到Github提交[issue](https://github.com/dcloudio/uni-app/issues) 1. “国际区”账号尚不支持[问答社区](https://ask.dcloud.net.cn)发帖,但你可以到Github提交[issue](https://github.com/dcloudio/uni-app/issues)
2. “国际区”账号不能使用插件市场、uniCloud、uniAD 服务; 2. “国际区”账号不能使用插件市场、uniCloud、uni-ad 服务;
3. “国际区”账号仅支持”uniapp“项目打包,不支持 "5+APp"、"wap2app"打包; 3. “国际区”账号仅支持”uniapp“项目打包,不支持 "5+APp"、"wap2app"打包;
4. “国际区”账号不支持使用公共测试证书(test keystore)和DCloud老版证书(DCloud keystore) 4. “国际区”账号不支持使用公共测试证书(test keystore)和DCloud老版证书(DCloud keystore)
...@@ -44,4 +44,4 @@ DCloud为支持海外开发者,特推出“国际区”注册服务,注册 ...@@ -44,4 +44,4 @@ DCloud为支持海外开发者,特推出“国际区”注册服务,注册
DCloud正在积极开拓海外市场,面向海外工程师提供高效便捷的开发工具,我们正在开发 [uni-app官网英文站](https://en.uniapp.dcloud.io),欢迎熟悉英语的各位开发者,一起参与完善。 DCloud正在积极开拓海外市场,面向海外工程师提供高效便捷的开发工具,我们正在开发 [uni-app官网英文站](https://en.uniapp.dcloud.io),欢迎熟悉英语的各位开发者,一起参与完善。
文档源码地址:[https://github.com/dcloudio/unidocs-en](https://github.com/dcloudio/unidocs-en),欢迎各位踊跃提交 pr 或 issue。 文档源码地址:[https://github.com/dcloudio/unidocs-en](https://github.com/dcloudio/unidocs-en),欢迎各位踊跃提交 pr 或 issue。
\ No newline at end of file
...@@ -15,7 +15,7 @@ Google Play上架审核要求比较严格,需要注意以下问题: ...@@ -15,7 +15,7 @@ Google Play上架审核要求比较严格,需要注意以下问题:
- 应用中不能存在下载/安装apk的行为,不要勾选android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES权限‘ - 应用中不能存在下载/安装apk的行为,不要勾选android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES权限‘
- 应用中的任何功能都不能引导用户下载其它应用,以下模块不能使用: - 应用中的任何功能都不能引导用户下载其它应用,以下模块不能使用:
+ QQ登录、QQ分享:手机没有安装QQ应用时,会引导用户安装 + QQ登录、QQ分享:手机没有安装QQ应用时,会引导用户安装
+ uni-AD 增强广告SDK:广告中存在下载安装其它三方应用的行为。**uni-AD 广告基础功能不受影响** + uni-ad 增强广告SDK:广告中存在下载安装其它三方应用的行为。**uni-ad 广告基础功能不受影响**
- 应用中不能使用动态加载代码,因此无法配置使用X5内核,详情:[https://ask.dcloud.net.cn/article/36806](https://ask.dcloud.net.cn/article/36806) - 应用中不能使用动态加载代码,因此无法配置使用X5内核,详情:[https://ask.dcloud.net.cn/article/36806](https://ask.dcloud.net.cn/article/36806)
**应用必须适配Android11,设置targetSdkVersion大于等于30:**[https://ask.dcloud.net.cn/article/193](https://ask.dcloud.net.cn/article/193#targetsdkversion) **应用必须适配Android11,设置targetSdkVersion大于等于30:**[https://ask.dcloud.net.cn/article/193](https://ask.dcloud.net.cn/article/193#targetsdkversion)
...@@ -37,4 +37,3 @@ Google Play上架审核要求比较严格,需要注意以下问题: ...@@ -37,4 +37,3 @@ Google Play上架审核要求比较严格,需要注意以下问题:
**使用广告标识(IDFA)相关说明:**[https://ask.dcloud.net.cn/article/36107](https://ask.dcloud.net.cn/article/36107) **使用广告标识(IDFA)相关说明:**[https://ask.dcloud.net.cn/article/36107](https://ask.dcloud.net.cn/article/36107)
**UIWebview API 已废弃:**[https://ask.dcloud.net.cn/article/36348](https://ask.dcloud.net.cn/article/36348) **UIWebview API 已废弃:**[https://ask.dcloud.net.cn/article/36348](https://ask.dcloud.net.cn/article/36348)
...@@ -104,7 +104,7 @@ uni-ad由开发者在DCloud网站[uniad.dcloud.net.cn](https://uniad.dcloud.net. ...@@ -104,7 +104,7 @@ uni-ad由开发者在DCloud网站[uniad.dcloud.net.cn](https://uniad.dcloud.net.
### 方案二 ### 方案二
登陆微信公众平台 [https://mp.weixin.qq.com/](https://mp.weixin.qq.com/),点击左侧栏 `设置`,然后找到顶部页签 `第三方设置`,向下滚动屏幕到 `插件管理`, 登陆微信公众平台 [https://mp.weixin.qq.com/](https://mp.weixin.qq.com/),点击左侧栏 `设置`,然后找到顶部页签 `第三方设置`,向下滚动屏幕到 `插件管理`,
点击 `添加插件` 按钮,搜索 `uniAD``珊瑚运营平台` 并添加 点击 `添加插件` 按钮,搜索 `uni-ad``珊瑚运营平台` 并添加
**提示** **提示**
安装2个插件(uniAD和珊瑚运营平台)后直接提交广告申请即可。其中“珊瑚运营平台”插件会显示【待确认】状态,属于正常现象,直接提交广告开通申请,待广告位开通后会显示【已通过】 安装2个插件(uniAD和珊瑚运营平台)后直接提交广告申请即可。其中“珊瑚运营平台”插件会显示【待确认】状态,属于正常现象,直接提交广告开通申请,待广告位开通后会显示【已通过】
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册