• MAUI+Masa Blazor APP 各大商店新手发布指南(三)vivo篇



    前言

    上架vivo商店,使用厂家的离线推送当然是一个重要原因,与小米不同,vivo的推送服务可以在应用未上架的情况下通过添加测试手机的方式进行测试

    准备材料

    审核流程基本与小米类似
    一、企业认证
    1、准备营业执照黑白复印件/扫描件 附加红色公章即可
    2、对公打款提供开户行信息,一般5分钟左右就会打款,3次错误机会,全错需要走人工
    二、审核资料
    1、apk文件
    2、应用信息包括:名称、测试账号、图标、简介、截图(截图要求是1080*1920,2MB以内;格式:png、jpg)

    截图需要与应用内容保持一致,例如:如果你截图上有5个按钮,那么测试账号登录之后应该也有5个,截图最好与测试账号身份登录后的效果保持一致。

    3、ICP备案号:vivo这里需要添加备案号即可,不需要上传备案截图
    4、软著电子证书,上传会自动读取pdf文件证书的信息,如果无法读取,可以在软件著作权栏内上传软著截图
    5、承诺书:部分行业资质需要,例如网赚类,也比较简单,按照模板填写公司及app信息盖章拍照上传即可。
    6、隐私协议:注意点还是不要过度收集信息。如果使用了其他厂家的推送SDK,需要在协议中体现,可以参照如下:

    (1)第三方SDK名称:华为推送SDK
    使用目的:消息推送
    收集的个人信息类型:AAID(应用匿名标识)、Token、Topic订阅关系、消息下发记录、Token申请记录、缓存消息内容。
    官网链接:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/privacy-statement-0000001050042021

    (2)第三方SDK名称:魅族推送SDK
    使用目的:消息推送
    收集的个人信息类型:设备信息、设置信息、位置信息
    官网链接:https://www.meizu.com/legal.html

    (3)第三方SDK名称:OPPO推送SDK
    使用目的:消息推送
    收集的个人信息类型:设备信息、使用推送服务的应用信息、推送SDK版本号、网络相关信息、消息发送结果、通知栏状态、锁屏状态。
    官网链接:https://open.oppomobile.com/wiki/doc#id=10288

    (4)第三方SDK名称:VIVO推送SDK
    使用目的:消息推送
    收集的个人信息类型:设备标识信息、网络状态信息
    官网链接:https://dev.vivo.com.cn/documentCenter/doc/3663

    (5)第三方SDK名称:小米推送SDK
    使用目的:消息推送
    收集的个人信息类型:设备标识信息、设备设置信息、应用使用信息
    官网链接:https://dev.mi.com/console/doc/detail?pId=1822

    审核流程

    vivo对机型的最低版本并没有强制限制,如果你的app只支持Android 9以上,那么vivo的测试机型就不会包含9以下的机型

    如果你没有明确指定最低版本,那么测试机型会覆盖Android 8-Android 13的机型

    审核失败会收到类似通知

    很遗憾,您的应用未通过审核
    尊敬的开发者:
    您好!您上传的应用“xxxx,包名:xxx.xxx.xxx,版本号:1.1.10”审核未通过。审核未通过原因:
    经平台检测该应用隐私测试结果不通过,请您查看测试报告并核实修改apk后再进行上传,避免应用被多次打回。
    具体测试报告参见以下链接::
    测试报告地址:https://swsdl.vivo.com.cn/appstore/upload2/pdfFile/20230531/xxx.pdf
    测试不通过的机型和log文件地址如下(30天有效):
    机型列表:
    机型:V1809A log日志:https://vivopublic.oss-cn-beijing.aliyuncs.com/xt9nIVI6CeWhyzHX/20230531/xxx.zip
    机型:vivo X21A log日志:https://vivopublic.oss-cn-beijing.aliyuncs.com/xt9nIVI6CeWhyzHX/20230531/xxx.zip
    隐私测试报告:https://swsdl.vivo.com.cn/appstore/cloudtest/pdf/20230531/xxx.pdf
    隐私行为数据:https://swsdl.vivo.com.cn/appstore/cloudtest/xlsx/20230531/xxx.xlsx

    测试报告

    测试报告会包含测试的机型及是否通过的记录
    覆盖Android8.1-13部分不通过截图
    1
    覆盖Android9-13全部通过截图
    1

    如果有崩溃和异常的情况,可以下周异常机型测试过程的log日志
    1

    隐私测试报告

    测试报告中会显示检测结论和存在的问题数量

    1

    具体不通过的原因和测试场景都会列举,并有相关法律条文的依据。
    经验:法律条文可以节约时间,避免与风险、法务、产品部门进行无意义的辩论。

    1
    1

    我们这里遇到的问题主要是推送SDK初始化在应用启动就开始了,需要改到在用户同意隐私协议之后才能初始化,如果用户没有同意,那么不能初始化相关SDK。

    对敏感权限使用会有分析总览

    1

    所有涉及的敏感权限需要得到用户的授权,并需要向用户说明使用目的和作用,按照经验这部分不全部体现到在隐私协议里面也能通过审核。

    隐私行为数据

    这部分内容是隐私测试报告的补充,显示敏感权限调用的时间点和具体的堆栈信息
    如果使用了一些第三方的SDK,可能你无法预测SDK的一些行为,例如推送SDK是什么时间读取的设备ID,除了ID之外还读取了什么信息
    这时可以参考这份行为数据,进行分析,调整调用时机,或者阻止不必要的调用

    1

    其他问题

    1、如果你的App有自动更新或者发现新版本的功能,那么你必须保证上传到vivo商店的版本为最新,任何更新的提示会直接导致审核终止。
    2、不能有“未完成的功能”,例如某个功能点击显示“暂未开通”或“敬请期待”。
    3、隐私协议必须明确注明账号注销的相关信息和方法
    4、App名称必须和提交的信息保持一致,开发者名称必须和公司名称保持一致
    5、如果你应用内部有广告,那么必须有关闭按钮。
    6、应用分类不正确往往不会导致审核失败,而是审核之后会自动帮助修正分类
    7、应妥善处理首页/登录页的回退按钮/回退手势

    1、对于回退按钮或手势操作间隔在一点时间内的操作,可以理解为用户需要退出应用,可以使用Microsoft.Maui.Controls.Application.Current.Quit()退出应用

    1

        public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
        {
            if (keyCode == Keycode.Back)
            {
                var modelStack = Microsoft.Maui.Controls.Application.Current.MainPage.Navigation.ModalStack;
                if (modelStack.Count == 0)
                {
                    if (isExit)
                    {
                        //第2次返回键
                        Microsoft.Maui.Controls.Application.Current.Quit();
                    }
                    else
                    {
                        //第一次返回键
                        isExit = true;
                        new Android.OS.Handler().PostDelayed(() =>
                        {
                            isExit = false;
                        }, 2000);
                        Toast.MakeText(this, "再按一次退出朗诗德在线", ToastLength.Long).Show();
                        return true;
                    }
                }
            }
    
            return base.OnKeyDown(keyCode, e);
        }
    

    2、也可以使用 MoveTaskToBack 直接做最小化后台处理

            //审核要求登录页回退应该关闭或者最小化
            public override bool DispatchKeyEvent(KeyEvent e) {
                if (e.KeyCode == Keycode.Back) {
                    if (e.Action == KeyEventActions.Down) {
                        if (NavigationManagerExtension.UrList.Any()) {
                            var lastUrl = NavigationManagerExtension.UrList.Last();
                            var lastIndex = NavigationManagerExtension.UrList.Count - 1;
                            if (lastUrl.Contains("Login") || lastUrl == "https://0.0.0.0/") {
                                NavigationManagerExtension.UrList.Clear();
                                MoveTaskToBack(true);
                                return false;
                            }
                            else {
                                NavigationManagerExtension.UrList.RemoveAt(lastIndex);
                            }
                        }
                        else {
                            //最小化
                            MoveTaskToBack(true);
                            return false;
                        }
                    }
                    else if (e.Action == KeyEventActions.Up) {
                        return false;
                    }
                }
    
                return base.DispatchKeyEvent(e);
            }
    

    总结

    安卓平台的商店审核规则基本都是一致的,但是审核人员的标准和“仔细”程度不尽相同。
    vivo也提供了在线咨询客服的功能,国内商店基本都有在线人工客服,这点比App Store方便很多。
    这些审核相关的内容我们如果之前没有App的开发经验,可以提前学习一下,对开发和相关设计都是很有帮助的
    例如:权限应该在什么场景下申请,应该怎样向用户说明用途,图标、标题、副标题应该怎样设计。了解不同机型的分辨率和对应的安卓版本等也是很重要的。
    vivo官方-应用管理常见问题
    vivo官方-开放平台应用审核规范
    vivo官方-应用审核常见问题

  • 相关阅读:
    笔试面试相关记录(7)
    java计算机毕业设计springboot+vue城市轨道交通线路查询系统
    WuThreat身份安全云-TVD每日漏洞情报-2023-09-25
    c++之旅第七弹——继承
    GUI-Guider软件使用
    阿里云——云服务器基础运维与管理
    【软考设计师】【计算机系统】E02 原、反、补、移码
    MySQL数据库干货_20——MySQL中的索引【附有详细代码】
    聊聊ArrayList源码深度解析
    Java开发中为什么要使用spring呢?
  • 原文地址:https://www.cnblogs.com/MASA/p/17669118.html