Alfred实现一键find iPhone
Mac的Find My功能挺常用的,选择某个Apple设备播放声音,同时查看设备的大致位置及在线状态。但无论是网页版还是app版,操作体验还是繁琐了些,并且加载也很慢。
个人是Alfred效率粉,借着周末,尝试开发workflow解决使用效率问题。
实现基础
Find My有App版及Web版,App版没有提供Apple Script支持,同时 GUI自动化体验也并不好,因此放弃。
Web版iCloud- find,可以抓包分析接口请求,这样就可以利用workflow进行实现。
遇到的坑
iCloud登陆如果是第一次在新的web客户端下登陆会开启MFA,且请求中牵扯到很多认证信息参数,因此决定了首次登陆必须在Web站点下进行,从而使iCloud信任该设备,同时通过抓取请求获取了认证信息相关的所有参数
iCloud接口- cookie有效期极短,每过一段时间,认证信息都会刷新,因此如果cookie作为Alfred参数,需要不断更新值,同时为了避免用户每次手动拷贝信息到workflow配置中,需要存储iCloud ID及密码,从而在请求失效时自动登录从而获取新的cookie信息
持久化存储cookie等认证信息比较好的方式是存储在workflow环境变量中,当然也可以文件存储。这里选择workflow环境变量,为了永久/动态写入新的值workflow中,需要执行Apple Script命令来解决
不同设备需要显示对应设备图片,好在有开源项目整理了Apple设备编号/名称,这样方便查询图片
实现效果
下载地址:戳这里
- ⌥ ⏎ 播放声音
- ⌘ ⏎ iCloud Web浏览
- 绿色及白色小点代表设备当前状态,绿色表示在线
配置
因为iCloud的安全性较高,因此 workflow也无法做到安装即可使用,需要进行一些参数的配置
。
为了使得iCloud信任,必须首先登录一次web版,同时获取访问iCloud- find my后的任意请求中的部分参数配置到workflow- environment中。同时登录信息有效期极短,为了实现免登陆,因此需要配置iCloud账户/密码。
写在最后
如上实现后,即可高速唤起某Apple设备了,perfect!