赢无翳
赢无翳
  • 发布:2025-01-09 13:32
  • 更新:2025-01-10 15:43
  • 阅读:211

UNIAPPX上架荣耀隐私检测不通过

分类:uni-app x

违规场景:
场景5:APP向用户明示SDK的收集使用规则,未经用户同意,SDK存在收集IMEI、设备MAC地址和软件安装列表、通讯录和短信等信息的行为。
风险信息:
APP向用户明示SDK的收集使用规则,未经用户同意,SDK存在收集((SDK: 数字天堂uni-AD原生广告) 读取传感器列表)的行为。
风险详情:
2025-01-09 12:43:52.313 -> [测试动作] 启动史宾格隐私合规检测
2025-01-09 12:44:21.865 -> (SDK: 数字天堂uni-AD原生广告) 读取传感器列表
2025-01-09 12:44:48.241 -> 弹出隐私政策

强烈建议UNIAPPX的隐私政策弹窗显示在启动界面,不然UNI-AD出来就隐私不通过了。

2025-01-09 13:32 负责人:无 分享
已邀请:

最佳回复

DCloud_Android_zl

DCloud_Android_zl

uni.getDeviceInfo部分属性会获取传感器信息,建议在用户同意隐私协议之后调用,或者按需获取需要的信息,参考

uni.getDeviceInfo({filter:["brand"]})

文档地址

  • 赢无翳 (作者)

    但是这个在组件或者首页要调用到啊,希望你们能把隐私弹窗可以弄在启动界面那样的话应该就不会影响了吧

    2025-01-10 15:44

  • DCloud_Android_zl

    回复 赢无翳: uni-app x中隐私弹框你们可以自定义,你只需要保证这个在同意了隐私弹框之后调用就可以了。隐私弹框相关API

    2025-01-10 16:28

DCloud_App_Array

DCloud_App_Array

应用是怎么实现隐私政策提示框的?
是因为统一隐私政策前显示了开屏广告吗?按目前的逻辑同意隐私政策前不会显示开屏广告的。

  • 赢无翳 (作者)

    我连开屏广告都没有勾选,uni-ad模块去了都还隐私过不了,隐私弹窗实现是在app.uvue里弹出的隐私弹窗。

    2025-01-09 15:43

赢无翳

赢无翳 (作者) - 学无止境

我隐私弹窗是在项目APP.uvue里这样实现的,把 "uni-ad" : {}模块去掉重新云打包提交审核还是这样隐私不通过呢。

    export default {  
        onLaunch: function () {  
            console.log('App Launch')  
            uni.getPrivacySetting({  
            success: (res) => {  
                if(res.needAuthorization){  
                  uni.openDialogPage({  
                    url: '/pages/privacy/privacy',  
                  })  
                }  
            },  
            fail: (err) => {  
                console.log(err)  
            }  
            })   
            setTimeout(() => {  
                if(state.user.uid == 0) {  
                    let userdata = $ux.Store.get('User')  
                    let appdata = $ux.Store.get('Appmsg')  
                    let apptime = $ux.Store.get('Today')  
                    console.log(userdata);  
                    console.log(appdata);  
                    if(apptime != null) {  
                        state.today = JSON.parse<Today>(JSON.stringify(apptime))!  
                    }  
                    if(userdata != null) {  
                        state.user = JSON.parse<User>(JSON.stringify(userdata))!  
                        state.appmsg = JSON.parse<Appmsg>(JSON.stringify(appdata))!  
                    }  
                }  
            }, 100)   
        },  
        onShow: function () {  
            console.log('App Show')  
        },  
        onHide: function () {  
            console.log('App Hide')  
        },  
        // #ifdef APP-ANDROID  
        onLastPageBackPress: function () {  
            console.log('App LastPageBackPress')  
            if (firstBackTime == 0) {  
                uni.showToast({  
                    title: '再按一次退出应用',  
                    position: 'bottom',  
                })  
                firstBackTime = Date.now()  
                setTimeout(() => {  
                    firstBackTime = 0  
                }, 2000)  
            } else if (Date.now() - firstBackTime < 2000) {  
                firstBackTime = Date.now()  
                uni.exit()  
            }  
        },  
        // #endif  
        onExit: function () {  
            console.log('App Exit')  
        },  
        methods: {  
              getRedirectUrl(scheme : string | null, ulink : string | null) : string | null {  
                //解析scheme或universal link启动直达页面:  
                //scheme格式:uniappx://redirect/pages/component/view/view?key=value  //其中redirect后为页面路径  
                //universal link格式:https://uniappx.dcloud.net.cn/ulink/redirect.html?url=%2Fpages%2Fcomponent%2Fview%2Fview%3Fkey%3Dvalue  //通用链接路径需固定,?后面的url参数为直达页面路径,注意url字段值需做url编码(可使用encodeURIComponent方法)  
                let url : string | null = null;  
                if (null != scheme && scheme.length > 0) {  
                  const PATHPRE = 'redirect';  
                  let parts : string | null = null;  
                  let pos = scheme.search('//');  
                  if (pos > 0) {  
                    parts = scheme.substring(pos + 2);  
                  }  
                  if (null != parts && parts.startsWith(PATHPRE)) {  
                    url = parts.substring(PATHPRE.length);  
                  }  
                } else if (null != ulink && ulink.length > 0) {  
                  const PATH = 'ulink/redirect.html';  
                  let parts = ulink.split('?');  
                  if (parts.length > 1 && parts[0].endsWith(PATH) && parts[1].length > 0) {  
                    parts[1].split('&').forEach((e) => {  
                      let params = e.split('=');  
                      if (params.length > 1 && params[0].length > 0 && params[1].length > 0) {  
                        if ('url' == params[0]) {  
                          if (null == url) {  
                            url = decodeURIComponent(params[1]);  
                          }  
                        }  
                      }  
                    });  
                  }  
                }  
                return url;  
              }  
            }  
    }
