前言
Just do it.
本文主要描写这两个功能的开发过程中,自己都经历过哪些阶段,以及如何一步步从一开始都不会做MacOS逆向开发,到了解别人的项目,再到实现自己想要的功能。再加上当时正在看的一本书中,描述的内容在这次开发中得到了体现,于是想记录下来,给这段难得的经历留个纪念,也为那些在踏出第一步前迷茫的各位,点亮一盏烛火。Just do it。
插件功能基于WeChatPlugin-MacOS,作者TK。
主要经历
无从下手
在想要实现该功能时,TK已经移除了该项目,然后发现MustangYM在继续维护这个项目。这个时候的我以前翻过两页《Objective-C基础教程》,以及有一些Java和前端开发的相关经验,但是对于MacOS逆向,以及如何写OBJC的代码完全没有头绪,找到MustangYM的时候,我还给他发了一封邮件,询问是否能够提供一些指导方向,那个时候是7月16号。
柳暗花明
在给MustangYM发了邮件一段时间以后,并没有得到回信。有一天跟同事说到了这个东西,在帮他弄的过程中,突然发现了TK的项目文件中有写如何进行编译,然后根据描述试着去跑起来项目,中间在pos install也因为各种情况遇到了一些问题,所幸最后是将项目启动了起来,并且能够进入断点进行调试。
功能开发
在可以进行调试以后,又过去了那么一段时间,这段时间苦于看不懂OBJC的代码,也不会用Xcode,然后我又搁置了一段时间。在给自己开发另外一个项目的时候,需要对接印象笔记,但是JavaScript SDK一直401,在头疼SDK对接不成功的过程中,发现开发文档中有Mac本地API,打开发现使用的是AppleScript脚本。
在使用WeChatPlugin这个插件时,就很好奇为什么他能通过给自己发消息实现远程控制。在这个时候有扒过源码,了解到是通过AppleScript来控制Mac上的应用的,并且使用AppleScript做了一个简单的控制网易云播放和切歌的Workflow,那么看到印象笔记支持AppleScript时,就来了兴趣,于是就写了脚本实现了自己项目的一个功能。
功能完成以后,就开始捣鼓AppleScript,发现微信并没有提供字典,我就尝试着进行了几个测试,看是否能通过特定的键盘操作实现找到好友,并给好友发送消息,接着尝试使用脚本来控制微信发消息,结果是成功的,相关脚本如下。
-- 搜索好友,并发送指定消息
tell application "WeChat" to activate
tell application "System Ev