利用WebClip實現自定義應用名字和圖標

1. 準備

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章