我们发现您的应用在用户同意隐私政策前申请获取用户个人信息(IMEI, 设备ID, 用户应用安装列表, MAC地址用户数据)

一、需求

在这里插入图片描述

解决应用上架问题

  • 过度获取用户信息
  • 我们发现您的应用在用户同意隐私政策前申请获取用户个人信息(IMEI, 设备ID, 用户应用安装列表, MAC地址用户数据)

自"滴滴"事件后,为避免该类事件,App的上架变的严格起来。上架经常已“过度获取用户信息/请在用户同意用户协议和隐私政策后获取用户隐私”

二、错误方法

第一次遇到需要已弹窗的形式让用户同意用户协议和隐私政策,自行手敲了一个隐私政策弹窗,但是在华为应用平台无论如何怎么都通过不了

三、解决方法
  • 首先碰到此问题请更新到HbuilderX3.1.22及以上版本
①、解决“违规收集个人信息“问题

关于收集个人信息问题,首先应用必须配置“隐私与政策”协议框,其次必须在“隐私与政策”非常清楚、全面地说明(不要用可能收集、了解用户信息这种模糊不清晰的词语)收集用户个人信息的目的、方式和范围,用户个人信息包括但不限于mac地址、设备序列号、imei、imsi、软件安装列表、通讯录信息、短信信息等。

  • 第一步:配置隐私与政策提示框

必须确保应用存在《隐私政策》,在应用首次启动时弹出提示并取得用户同意。

  • 在隐私政策中添加DCloud相关条款

例:我们的产品基于DCloud uni-app(5+ App/Wap2App)开发,应用运行期间需要收集您的设备唯一识别码(IMEI/android ID/DEVICE_ID/IDFA、SIM 卡 IMSI 信息)以提供统计分析服务,并通过应用启动数据及异常错误日志分析改进性能和用户体验,为用户提供更好的服务。详情内容请访问《DCloud用户服务条款》。(DCloud用户服务条款超链至:https://ask.dcloud.net.cn/protocol.html)

②、UniPush

消息推送服务供应商:由每日互动股份有限公司提供推送技术服务,我们可能会将您的设备平台、设备厂商、设备品牌、设备识别码等设备信息,应用列表信息、网络信息以及位置相关信息提供给每日互动股份有限公司,用于为您提供消息推送技术服务。我们在向您推送消息时,我们可能会授权每日互动股份有限公司进行链路调节,相互促活被关闭的SDK推送进程,保障您可以及时接收到我们向您推送的消息。详细内容请访问《个推用户隐私政策》(需将《个推用户隐私政策》超链至:http://docs.getui.com/privacy)。

③、xxx

需要获取用户信息的,标明获取了哪些,怎么用就OK

四、配置原生隐私政策框(HBuilderX3.1.22+ )
  • 1.打开项目的manifest.json文件,切换到“App启动界面配置”,在“Android启动界面样式”中勾选“使用原生隐私政策提示框”
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ql5kBcLp-1632299443697)(en-resource://database/2019:1)]

  • 2.上一步勾选,项目会自动生成一个androidPrivacy.json文件
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuqwbs4i-1632299443705)(en-resource://database/2021:1)]

  • 3.在androidPrivacy.json文件中配置隐私政策信息,文本颜色等

{  
  "version": "1",    
  "prompt": "template",  
  "title": "服务协议和隐私政策",  
  "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",  
  "buttonAccept": "同意并接受",  
  "buttonRefuse": "暂不同意",  
  "second": {  
    "title": "确认提示",  
    "message": "  进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>,否则将退出应用。",  
    "buttonAccept": "同意并继续",  
    "buttonRefuse": "退出应用"  
  },  
  "styles": {  
    "backgroundColor": "#00FF00",  
    "borderRadius":"5px",  
    "title": {  
      "color": "#ff00ff"  
    },  
    "buttonAccept": {  
      "color": "#ffff00"  
    },  
    "buttonRefuse": {  
      "color": "#00ffff"  
    }  
  }  
}

在这里插入图片描述

上架指南
更多内容参考

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
获取安卓设备IMEIMac地址需要使用安卓系统的API,可以使用C++调用Java代码来实现。 获取IMEI的代码示例: ```c++ #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_example_androidimei_MainActivity_getIMEI(JNIEnv *env, jobject /* this */) { jclass contextClass = env->FindClass("android/content/Context"); jfieldID fieldID = env->GetStaticFieldID(contextClass, "TELEPHONY_SERVICE", "Ljava/lang/String;"); jstring jstr = (jstring)env->GetStaticObjectField(contextClass, fieldID); const char* str = env->GetStringUTFChars(jstr, NULL); jclass telephonyManagerClass = env->FindClass("android/telephony/TelephonyManager"); jmethodID getSystemServiceID = env->GetMethodID(contextClass, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;"); jobject telephonyManager = env->CallObjectMethod(thisObj, getSystemServiceID, env->NewStringUTF(str)); jmethodID getDeviceIDID = env->GetMethodID(telephonyManagerClass, "getDeviceId", "()Ljava/lang/String;"); jstring imei = (jstring)env->CallObjectMethod(telephonyManager, getDeviceIDID); env->ReleaseStringUTFChars(jstr, str); return imei; } ``` 获取Mac地址的代码示例: ```c++ #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_example_androidimei_MainActivity_getMacAddress(JNIEnv *env, jobject /* this */) { jclass contextClass = env->FindClass("android/content/Context"); jfieldID fieldID = env->GetStaticFieldID(contextClass, "WIFI_SERVICE", "Ljava/lang/String;"); jstring jstr = (jstring)env->GetStaticObjectField(contextClass, fieldID); const char* str = env->GetStringUTFChars(jstr, NULL); jclass wifiManagerClass = env->FindClass("android/net/wifi/WifiManager"); jmethodID getSystemServiceID = env->GetMethodID(contextClass, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;"); jobject wifiManager = env->CallObjectMethod(thisObj, getSystemServiceID, env->NewStringUTF(str)); jmethodID getConnectionInfoID = env->GetMethodID(wifiManagerClass, "getConnectionInfo", "()Landroid/net/wifi/WifiInfo;"); jobject wifiInfo = env->CallObjectMethod(wifiManager, getConnectionInfoID); jmethodID getMacAddressID = env->GetMethodID(wifiInfoClass, "getMacAddress", "()Ljava/lang/String;"); jstring macAddress = (jstring)env->CallObjectMethod(wifiInfo, getMacAddressID); env->ReleaseStringUTFChars(jstr, str); return macAddress; } ``` 注意:上述代码中的`Java_com_example_androidimei_MainActivity_getIMEI`和`Java_com_example_androidimei_MainActivity_getMacAddress`是Java代码的方法名,需要替换成你自己的方法名。此外,还需要在AndroidManifest.xml中添加对应的权限,例如获取IMEI需要添加`<uses-permission android:name="android.permission.READ_PHONE_STATE"/>`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joseph365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值