Alfred实现一键find iPhone

Mac的Find My功能挺常用的,选择某个Apple设备播放声音,同时查看设备的大致位置及在线状态。但无论是网页版还是app版,操作体验还是繁琐了些,并且加载也很慢。

个人是Alfred效率粉,借着周末,尝试开发workflow解决使用效率问题。

实现基础

Find My有App版及Web版,App版没有提供Apple Script支持,同时 GUI自动化体验也并不好,因此放弃。

Web版iCloud- find,可以抓包分析接口请求,这样就可以利用workflow进行实现。

遇到的坑

  1. iCloud登陆如果是第一次在新的web客户端下登陆会开启MFA,且请求中牵扯到很多认证信息参数,因此决定了首次登陆必须在Web站点下进行,从而使iCloud信任该设备,同时通过抓取请求获取了认证信息相关的所有参数

  2. iCloud接口- cookie有效期极短,每过一段时间,认证信息都会刷新,因此如果cookie作为Alfred参数,需要不断更新值,同时为了避免用户每次手动拷贝信息到workflow配置中,需要存储iCloud ID及密码,从而在请求失效时自动登录从而获取新的cookie信息

  3. 持久化存储cookie等认证信息比较好的方式是存储在workflow环境变量中,当然也可以文件存储。这里选择workflow环境变量,为了永久/动态写入新的值workflow中,需要执行Apple Script命令来解决

  4. 不同设备需要显示对应设备图片,好在有开源项目整理了Apple设备编号/名称,这样方便查询图片

实现效果

下载地址:戳这里

  • ⌥ ⏎ 播放声音
  • ⌘ ⏎ iCloud Web浏览
  • 绿色及白色小点代表设备当前状态,绿色表示在线

配置

因为iCloud的安全性较高,因此 workflow也无法做到安装即可使用,需要进行一些参数的配置

为了使得iCloud信任,必须首先登录一次web版,同时获取访问iCloud- find my后的任意请求中的部分参数配置到workflow- environment中。同时登录信息有效期极短,为了实现免登陆,因此需要配置iCloud账户/密码。

写在最后

如上实现后,即可高速唤起某Apple设备了,perfect!

相关文档