ExtensionList: 一個快速獲取App Extension列表的Tweak.

weixin_34120274發表於2017-03-17

English Version
Or you can directly go to my github page for further infomation.

ExtensionList 現已上架Bigboss源. 戳這裡
Reveal2Loader也已上架,戳這裡

Reveal升級2.0之後可以看Plugins,但是RevealLoader配合Applist只能看到使用者安裝的App,因此抽時間仿照Applist寫了ExtensionList並且開源。順便重寫了下RevealLoader,也開源在Reveal2Loader

ExtensionList

ExtensionList使用的是LSApplicationWorkspaceinstalledPlugins函式來獲取所有安裝的Plugin,其中包含Today Widget, AppleWatch App等各種App Extension,並支援predicate過濾。

詳細用法可以參考Applist的使用說明

ALSectionDescriptors

  • avaliable-extensions
    ExtensionList移除了ALSectionDescriptors欄位suppress-hidden-apps引數。並增加了avaliable-extensions的BOOL屬性,用於過濾系統版本要求高於當前裝置iOS版本的Plugin。預設值是true

  • predicate
    ExtensionList獲取到的是LSPlugInKitProxy例項的陣列,predicate是針對這個類的屬性進行過濾。LSPlugInKitProxy其中一個屬性是protocol,對應的是iOS私有服務的ID。如你需要過濾today extension,就可以在predicate欄位寫入protocol contains 'com.apple.widget-extension'

關於App Extension的型別,以及對應的ID,可以參考官網文件,或者看extension(*.appex)對應的Info.plist中的NSExtensionPointIdentifier欄位。

  • A demo of ALSectionDescriptors
ALSectionDescriptors = (
    {
        title = "Custom Keyboard";
        predicate = "protocol contains 'keyboard-service'";
        "icon-size" = 29;
        "cell-class-name" = ELSwitchCell;
        "avaliable-extensions" = 0;
    },
)

Reveal2Loader

內建了一個RevealServer-2的framework。路徑在/Library/Frameworks/RevealServer.framework,可以自己替換。
這個沒什麼好說,只是改了下PreferenceLoader目錄下的plist。

1622362-55cf960901fdb6cf.PNG
IMG_2937.PNG
1622362-fb548b06b8a5c276.PNG
IMG_2938.PNG
1622362-af7fa7444c43e57e.PNG
IMG_2939.PNG

相關文章