ExtensionList: 一个快速获取App Extension列表的Tweak.

96
作者 zidaneno5
2017.03.17 15:21* 字数 391

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。


IMG_2937.PNG

IMG_2938.PNG

IMG_2939.PNG
iOS开发日常