插件开发问题(Preferences)


#1

我现在开发是用了大神的框架 MonkeyDev

现在有个问题

wdcs是我自己的插件

怎么开发才能使我自己插件(上图) 像 Reveal插件(下图) 那样 动态 在系统设置里配置我插件

求大神指导下

@AloneMonkey 参考开发文件在哪里看,我在您的说明文档 没找个这个开发
方便指导下吗


求教theos中的变量问题
#2

自己配pfloader就行了


#3

https://github.com/Naville/WTFJH/blob/master/BasePreferences.plist 照着抄


#4

谢谢大佬
问下 这样可以实现插件动态调整
比如说我自己写一个微信插件,把这个插件一些配置权限写在系统设置里面 ,
怎么实现这个配置和我插件数据是同一个
也就是微信插件配置权限改了 系统设置里面设置也改过来
反之系统设置里面改了权限 插件也可以马上改过来
我用 MonkeyDev 知道创建系统设置 权限的界面 但是怎么实现数据互通,怎么调用这些数据


#5

是不是直接 用NSFileManager类 来直接读取这个.plist文件 来实现这个配置 还是有其他方法来实现


#6

别的不说,你读写plist用nsfilemanager?
至于同步的问题,看我的demo和preference loader的wiki好吗


#7

https://iphonedevwiki.net/index.php/PreferenceLoader


#8

谢大佬 不过您DEMO 看起来有点吃力 努力消化中


#9

那你先看wiki吧。这个项目比较大所以很多是代码生成的部分,wiki简单一点


#10

我仔细看了一下 PreferenceLoader
说下我看法 您说对不对

比如我插件名字 是wdcs

配置界面 :就是在 /Library/PreferenceLoader/Preferences/wdcs.plist

wdcs.plist每一项数据 defaults 设置为 wdcs.data

至于同步数据 :/User/Library/Preferences/wdcs.data.plist
直接用 NSFileManager读取 数据对吧

界面 和 数据 是独立分开的两个数据没错吧


#11

对的。具体自己摸摸看吧


#12

嗯 谢大佬 基本应该都实现了
我之前把界面和数据都在 /Library/PreferenceLoader/Preferences/wdcs.plist 这个界面文件里面 读取所以会有问题 所以就尴尬 了
现在测试下同步的时效就好了


#13

请问下大佬wdcs.plist文件里面这个参数怎么用
我用这个NSNotificationCenter 调用却用不了
http://iphonedevwiki.net/index.php/PreferenceLoader 这个参数 有点看不懂
大佬给个研究方向

现在只能想到app回到重新读权限 会不会麻烦点


#14

有个问题比较严重 搞不懂 就是 我 PreferenceLoader 界面更改了数据
切换到 app 中
有时候 没有马上被修改 读取的都旧数据怎么办
有时候 是最新的数据


#15

有的确实是没有立即更新,所以一般都加respring


#16

不是很明白 能具体说说这个的更新机制吗


#17

respring的目的实际上是让目标程序重新启动重新加载dylib。

如果你不respring,自己手动重开应用貌似也是能生效的。

我感觉没有瞬时生效的需求都可以用plist来存key-value,dylib里直接读value就可以。

瞬时的话貌似用notification,具体看wiki吧,或者找几个开源的tweak来看就会了。


#18

respring是restart SpringBoard, 不是重启目标程序


#19

嗯嗯,重启SpringBoard之后,再开其他应用程序,相当于重启了目标程序,应该是这个意思吧。


#20

我看一些开源tweak

/Library/PreferenceLoader/Preferences/wdcs.plist

有个PostNotification 这个参数 是用这个 CFNotificationCenterAddObserver 的吧

这样改的 是/Library/PreferenceLoader/Preferences/ 底下的 界面数据

还是 /User/Library/Preferences/ 底下的 同步数据?