Android應用上架國内應用市場踩坑
前言
大家可能心裡明白新政下來之後上架會很難,但是到底有多難?心裡有底嗎?反正我知道。
我們之前一直是做海外市場的,今年下半年才開始做國内的應用,我也是很久沒有接觸國内應用市場了。不上不知道,現在國内上架都這樣了!
目前各大應用市場陸續推出聲明,各種備案截止日期到12月就要到最後期限責令整改不讓更新,明年再不整改就面臨下架風險。
那麼如何進行 App 的各種備案大家有頭緒嗎?如果是一個新的 App 如何從新開始上架需要經曆那些步驟,會踩到哪些坑?
從域名備案,IPC備案,App網安備案,隐私協定檢測,到上架各大應用市場的隐私檢測,證件查驗,功能确認提出整改。
雖然本次上架的是 Flutter App 但是 Android App 完全可以參考使用。
下面就從隐私協定,網安備案,應用市場稽核三座大山一并講來,到底有哪需要注意的點和容易踩的坑。
一、隐私協定
說一下需要注意的點和踩坑的點。
1. 應用啟動的協定彈窗
大家應該使用 App 都遇到過這樣的應用啟動彈窗:
大家了解最多的就是這個,我們需要在應用啟動的時候彈出權限聲明彈窗,附上隐私協定與使用者協定。
大緻包括一些敏感資訊的收集,資料安全的聲明,敏感權限的使用聲明,第三方庫的收集資訊聲明,自啟動相關聲明,個性化推薦相關聲明等等。
2. 延遲初始化,ContentProvider自動初始化?
我們現在就不能在 Application 應用啟動的時候就初始化第三方插件了,需要在使用者同意協定之後才能初始化,是以才有延遲初始化這麼個說法。
那前兩年很流行的 ContentProvider 自動初始化技術怎麼辦?那我走?
Flutter 應用可以在 main.dart 中建立 app 的時候彈窗,也可以在 Splash 頁面中檢測彈窗都可以。Android App 也是同樣的做法,可以在 Application 中檢測也可以在 Splash 頁面中檢測。
如果有第三方SDK在沒有使用者授權的前提下偷偷的初始化了,被檢測出來将會不予通過。
3. 浏覽模式
其實網安檢測,隻需要在不同意協定的時候退出應用就可以通過,但是部分應用市場需要提供浏覽模式,你不能暴力的讓使用者退出。
就算使用者沒有同意協定,就算一些第三方不能初始化,就算不能登入注冊收集使用者敏感資訊,使用者也要能浏覽應用的基本功能。是以開發者就要推出浏覽模式。
我們可以進入一些基本的功能頁面,在底部或頂部展示授權的彈窗,讓使用者同意隐私協定之後享受完整功能。
4. 個人資訊收集,裝置ID收集
這個應該不會有什麼問題,隐私協定中需要聲明,收集使用者哪些資訊,收集裝置哪些資訊,用于幹什麼怎麼儲存是否加密等等。 有限不包括 裝置ID,營運商,使用者ID,裝置SN,使用者資訊 等等。
5. 危險權限聲明
我們的應用會使用哪些危險權限,用于做什麼用途, 危險權限包括:相機,存儲卡,定位,麥克風。
比較難搞的就是一些第三方SDK聲明了一些鬼權限我們用不到的,比如我隻想用相冊,為什麼給我麥克風權限...
如果要修改隻能自己手動改。
6. 第三方SDK收集資訊聲明
微信,騰訊,百度,極光,等等使用了哪些第三方庫都需要聲明。
比如百度定位收集經緯度,怎麼儲存,用于什麼用途等等。
比如極光推送會收集IMEI MAC位址 裝置ID,軟體安裝清單,自啟動等等。
有一點比較難搞的就是收集一些說不清的資訊,比如 Bugly 你收集崩潰資訊就算了,為什麼還要手機應用安裝清單的資訊。
都解釋不通,隻能在隐私權限中加上是應用需要功能,不通過不讓使用,也是難搞。
可能 Bugly 的 Native 版本更新了這個問題,可是 Flutter 插件比較老,如果每一個第三方都需要這麼分别搞 Native 的橋接,那還是有很大的工作量的。
7. 登出賬号功能
這個功能,iOS市場和谷歌市場都有相關要求,不難了解,隻需要在設定頁面加上就行。
8. 預設勾選協定
包括登入,注冊的協定CheckBox,包括一鍵登入頁面中的協定CheckBox,都不能預設勾選,需要使用者手動勾選或者彈窗勾選。
9. 自啟動
這個不是保活啊,一般自啟動都是推送相關SDK需要用到,例如極光和個推。
我們需要在隐私協定中聲明為什麼需要自啟動即可。
**10. 廣告的倒計時 **
廣告倒計時不能超過5秒,并且要可以關閉,規範點選範圍,并且明确表示跳過廣告的文本。
11. 推送與個性化推薦
推送與個性化推薦是不同的兩個東西,推送是基于使用者資訊給使用者發送通知。
需要在設定中提供關閉推送的開關。
個性化推薦是手機使用者資訊,大資料分析使用者tag,展示不同的資訊流。如果你的應用沒有個性化推薦千萬不要加這種文本。
如果你的應用有個性化推薦,那麼就要提供相應的相應關閉個性化推薦的開關。并且開啟和關閉之後資訊流會發送明顯的變化,如果開啟和關閉資訊流沒有變化就會無法通過隐私協定稽核。
關于隐私方面其實大家可以白嫖小米開放平台的隐私檢測,上架小米市場可以先檢查應用的隐私協定,隻要它能稽核過了,除了華為市場其他市場都沒問題,它是相對比較嚴格的,而華為市場再另一層,後面單獨講它。
二、網安備案
App備案流程分為 伺服器域名備案,IPC備案,網安備案。
我們都可以通過阿裡雲來申請,這裡我不打廣告,有興趣的可以自己去阿裡雲官網去查找。隻需要填寫相關公司資訊和實名資訊不難通過,難的是 App 網安備案。
網絡安全備案的流程是先申請,然後從業人員到公司實地考察,然後委托第三方對App進行安全審查,審查通過之後完成備案可在全國網際網路安全管理服務平台檢視。
國内各大應用市場主要是需要應用去申請這個備案。
具體的複雜流程就是這個第三方審查機構,由于是與ZF合作的關系,各個城市可能第三方的稽核機構都不同,我們這裡是某邦平台,下面開始踩坑。
送出開發好的 App 包 WX 發給對方的對接人員,他們檢測之後會出具檢測報告,大概100頁左右。
由于第一次我太天真以為隻是掃掃毒查查隐私的什麼的,沒有加強直接給他們了,結果:
原來審查這麼嚴格,他們的要求是整改全部的中風險和高風險。
趕緊使用某60加強之後再次送出試試,結果确實少了很多,但是剩下的都是一些頑固問題。
一些第三方SDK中四大元件的一些問題很難搞,可能是一些 Flutter 插件并不是最新的,需要手動的內建 Native 庫,而一些 Native 庫裡面又嵌套 Native,煩不勝煩。
改來改去,拉扯幾個回合,直到最後的一個問題始終解決不了,就是未混淆與反編譯風險。
原始APP混淆之後,反編譯Dex是這樣:
如果使用某60加強之後是這樣:
雖然已經很好了,但是稽核機構會說類名沒有混淆,不讓通過,那就用他們自家的加強産品吧。反編譯之後是這樣的:
他們自家的确實是混淆了類名,這樣就能過了? 不會!他又會說你的代碼有反編譯風險。
算了算了回歸正題,下面說明一些 App 安全審查容易中招的點:
1. 加強服務,解決了加強問題,WebView相關漏洞攻擊風險,Http漏洞攻擊風險,動态調試攻擊風險,應用克隆”漏洞攻擊風險,動态注入攻擊風險 都可以解決
2. 拒絕服務攻擊漏洞
3. 代碼混淆處理
4. 反編譯風險
5. 導出辨別群組件權限
可以自己導入修改,也可以使用 Gradle 插件修改。
6. 資料任意備份風險
7. 全局異常檢測風險
主要就是這些了。
App安全稽核通過之後第三方機構也會稽核你應用的隐私協定,隻要按照上面的要求來辦基本問題不大。
整改,彈窗上的同意協定與不同意協定的按鈕要明确不能暗示使用者點選同意。
推送的相關隐私協定聲明了即可。
明确收集的資訊哪裡存儲如何保證安裝,用于什麼用途等等之類。
等一切都通過了,網安會發送短信提示稽核通過:
可以在全國網際網路安全管理服務平台檢視了:
需要注意的是 App 備案包括網安備案隻會審查第一次,隻要過了,後續如果繼續更新 App 則無需再次審查了,而應用市場上架會每次都審查,不過應用市場主要稽核隐私協定與 App 功能,對于 App 的安全則沒有網安審查那麼嚴格,一般隻要使用加強服務基本都能過。
三、應用市場上線
關于應用市場上線的部分,其實反倒是國内大部分程式員都熟悉的環節了。
我們上架的平台是應用寶,小米,華為,Vivo,Oppo,魅族。除了華為應用市場其他的應用市場都大差不差。
唯一的差别可能就是應用寶,小米,vivo 他們可以上傳32位包和64位包,華為不支援分開傳但是他支援AAB格式也不錯。
隻需要準備好相關的證件,如軟著(電子版也可),營業執照,特殊行業證件(新聞,招聘,勞務派遣等等),各大應用市場的承諾書蓋印公章,上傳包送出稽核即可。
如果應用被拒了多半是隐私協定的問題,他們不會過多關心你的應用功能怎麼樣,不會給你應用提出意見。
而隐私協定前面說了可以白嫖小米應用市場的隐私協定
以下是幾個容易踩坑的點:
- 加強,一定要加強之後再傳包,建議打三個包32位,64位,和全量包,并分别加強。
- 危險權限需要在上架的時候聲明用途。
部分應用市場需要在上架的時候就需要聲明權限。
- 自動化測試,小米和華為
一些應用市場需要進雲測,我們可以白嫖小米和華為的免費雲測時長
- 華為應用市場,他們比較人性化了,會對産品提出他們的想法。
比如我們的清單資訊沒有舉報功能不夠人性化,使用者體驗不好,OK我們改。
然後說我們應用黑暗模式不完善,OK我們改。
然後說我們提供測試賬号不行,要完善資訊通過稽核可以測試具體業務邏輯。如購買到商品,申請到工作等。
為什麼申請了工作到已工作清單中不展示,因為測試賬号的信用分不夠狀态是待稽核,是以這也不行。一定要展示到對應的清單中。
然後再說你權限申請的不對,申請動态權限必須要權限申請彈窗的頂部聲明用途,并且拒絕之後不能再次彈窗申請。
第一點,我們的做法是需要在申請權限的時候彈出Dialog,我們一些第三方的如相機相冊都是庫裡面自己申請權限的,現在要我們要在使用功能前自己申請了。這樣才能控制在哪個頁面彈出Dialog展示對應的權限說明。
關于第二點,為什麼拒絕之後不能再次彈窗,很不能了解,萬一使用者點錯了拒絕了權限,他再想統一權限你知道有多麻煩嗎?使用者要自己去設定中找到權限再找到自己的app再去打開對應的權限,一般使用者真的會嗎?
我們一般的做法就是彈窗是否再次授權,如果超過二次拒絕就會彈窗給他直接跳轉到應用的設定。華為就直接不讓彈窗了,這個吐槽一波。
另外證件不夠,需要額外的增值電信業務經營許可證。其他平台都不要就他要,8000大米沒了。
再就是應用名稱有類似的,需要提供品牌證明,好吧我們得注冊品牌申請專利和Logo等操作。
不過說到底是為了你自己的應用品質把關和提意見,蠻好的。
特别強調的一點是華為應用市場會把稽核失敗所有的問題一次性給你這點就特别好。
總結一句除了華為應用市場其他的都還算順暢,特别是你過了網安的審查和隐私審查之後基本問題不大了。
後記
經過九九八十一難,App終于上架完成。是不是第一次比較輕松後續更新疊代會松一些呢?
錯!你說的那是谷歌市場不是國内應用市場,國内的市場更新疊代也需要稽核,我就遇到過一些應用市場在疊代的時候找出問題要我們修改隐私協定的,每次更新上架都會稽核一次。
不過稽核的速度會快一些了,小米是最快的也是比較嚴格的,其次是 Oppo 也很快沒有那麼嚴格,再其次就是應用寶和魅族,再其次就是 Vivo 比較慢,最慢的就是華為應用市場了。
還是沒經驗啊,我一直都吐槽谷歌市場難用,現在我倒覺得谷歌市場才是最好用平台了。
現在上架一個國内應用市場真心難,如果是個人開發者可想有多難,應用市場不支援個人開發者,你得注冊個人公司,開了公司就有隐形的成本付出,就算你注冊了個人公司也需要一些額外成本才能最終磕磕絆絆上線。
其實事情過去一個月之後再次回顧起來,其實全流程也不難,如果我們再次上架新應用的話應該會很快,之前主要是沒經驗。其實各位家裡要是有足夠的大米的話其實蠻簡單的可以少走很多彎路。
無論如何,App總算是上架了,這裡也把我踩過的坑分享給大家,希望對各位 Androider 有些幫助。
如果你遇到其他的坑,或者想要吐槽,或者有其他的解決方案都可以在評論區交流哦。
如果感覺本文對你有一點點的啟發與幫助,還望你能點贊支援一下,你的支援是我最大的動力啦。