已遷移平臺:segmentfault,搜索 erma0
換平臺了诫尽,簡書發(fā)什么都鎖定禀酱,廣告一堆,趁早倒閉吧牧嫉。
今日壁紙
溫馨提示:先看文末<a href="#總結(jié)">總結(jié)</a>或先看(3)WEB端
<a href="#第一段的錨點名稱">第一段標(biāo)題</a>
<a name="第一段的錨點名稱">第一段標(biāo)題</a>
什么是APP URL scheme
玩手機(jī)經(jīng)常會碰到瀏覽器里提示即將跳轉(zhuǎn)到某APP剂跟,或者微信里提醒即將打開某APP,這其中的原理,一般就是通過URL scheme實現(xiàn)的浩聋。
具體可以看一下這篇文章的詳細(xì)介紹:傳送門
如何查找某一APP的URL scheme
(1) iPhone
- 將下載下來的ipa文件(可以用愛思助手下載)直接解壓
- 以抖音為例观蜗,進(jìn)入目錄
\抖音短視頻_7.7.0(正版)\Payload\Aweme.app\
- 打開
Info.plist
文件 - 搜索
CFBundleURLName
臊恋,其中<string>
里就是對應(yīng)的scheme衣洁,比如抖音的就是snssdk1128://
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.ss.iphone.ugc.Aweme</string>
<key>CFBundleURLSchemes</key>
<array>
<string>snssdk1128</string>
</array>
</dict>
(2)安卓
- 反編譯apk
- 打開
AndroidManifest.xml
,搜索scheme
或者android.intent.action.VIEW
- 根據(jù)對應(yīng)的Activity名稱
aweme
抖仅,可以定位到:
<activity android:launchMode="singleTask" android:name="com.ss.android.ugc.aweme.app.DeepLinkHandlerActivity" android:noHistory="true" android:screenOrientation="portrait" android:theme="@style/t">
<intent-filter>
<action android:name="com.ss.android.sdk.snssdk1128"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="snssdk1128"/>
</intent-filter>
</activity>
- 這里已經(jīng)知道scheme是
snssdk1128://
了坊夫,就在反編譯的內(nèi)容里搜一下這個就能搜到所有的URL scheme了(帶參數(shù)的哦)
搜索結(jié)果
(3)WEB端
最簡單、粗暴的方法就是撤卢,拿到你發(fā)現(xiàn)的會提示“即將打開某APP”的頁面(一般就是個普通URL)环凿,檢查頁面源代碼,里面就有scheme://放吩,比如下面找抖音的一下URL scheme智听。
- 打開分享頁面
-
設(shè)置手機(jī)端UA,渡紫,勾選Preserve log(保留日志)到推,再點擊【關(guān)注】截圖示例
- 可以看到,Network欄出現(xiàn)了一個紅色的請求惕澎,這個就是URL scheme的請求莉测,是要打開抖音APP并且關(guān)注該用戶
- 點進(jìn)去看,得到全部URL是
snssdk1128://user/profile/98726798113?refer=web&gd_label=click_wap_profile_follow&type=need_follow&needlaunchlog=1
- 然后就可以搜索這個URL了唧喉,先在左側(cè)點擊一下那個紅色URL捣卤,然后Ctrl+F,搜一下
snssdk1128://
(不能搜整條URL八孝,因為URL里參數(shù)都是前端處理之后加上去的) - 搜到兩個結(jié)果董朝,第一個是之前看到的紅色URL,那應(yīng)該就是另一個干跛,雙擊進(jìn)入
- 點一下花括號
{ }
進(jìn)行格式化益涧,再點一下右側(cè)代碼區(qū),才能Ctrl+F驯鳖,一樣的搜索snssdk1128://
-
結(jié)果如圖:搜索結(jié)果
<a name="總結(jié)">總結(jié)</a>
總的來說闲询,要找一個APP的URL scheme,可以按一下順序嘗試:
- 先看有沒有什么分享鏈接是會喚起App的浅辙,如果有扭弧,直接參照(3)來查找暴露的scheme(一般都會帶拼接好的參數(shù));
- 如果沒有WEB端记舆,就參考(2)進(jìn)行反編譯來查找scheme(參數(shù)要自己拼湊嘗試了)
- 如果上面兩步?jīng)]有成功鸽捻,只能通過iOS端進(jìn)行查找scheme(只要一個開頭,也就是只能喚醒APP)
補(bǔ)充
- 隱式啟動APP
- intent記錄APP
- Intent攔截者APP
原理是通過xposed框架查找intent及參數(shù),未測試御蒲。