MAUI+Masa Blazor APP 各大商店新手釋出指南(三)vivo篇

2023-08-31 12:00:57


前言

上架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

(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部分不通過截圖

覆蓋Android9-13全部通過截圖

如果有崩潰和異常的情況,可以下週異常機型測試過程的log紀錄檔

隱私測試報告

測試報告中會顯示檢測結論和存在的問題數量

具體不通過的原因和測試場景都會列舉,並有相關法律條文的依據。
經驗:法律條文可以節約時間,避免與風險、法務、產品部門進行無意義的辯論。


我們這裡遇到的問題主要是推播SDK初始化在應用啟動就開始了,需要改到在使用者同意隱私協定之後才能初始化,如果使用者沒有同意,那麼不能初始化相關SDK。

對敏感許可權使用會有分析總覽

所有涉及的敏感許可權需要得到使用者的授權,並需要向用戶說明使用目的和作用,按照經驗這部分不全部體現到在隱私協定裡面也能通過稽核。

隱私行為資料

這部分內容是隱私測試報告的補充,顯示敏感許可權呼叫的時間點和具體的堆疊資訊
如果使用了一些第三方的SDK,可能你無法預測SDK的一些行為,例如推播SDK是什麼時間讀取的裝置ID,除了ID之外還讀取了什麼資訊
這時可以參考這份行為資料,進行分析,調整呼叫時機,或者阻止不必要的呼叫

其他問題

1、如果你的App有自動更新或者發現新版本的功能,那麼你必須保證上傳到vivo商店的版本為最新,任何更新的提示會直接導致稽核終止。
2、不能有「未完成的功能」,例如某個功能點選顯示「暫未開通」或「敬請期待」。
3、隱私協定必須明確註明賬號登出的相關資訊和方法
4、App名稱必須和提交的資訊保持一致,開發者名稱必須和公司名稱保持一致
5、如果你應用內部有廣告,那麼必須有關閉按鈕。
6、應用分類不正確往往不會導致稽核失敗,而是稽核之後會自動幫助修正分類
7、應妥善處理首頁/登入頁的回退按鈕/回退手勢

1、對於回退按鈕或手勢操作間隔在一點時間內的操作,可以理解為使用者需要退出應用,可以使用Microsoft.Maui.Controls.Application.Current.Quit()退出應用

    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官方-應用稽核常見問題