最近给微信小助手增加了消息转发相关的功能,这篇文章记录一下整个的开发过程。中间的流水账大家随便看看就好,总点在最后想说的部分里。
在19年8月份的时候,自己 hack 了微信小助手的源码,加了转发及通过第二个微信账号回复消息的功能, 微信消息转发以及给指定好友发送消息 这篇文章中有记录当时的过程,不过这个时候写的代码只是在插件中指定了另一个账号进行操作,这样虽然实现了功能,但是只能在本地注入微信中,如果插件更新,就不合适了,所以这一次我想着集成到项目中,保持跟项目的同步,因为这个目的,所以需要开发得稍微像样一点。
删除 GayHub 上自己原来 fork 的代码,重新开始撸。因为以前在 TK 最初版本里加功能的时候, pod install
遇到了问题,导致自己一度不想开始动手,这次被需求逼急了,怎么说也要搞定,在群里立了 flag,怎么说也得完成。不过项目拉下来以后,居然直接可以导入 Xcode 进行开发,感谢 YM 等人做的努力。
要开发得像样一点,首先得有个界面进行管理,那么就得思考怎么开始这个界面得实现,我思考了一下我这个转发消息得功能需要哪些配置,然后决定参考自动回复的界面进行修改。
开发最快捷的方式是复制粘贴加修改,于是我决定通过 自动回复设置
这个下拉菜单开始入手。
因为是回顾,所以具体的细节不太记得了,以下是大致步骤:
自动回复设置
菜单相关的界面代码,增加 自动转发设置
菜单 自动回复设置
的代码,增加点击 自动转发设置
弹出配置窗口 自动回复设置
以及 AI回复设置
,实现 自动转发设置
配置中的内容 选中需要转发的聊天列表
的功能 开启自动转发
需要接收转发的聊天列表
开启转发所有好友消息
整个开发过程就是不断找到相类似的代码,复制粘贴,修改成自己需要的。
这是 MenuItem
的代码,菜单中可以看到 cmd+k
可以打开 自动回复设置
界面,但是 k
已经绑定了,我想实现 cmd+shift+k
打开 自动转发设置
界面,但不知道怎么对应上大写,后来看到 微信多开
的快捷键是 cmd+shift+N
,而代码中是 keyEquivalent:@"N"
,尝试用 keyEquivalent:@"K"
,结果可以绑定。
NSMenuItem *autoReplyItem = [NSMenuItem menuItemWithTitle:YMLocalizedString(@"assistant.menu.autoReply") action:@selector(onAutoReply:) target:self keyEquivalent:@"k" state:[[TKWeChatPluginConfig sharedConfig] autoReplyEnable]]; 复制代码
一开始 VAutoForwardingModel
我是复制 YMAutoReplyModel
实现的,但是中间开发这发现界面实现不了,然后不断对比 自动回复
和 AI回复
相关的代码,不断删减代码进行尝试,慢慢的对这一块的代码熟悉了起来,然后删了 model
的内容,重新开始按照自己的需求进行实现。
这个是在分析了 自动回复
和 AI回复
的代码后,选择跟 AI回复
类似的方式解决了。
其实整个开发过程很简单,就是找到类似的代码,然后实现相同功能,语法方面不会的就去网上搜,功能方面不会的就在项目里找。整个过程中,我觉得重点就是肯不断去尝试,经过不断的了解,从最初的只会照着改代码,然后慢慢的对 OBJC 语法,到现在都可以“随心所欲”的增加一些功能。
但是整个过程中还包含了很多的东西。
.h
和 .m
类似于接口文件和具体实现。 最后,开发完了再来写这些,着实记不得有哪些东西了,以后做这些时还是得记得边做边记录。看不明白的各位多多包涵,就当随笔了。