已遷移平臺:segmentfault,搜索 erma0
換平臺了,簡書發什么都鎖定,廣告一堆,趁早倒閉吧。
今日壁紙
溫馨提示:先看文末<a href="#總結">總結</a>或先看(3)WEB端
<a href="#第一段的錨點名稱">第一段標題</a>
<a name="第一段的錨點名稱">第一段標題</a>
什么是APP URL scheme
玩手機經常會碰到瀏覽器里提示即將跳轉到某APP,或者微信里提醒即將打開某APP,這其中的原理,一般就是通過URL scheme實現的。
具體可以看一下這篇文章的詳細介紹:傳送門
如何查找某一APP的URL scheme
(1) iPhone
- 將下載下來的ipa文件(可以用愛思助手下載)直接解壓
- 以抖音為例,進入目錄
\抖音短視頻_7.7.0(正版)\Payload\Aweme.app\
- 打開
Info.plist
文件 - 搜索
CFBundleURLName
,其中<string>
里就是對應的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
- 根據對應的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>
- 這里已經知道scheme是
snssdk1128://
了,就在反編譯的內容里搜一下這個就能搜到所有的URL scheme了(帶參數的哦)
搜索結果
(3)WEB端
最簡單、粗暴的方法就是,拿到你發現的會提示“即將打開某APP”的頁面(一般就是個普通URL),檢查頁面源代碼,里面就有scheme://,比如下面找抖音的一下URL scheme。
- 打開分享頁面
-
設置手機端UA,,勾選Preserve log(保留日志),再點擊【關注】截圖示例
- 可以看到,Network欄出現了一個紅色的請求,這個就是URL scheme的請求,是要打開抖音APP并且關注該用戶
- 點進去看,得到全部URL是
snssdk1128://user/profile/98726798113?refer=web&gd_label=click_wap_profile_follow&type=need_follow&needlaunchlog=1
- 然后就可以搜索這個URL了,先在左側點擊一下那個紅色URL,然后Ctrl+F,搜一下
snssdk1128://
(不能搜整條URL,因為URL里參數都是前端處理之后加上去的) - 搜到兩個結果,第一個是之前看到的紅色URL,那應該就是另一個,雙擊進入
- 點一下花括號
{ }
進行格式化,再點一下右側代碼區,才能Ctrl+F,一樣的搜索snssdk1128://
-
結果如圖:搜索結果
<a name="總結">總結</a>
總的來說,要找一個APP的URL scheme,可以按一下順序嘗試:
- 先看有沒有什么分享鏈接是會喚起App的,如果有,直接參照(3)來查找暴露的scheme(一般都會帶拼接好的參數);
- 如果沒有WEB端,就參考(2)進行反編譯來查找scheme(參數要自己拼湊嘗試了)
- 如果上面兩步沒有成功,只能通過iOS端進行查找scheme(只要一個開頭,也就是只能喚醒APP)
補充
- 隱式啟動APP
- intent記錄APP
- Intent攔截者APP
原理是通過xposed框架查找intent及參數,未測試。