1. 準備
- iPhone升級至iOS14以上 (
不然可能會出現打開應用中間還是有一段空白頁面過渡
) - 參考博客 https://gjh.me/?p=594#comment-3105 瞭解webclip的基本信息
- iOS 14 上替換應用圖標
- 下載Mac App
Apple configurator2
2. 描述文件解析(直接上代碼了)
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version='1.0'>
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>FullScreen</key>
<true/>
<!-- 書籤能否被刪除? -->
<key>IsRemovable</key>
<false/>
<!-- 圖標的base64編碼 -->
<key>Icon</key>
<data>base64編碼(實際是需要填這個字段的 太長了這裏就略了)</data>
<!-- 描述文件的標籤 這個是桌面上的名字 -->
<key>Label</key>
<string>應用名</string>
<!-- 描述文件的簡介 -->
<key>PayloadDescription</key>
<string>這個是webClip 用於替換應用啓動更換圖標之類的或者網頁書籤的一個桌面快捷打開的方式</string>
<!-- 描述文件內層導航欄顯示的名字 -->
<key>PayloadDisplayName</key>
<string>WebClip內部名字</string>
<!-- 唯一標識 -->
<key>PayloadIdentifier</key>
<string>com.example.appclip.apple.webClip.managed.xxxooo</string>
<!-- 類型 -->
<key>PayloadType</key>
<string>com.apple.webClip.managed</string>
<!-- UUID保證唯一性即可 -->
<key>PayloadUUID</key>
<string>25F701C5-1305-42D4-B6C4-0FB453940C05</string>
<!-- 版本號 -->
<key>PayloadVersion</key>
<real>1</real>
<!-- 預組裝 -->
<key>Precomposed</key>
<true/>
<!-- 跳轉的URLScheme -->
<key>URL</key>
<string>appcliplaunch://</string>
<!-- 目標app的bundleID -->
<key>TargetApplicationBundleIdentifier</key>
<string>com.sanche.AppClips</string>
</dict>
</array>
<!-- 描述文件的名字 -->
<key>PayloadDisplayName</key>
<string>WebClip描述文件的名字</string>
<!-- 描述文件的id -->
<key>PayloadIdentifier</key>
<string>com.example.appclip</string>
<!-- 描述文件不允許刪除? 貌似無效啊 -->
<key>PayloadRemovalDisallowed</key>
<true/>
<!-- 類型 -->
<key>PayloadType</key>
<string>Configuration</string>
<!-- UUID保證唯一性即可 -->
<key>PayloadUUID</key>
<string>95EF972A-9463-4037-83B8-7B23602F5C5D</string>
<!-- 版本 -->
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
3. 如何使用
-
使用老外寫的一個
iOS
捷徑https://routinehub.co/shortcut/6565/ -
使用
Apple configurator2
配置好描述文件,然後再利用AirDrop
傳送到手機安裝 -
把描述文件託管到文件服務器上或者互聯網網盤然後使用手機自帶的
Safari
瀏覽器下載打開安裝即可 -
App Store
下載第三方換圖標App
也可快速實現功能~ (良莠不齊,有些是要跳空白頁再跳的,有些是跳捷徑再跳的,有些是webclip處理好的~ 比如:趣圖標
和捷徑集
以及捷徑盒
裏的一些捷徑)
4. 大致原理
- 獲取
bundleID
,已知或者從調用App Store
搜索api
獲取 ,替換TargetApplicationBundleIdentifier
字段 - 獲取圖標圖片生成base64編碼,替換
Icon
字段 - 生成
UUID
等唯一標識,替換相關UUID
標識 - 替換應用名字段
- 把各個需要替換的字段更新生成新的描述文件進行安裝即可
- 其實可以一個描述文件包含多個書籤或者應用,因爲內部
PayloadContent
那一層是一個array
,我發現捷徑集
好像就是這樣實現的 - 至於籤不簽名好像並不影響使用
5. 嘗試一下這個微信替身(用手機Safari
打開) 點擊安裝
iOS代碼實現可以如下這樣打開Safari加載遠程配置文件即可:
let downStr = "https://cdn.jsdelivr.net/gh/WangGuibin/MyFilesRepo/files/weixin.mobileconfig"
let realURL = URL(string: downStr)
UIApplication.shared.openURL(realURL!)
根據以上我自己寫了一個簡易版的換圖標捷徑https://www.icloud.com/shortcuts/685dcb208eca411bafd6f911d3832e5b