赢无翳

赢无翳 (作者) - 学无止境

请官方看看这是怎么回事啊。急

DCloud_Android_zl

DCloud_Android_zl

提供一下完整的调用堆栈

  • 赢无翳 (作者)

    at android.hardware.SensorManager.getSensorList()  
    at uts.sdk.modules.DCloudUniGetDeviceInfo.EmulatorCheckUtil.getSensorNumber(index.kt:269)
    at uts.sdk.modules.DCloudUniGetDeviceInfo.EmulatorCheckUtil.emulatorCheck(index.kt:101)
    at uts.sdk.modules.DCloudUniGetDeviceInfo.DeviceUtil$Companion.isSimulator(index.kt:397)
    at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt.getBaseInfo(index.kt:666)
    at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt$getDeviceInfo$1.invoke(index.kt:626)
    at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt$getDeviceInfo$1.invoke(index.kt:596)
    at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$needNotificationProgress$1.invoke(ux-upgrade.kt:71)
    at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$needNotificationProgress$1.invoke(ux-upgrade.kt:70)
    at io.dcloud.uniapp.vue.ReactiveEffect.invokeFn(index.kt:342)
    at io.dcloud.uniapp.vue.ReactiveEffect.access$invokeFn(index.kt:322)
    at io.dcloud.uniapp.vue.ReactiveEffect$run$1.invoke(index.kt:366)
    at io.dcloud.uniapp.vue.ComputedRefImpl.getValue(index.kt:1485)
    at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$1.invoke(ux-upgrade.kt:252)
    at java.lang.reflect.Method.invoke(Native Method)
    at io.dcloud.uniapp.vue.shared.IndexKt$callFunction$invoke$1.invoke(index.kt:720)
    at io.dcloud.uniapp.vue.shared.IndexKt.callFunction(index.kt:731)
    at io.dcloud.uniapp.vue.IndexKt.callWithErrorHandling(index.kt:3002)
    at io.dcloud.uniapp.vue.IndexKt.callWithAsyncErrorHandling(index.kt:3011)
    at io.dcloud.uniapp.vue.IndexKt.callWithAsyncErrorHandling$default(index.kt:3009)
    at io.dcloud.uniapp.vue.IndexKt$injectHook$1.invoke(index.kt:7174)
    at java.lang.reflect.Method.invoke(Native Method)
    at io.dcloud.uniapp.vue.shared.IndexKt$callFunction$invoke$1.invoke(index.kt:720)
    at io.dcloud.uniapp.vue.shared.IndexKt.callFunction(index.kt:731)
    at io.dcloud.uniapp.vue.shared.IndexKt.invokeArrayFns(index.kt:741)
    at io.dcloud.uniapp.vue.shared.IndexKt.invokeArrayFns$default(index.kt:736)
    at io.dcloud.uniapp.vue.IndexKt.unmountComponent(index.kt:6187)
    at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6036)
    at io.dcloud.uniapp.vue.IndexKt$unmountChildren$1.invoke(index.kt:6765)
    at io.dcloud.uniapp.vue.IndexKt$unmountChildren$1.invoke(index.kt:6760)
    at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6046)
    at io.dcloud.uniapp.vue.IndexKt.unmountComponent(index.kt:6192)
    at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6036)
    at io.dcloud.uniapp.vue.IndexKt.render(index.kt:6295)
    at io.dcloud.uniapp.framework.BaseApp$$init$3.invoke(index.kt:3857)
    at java.lang.reflect.Method.invoke(Native Method)
    at io.dcloud.uts.UniCallbackWrapper.invoke(UniCallbackWrapper.kt:111)
    at l.d.a(SourceFile:6)
    at l.d.a(SourceFile:5)
    at j.b.onClosed(Unknown Source:16)
    at j.a.b(Unknown Source:14)
    at io.dcloud.uniapp.appframe.activity.UniActivityManager.finishAllActivity$lambda$6(Unknown Source:8)
    at io.dcloud.uniapp.appframe.activity.UniActivityManager.$r8$lambda$HK3lAZeHiBBDjM-616VUoX0zLbg(Unknown Source:0)
    at io.dcloud.uniapp.appframe.activity.UniActivityManager$$ExternalSyntheticLambda4.run(Unknown Source:0)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at j.a.a(SourceFile:2)
    at j.a$$ExternalSyntheticLambda3.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6554)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

    2025-01-10 13:22

