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使用的是LSApplicationWorkspace
的installedPlugins
函数来获取所有安装的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。