uni-app HX4.36打包APP被VIVO驳回,Weex存在点击一次至少采集一次"剪切板信息"的行为

uni-app HX4.36打包APP被VIVO驳回,Weex存在点击一次至少采集一次"剪切板信息"的行为

13 回复

发一下对应的调用堆栈

更多关于uni-app HX4.36打包APP被VIVO驳回,Weex存在点击一次至少采集一次"剪切板信息"的行为的实战教程也可以访问 https://www.itying.com/category-93-b0.html


“java.lang.Exception at android.content.ClipboardManager.getPrimaryClip(Native Method) at android.widget.TextView.paste(TextView.java:13131) at android.widget.TextView.onTextContextMenuItem(TextView.java:12553) at com.taobao.weex.ui.view.WXEditText.onTextContextMenuItem(Unknown Source:4) at android.widget.Editor$TextActionModeCallback.onActionItemClicked(Editor.java:4636) at com.android.internal.policy.DecorView$ActionModeCallback2Wrapper.onActionItemClicked(DecorView.java:3137) at com.android.internal.view.FloatingActionMode$3.onMenuItemSelected(FloatingActionMode.java:97) at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:787) at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:151) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:934) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:924) at com.android.internal.view.FloatingActionMode.lambda$setFloatingToolbar$0$FloatingActionMode(FloatingActionMode.java:122) at com.android.internal.view.-$$Lambda$FloatingActionMode$LU5MpPuKYDtwlFAuYhXYfzgLNLE.onMenuItemClick(Unknown Source:2) at com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$2.onClick(FloatingToolbar.java:538) at android.view.View.performClick(View.java:7505) at android.view.View.performClickInternal(View.java:7477) at android.view.View.access$3600(View.java:824) at android.view.View$PerformClick.run(View.java:28705) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:257) at android.app.ActivityThread.main(ActivityThread.java:8284) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1031)” “java.lang.Exception at android.content.ClipData.getItemAt(Native Method) at android.widget.TextView.paste(TextView.java:13140) at android.widget.TextView.onTextContextMenuItem(TextView.java:12553) at com.taobao.weex.ui.view.WXEditText.onTextContextMenuItem(Unknown Source:4) at android.widget.Editor$TextActionModeCallback.onActionItemClicked(Editor.java:4636) at com.android.internal.policy.DecorView$ActionModeCallback2Wrapper.onActionItemClicked(DecorView.java:3137) at com.android.internal.view.FloatingActionMode$3.onMenuItemSelected(FloatingActionMode.java:97) at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:787) at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:151) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:934) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:924) at com.android.internal.view.FloatingActionMode.lambda$setFloatingToolbar$0$FloatingActionMode(FloatingActionMode.java:122) at com.android.internal.view.-$$Lambda$FloatingActionMode$LU5MpPuKYDtwlFAuYhXYfzgLNLE.onMenuItemClick(Unknown Source:2) at com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup$2.onClick(FloatingToolbar.java:538) at android.view.View.performClick(View.java:7505) at android.view.View.performClickInternal(View.java:7477) at android.view.View.access$3600(View.java:824) at android.view.View$PerformClick.run(View.java:28705) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:257) at android.app.ActivityThread.main(ActivityThread.java:8284) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1031)”

回复 赢无翳: 有没有录屏文件?

回复 DCloud_Android_zl: 没有,上架VIVO驳回就说这个第三方SDK的weex隐私检测违规了,然后报告那些发了,没有录屏。

回复 DCloud_Android_zl: 检测报告已经发到我回复里的附件里了,请下载附件查看。

检测信息见附件

PDF检测报告见附件

你好,请问这个问题解决了吗,我也遇到了

你给input添加个属性allowCopyPaste,并设置为false,然后去vivo的云测平台做一下检测看看还会不会报了。

我去,input很多啊,没法这样一个个添加啊。

回复 赢无翳: 从堆栈信息看不出来具体的调用位置,如果vivo提供截图或者录屏的话,可以根据截图来配置。目前这种方式是最快的方式

weex已经不维护了,它的input就是提供了个属性allowCopyPaste。 你看能不能和vivo沟通好。 或者改用vue和uvue。

针对你提到的uni-app在HX4.36版本打包APP时被VIVO应用商店驳回,原因是Weex框架存在点击一次至少采集一次“剪切板信息”的行为,这通常涉及到隐私合规问题。为了解决这个问题,我们需要确保应用不会在用户未授权的情况下访问剪切板信息。虽然具体的解决方案可能需要根据应用的实际情况进行调整,但我可以提供一个基本的思路和代码示例来帮助你排查和修改可能的问题。

思路

  1. 检查Weex代码:确认Weex组件或JS代码中是否有未经用户同意就访问剪切板的逻辑。
  2. 修改访问权限:确保所有对剪切板的访问都在用户明确授权后进行。
  3. 测试与验证:在真机上测试应用,验证是否还会触发VIVO的隐私检测机制。

代码示例

假设你的Weex页面中有一个按钮,点击后会尝试读取剪切板内容。为了符合隐私合规要求,我们应该在读取前检查用户是否已授权。

// 假设这是一个Weex页面的JS代码
module.exports = {
    data: {
        clipboardContent: ''
    },
    methods: {
        checkClipboardPermission() {
            // 这里应该根据具体的平台API来判断是否有权限
            // 由于Weex的跨平台特性,这里使用了一个假设的API
            // 在实际开发中,需要根据Android和iOS的API分别处理
            return new Promise((resolve, reject) => {
                // 模拟检查权限
                setTimeout(() => {
                    // 假设用户已授权
                    resolve(true);
                    // 如果用户未授权,则reject(false);
                }, 100);
            });
        },
        readClipboard() {
            this.checkClipboardPermission().then(hasPermission => {
                if (hasPermission) {
                    // 这里使用了一个假设的API来读取剪切板内容
                    // 在实际开发中,需要调用原生模块或平台API
                    setTimeout(() => {
                        this.clipboardContent = '模拟的剪切板内容';
                        // 更新UI或执行其他逻辑
                    }, 100);
                } else {
                    // 提示用户授权或执行其他逻辑
                    console.error('没有剪切板访问权限');
                }
            }).catch(error => {
                console.error('检查剪切板权限时出错:', error);
            });
        }
    }
};

注意

  • 上面的代码是一个简化的示例,用于说明思路。在实际开发中,你需要根据Android和iOS的API来分别实现权限检查和剪切板访问。
  • 对于Android,你可能需要使用ContextCompat.checkSelfPermission来检查权限,并使用ActivityCompat.requestPermissions来请求权限。
  • 对于iOS,你需要检查Info.plist中是否已声明所需的权限,并在代码中使用相应的API来访问剪切板。

确保在提交应用前,在VIVO的真机上进行充分的测试,以验证问题是否已被解决。

回到顶部