赢无翳

赢无翳 (作者) - 学无止境

at android.hardware.SensorManager.getSensorList()

at uts.sdk.modules.DCloudUniGetDeviceInfo.EmulatorCheckUtil.getSensorNumber(index.kt:269)

at uts.sdk.modules.DCloudUniGetDeviceInfo.EmulatorCheckUtil.emulatorCheck(index.kt:101)

at uts.sdk.modules.DCloudUniGetDeviceInfo.DeviceUtil$Companion.isSimulator(index.kt:397)

at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt.getBaseInfo(index.kt:666)

at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt$getDeviceInfo$1.invoke(index.kt:626)

at uts.sdk.modules.DCloudUniGetDeviceInfo.IndexKt$getDeviceInfo$1.invoke(index.kt:596)

at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$needNotificationProgress$1.invoke(ux-upgrade.kt:71)

at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$needNotificationProgress$1.invoke(ux-upgrade.kt:70)

at io.dcloud.uniapp.vue.ReactiveEffect.invokeFn(index.kt:342)

at io.dcloud.uniapp.vue.ReactiveEffect.access$invokeFn(index.kt:322)

at io.dcloud.uniapp.vue.ReactiveEffect$run$1.invoke(index.kt:366)

at io.dcloud.uniapp.vue.ComputedRefImpl.getValue(index.kt:1485)

at uni.UNIEEB0C9F.GenUniModulesUxFrameComponentsUxUpgradeUxUpgrade$Companion$setup$1$1.invoke(ux-upgrade.kt:252)

at java.lang.reflect.Method.invoke(Native Method)

at io.dcloud.uniapp.vue.shared.IndexKt$callFunction$invoke$1.invoke(index.kt:720)

at io.dcloud.uniapp.vue.shared.IndexKt.callFunction(index.kt:731)

at io.dcloud.uniapp.vue.IndexKt.callWithErrorHandling(index.kt:3002)

at io.dcloud.uniapp.vue.IndexKt.callWithAsyncErrorHandling(index.kt:3011)

at io.dcloud.uniapp.vue.IndexKt.callWithAsyncErrorHandling$default(index.kt:3009)

at io.dcloud.uniapp.vue.IndexKt$injectHook$1.invoke(index.kt:7174)

at java.lang.reflect.Method.invoke(Native Method)

at io.dcloud.uniapp.vue.shared.IndexKt$callFunction$invoke$1.invoke(index.kt:720)

at io.dcloud.uniapp.vue.shared.IndexKt.callFunction(index.kt:731)

at io.dcloud.uniapp.vue.shared.IndexKt.invokeArrayFns(index.kt:741)

at io.dcloud.uniapp.vue.shared.IndexKt.invokeArrayFns$default(index.kt:736)

at io.dcloud.uniapp.vue.IndexKt.unmountComponent(index.kt:6187)

at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6036)

at io.dcloud.uniapp.vue.IndexKt$unmountChildren$1.invoke(index.kt:6765)

at io.dcloud.uniapp.vue.IndexKt$unmountChildren$1.invoke(index.kt:6760)

at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6046)

at io.dcloud.uniapp.vue.IndexKt.unmountComponent(index.kt:6192)

at io.dcloud.uniapp.vue.IndexKt.unmount(index.kt:6036)

at io.dcloud.uniapp.vue.IndexKt.render(index.kt:6295)

at io.dcloud.uniapp.framework.BaseApp$$init$3.invoke(index.kt:3857)

at java.lang.reflect.Method.invoke(Native Method)

at io.dcloud.uts.UniCallbackWrapper.invoke(UniCallbackWrapper.kt:111)

at l.d.a(SourceFile:6)

at l.d.a(SourceFile:5)

at j.b.onClosed(Unknown Source:16)

at j.a.b(Unknown Source:14)

at io.dcloud.uniapp.appframe.activity.UniActivityManager.finishAllActivity$lambda$6(Unknown Source:8)

at io.dcloud.uniapp.appframe.activity.UniActivityManager.$r8$lambda$HK3lAZeHiBBDjM-616VUoX0zLbg(Unknown Source:0)

at io.dcloud.uniapp.appframe.activity.UniActivityManager$$ExternalSyntheticLambda4.run(Unknown Source:0)

at android.os.Handler.handleCallback(Handler.java:790)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:164)

at j.a.a(SourceFile:2)

at j.a$$ExternalSyntheticLambda3.run(Unknown Source:2)

at android.os.Handler.handleCallback(Handler.java:790)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:164)

at android.app.ActivityThread.main(ActivityThread.java:6554)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

要回复问题请先登录注册