用 Apple Script 实现 Apple Store 快捷换区登录

2024-01-19 13:42:03 +08:00
 tobemaster

缘由

如果你有多个 Apple Store 账号,比如一个国区账号,一个美区账号。切来切去,每次都要退出重新登录,而且你可能会把两个账号的用户名和密码保存在某处,比如密码管理器等等。用到的时候,还得打开密码管理器等等,总之切换起来,流程比较繁琐。

Mac 上有个原生自带的自动化的工具,就是 Apple Script ,可以通过编程的方式控制应用程序的执行。

先说明一下,我的 macOS 的系统语言是英文,中文下的菜单是中文,Apple script 需要做不同的适配,以下的截图以英文为准

分析与实现

先观察一下手动登录 Apple Store 的过程

  1. 打开 Apple Store 的应用程序,看到 Apple Store 的应用窗口,对应的菜单栏也是 Apple Store 的菜单栏,如果未登录任何 Apple id ,Apple store 的菜单栏 store 菜单项的最后一个 菜单是 Sign In,如果已登录了某个 Apple id ,对应的最后一个菜单是 Sign Out

  2. 如果未登录,直接点击 Sign In ,如果是已登陆,先点击 Sign Out后,等待退出后,再点击 Sign In, 窗口会弹出一个小的弹窗,输入 Apple id 的账号,回车或者点击右下角的 Sign in 按钮

  1. 苹果会先校验一下账号,然后,才露出密码输入框(有点鸡贼,但是更安全吧),输完密码,回车或者点击右下角的 Sign in 按钮,如果账号没有开启二次验证,账号密码都正确,应该会正常登录,偶尔抽风,需要登录 2 次才成功。如果开启了 2 次验证,苹果默认会发验证码到已登陆的 Apple 设备上,如果接收通知的 Apple 设备不在身边,选择‘没有收到验证码’,换成用手机接收短信,填写收到的验证码即可。

下面是用 raycast 的 shell command ,Apple Script 实现自动登录,为了支持传参,运行在 raycast 环境下

参考代码:github gist

示例代码中,有非常详尽的注释

踩坑点

  1. 菜单项的名称和系统语言的设置项有关(需要做适配,上面的示例仅适配了简体中文和英文)
  2. 点击账户名后,text field 的索引会变化
  3. 文件编码:用 raycast 创建脚本,默认为 Western (Mac Roman) macroman ,使用 Mac 自带的脚本编辑器编辑后,会改变编码格式,所以推荐用 vscode 等文本编辑器,raycast 对于 utf-8 with BOM ,不能识别,utf-8 可以
4318 次点击
所在节点    macOS
30 条回复
tobemaster
2024-01-20 02:06:16 +08:00
@ostrichb 你提醒的对
pianoer88
2024-01-20 06:02:18 +08:00
非常有价值
tobemaster
2024-01-20 22:14:56 +08:00
@pianoer88 对你有用就好
Aurora0
2024-01-21 19:36:49 +08:00
@vokins 有一些软件只在特定的区有,可以在换区前看看确认一下哪个区有
不是只有美区,就比如台湾的话也有一些特定上架的游戏
vokins
2024-01-21 21:07:43 +08:00
@Aurora0 主要是看完以后不是还需要输入密码登录才能下载吗?我知道港澳台有麻将游戏美区和国区没有
neochen13
2024-01-21 21:38:55 +08:00
可惜没有 alfred 版本的
Ryanxxx
2024-01-21 21:48:20 +08:00
@Aurora0 好东西,以后手机上看各区 app 价格就方便多了
Bumon
2024-01-22 18:17:40 +08:00
用上了,很方便!感谢分享
tobemaster
2024-01-23 17:23:54 +08:00
@neochen13 alfred 和 raycast 运行 Apple script 的原理是一样的,都是命令行传参,所以脚本也是适用 Alfred 的
qsnow6
193 天前
OP ,这个脚本怎么安装?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1009985

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX