

English
In order to implement the "Network Security Law of the People's Republic of China", "Network operators shall collect and use personal information in accordance with the law. , the principle of justification and necessity", "Network operators shall not collect personal information irrelevant to the services they provide", etc. The Cyberspace Administration of China, the Ministry of Industry and Information Technology, the Ministry of Public Security, and the State Administration for Market Regulation jointly formulated the "[[ Provisions on the Scope of Necessary Personal Information for Common Types of Mobile Internet Applications] (http://www.cac.gov.cn/2021-03/22/c_1617990997054277.htm) (Guoxin Ban Mi Zi [2021] No. 14, hereinafter referred to as "" "Regulations"), it is clear that mobile Internet application (App) operators shall not refuse users to use the basic functions of the App because users do not agree to collect non-essential personal information.
Article 3 of the "Regulations" defines 'essential personal information', and Article 4 of the "Regulations" clarifies the basic requirements, that is, "Apps shall not refuse users to use their basic functions and services because users do not agree to provide non-essential personal information"; " Article 5 of the Regulations defines 39 common types of apps, their basic functional services and necessary personal information. Developers are requested to read the Regulations carefully to determine the type of apps they develop, and to clarify basic functional services and necessary personal information. . The key here is to understand 'essential personal information' and 'non-essential personal information', and describe all the information collected and its uses in detail in the "Privacy Policy" of the App, in the following situations:
non-essential personal information
, the user does not agree and should continue to provide basic functional servicesThe information collected during the runtime of the DCloud uni-app (5+ App/Wap2App) SDK and other third-party SDKs is
non-essential personal information
That is to say, according to the requirements of the "Regulations", many apps need to support running even if the user does not agree to the "Privacy Policy", and provide basic functional services. "Privacy Policy Mode" (hereinafter referred to as "disagreeMode"), after configuring to support disagreeMode, the user can continue to use the App after clicking the reject button in the "Privacy Policy" prompt box. In this mode, uni-app(5+ App/Wap2App) The internal logic will do special processing:
The iOS platform does not support disgreeMode at the moment, it needs to be adapted to the original privacy policy box
At the same time, users are required to not read any personal information (including device identification information and personal information entered by users) when using basic functional services, and cannot call the disagreeMode mode restriction API. In particular, it is necessary to pay attention to whether the uni native plug-in used is compliant.
注意:App要支持disagreeMode,需要根据业务进行适配
- 前提条件:HBuilderX更新到3.3.1及以上版本
- 第一步:原生隐私政策提示框配置支持disagreeMode
- 第二步:适配App的基本功能服务,确保不要调用任何可能涉及“隐私政策”合规的API
- 第三步:适配需要使用
非必要个人信息
的业务功能,在调用功能前引导用户同意“隐私政策”协议
在HBuilderX中打开项目的原生隐私政策提示框配置文件androidPrivacy.json,添加disagreeMode
配置设置support
为true.
{
"prompt": "template",
"buttonAccept": "同意并接受",
"buttonRefuse": "基础功能模式",
"disagreeMode": {
"support": false,
"loadNativePlugins": false,
"visitorEntry": true,
"showAlways": false
}
}
Visitor Mode
button, which is used to enter the non-authorized mode. The default is false, that is, the visitor mode button is not displayeddisagreeMode表示用户未同意“隐私政策”,此时App仅提供基本功能服务,此模式下不能调用涉及隐私合规相关的API,如果调用了可能会因为读取隐私信息导致App无法通过合规检测,参考disagreeMode模式限制uni API和组件及disagreeMode模式限制5+ API。如果基本功能服务的页面需要需要调用到限制API,需先判断是否运行在disagreeMode模式,如果是的话需先引导用户同意“隐私政策”协议,用户同意隐私政策后再调用限制API。
You can use plus.runtime.isAgreePrivacy to check whether the user agrees to the privacy policy of the current application, and can determine whether it is running in disagreeMode mode. The sample code is as follows:
if(plus.runtime.isAgreePrivacy()) {
// plus.device.getInfo();
}else{
// Running in disagreeMode mode, cannot call restriction API
// Here you can guide the user to agree to the privacy policy
}
plus.runtime.isAgreePrivacy() returns true to indicate that the user has agreed to the privacy policy and calls the relevant restricted APIs; returns false to indicate that the user does not agree to the privacy policy, runs in disagreeMode mode, and cannot call restricted APIs.
Do not use the following uni APIs and components in disagreeMode mode, otherwise it will affect the compliance detection of the app store!
Do not use the following 5+ APIs in disagreeMode mode, otherwise it will affect the compliance detection of the app store!
module name | restricted API calls |
---|---|
Device | plus.device.imei、plus.device.imsi、plus.device.uuid、plus.device.dial、plus.device.getInfo、plus.device.getOAID、plus.device.getVAID、plus.device.getAAID |
Audio | plus.audio.getRecorder |
Barcode | plus.barcode.scan、plus.barcode.getBarcodeById、plus.barcode.create |
Bluetooth | plus.bluetooth.xxx Bluetooth related APIs are restricted and cannot be called |
Camera | plus.camera.xxx Camera-related APIs are restricted and cannot be called |
Contacts | plus.contacts.xxx Contact API is restricted and cannot be called |
Fingerprint | plus.fingerprint.xxx Fingerprint identification related APIs are restricted and cannot be called |
Gallery | plus.gallery.xxx Album related APIs are restricted and cannot be called |
Geolocation | plus.geolocation.xxx Location-related APIs are restricted and cannot be called |
Ibeacon | plus.ibeacon.xxx ibeacon related APIs are restricted and cannot be called |
Io | plus.io.xxx io related APIs are restricted and cannot be adjusted |
Maps | plus.maps.xxx Map-related APIs are restricted and cannot be called |
Navigator | plus.navigator.createShortcut、plus.navigator.hasShortcut、plus.navigator.isSimulator、plus.navigator.isRoot |
Oauth | plus.oauth.xxx Login-related APIs are restricted and cannot be called |
Share | plus.oauth.xxx Login-related APIs are restricted and cannot be called |
Payment | plus.payment.xxx Payment related APIs are restricted and cannot be called |
Runtime | plus.runtime.install |
Speech | plus.speech.xxx Speech recognition related APIs are restricted and cannot be called |
Statistic | plus.statistic.xxx Statistics related APIs are restricted and cannot be called |
Video | plus.video.createLivePusher, plus.video.LivePusher APIs related to push streaming are restricted and cannot be used |
When the user uses the basic function service in disagreeMode mode, the link may open the business function that uses the restricted API. At this time, you can call [plus.runtime.showPrivacyDialog](https://www.html5plus.org/doc/zh_cn/runtime. html#plus.runtime.showPrivacyDialog) pops up a privacy policy agreement box, guiding users to agree to the privacy policy before using related business functions. The sample code is as follows:
var options = {
success:function(response){
console.log("success " + JSON.stringify(response));
if(response.code == 1) {
// plus.runtime.restart();
}else{
// ...
}
},
fail:function(response){
console.log("fail " + JSON.stringify(response));
}
};
//Pop up the privacy policy agreement box to guide the user to agree to the privacy policy
plus.runtime.showPrivacyDialog(options);
**Note: If map, push, Statistic is used in the project, or when loadNativePlugins is set to false, the user needs to call plus.runtime.restart
to restart the application to take effect after choosing to agree to the privacy policy agreement! **
loadNativePlugins
to not load uni native plugins when you disagree with the privacy policy.