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

307 天前
 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 可以
3413 次点击
所在节点    macOS
29 条回复
abc2020988877
307 天前
看了半天没看懂,多账号快捷登录确实有需求。
EricChan
307 天前
ios 上能否实现类似的自动切换?
stevexiaojobs
307 天前
App Store ?
vokins
307 天前
感谢分享,收藏一下
goodokgood1
307 天前
iphone 强烈需要这个功能
Aurora0
307 天前
Aurora0
307 天前
但是这个只能换区 不能下载
goodokgood1
307 天前
@Aurora0 谢谢,这个是地区切换不是账号切换吧?
wyman222
307 天前
感谢大佬,急缺这个功能,先谢再试
hanierming
307 天前
我倒希望 IOS 能有,ios17 的切账号体验太垃圾了。。。
ViolaH
307 天前
@hanierming +1 ,切主号以外的号要比以前多点好多下
vokins
307 天前
我是小白,我想知道,切换地区有啥作用?主要是切换以后,不能在当前区进行下载啊,一下载就又跳回原来区商店了
vokins
307 天前
@Aurora0 我是小白,我想知道,切换地区有啥作用?主要是切换以后,不能在当前区进行下载啊,一下载就又跳回原来区商店了。谢谢
tobemaster
307 天前
@Aurora0 #7 切换到 us 账号登录后,App Store 会刷新地区的,美区的多了一个 Arcade 菜单,美区的软件可以下载的


tobemaster
307 天前
@vokins #12 看我追加的留言,可以下载外区商店的应用的
vokins
307 天前
@tobemaster 谢谢,这个我知道,我是想问楼上有个快捷指令切换 ios 的商店,点一下就能切换。我不懂这种切换以后怎么操作?比如现在是国区账号,切换到美区还是没法下载。
musibii
307 天前
@vokins 那就是只能看不能下载,实际上账号并没有切换过去。有个 switchr 能实现多个地区的切换。
tobemaster
307 天前
@vokins #16 这个纯切换地区,不换账号的,没啥用的,苹果认的是账号的所属地,后台肯定是要校验的,大陆的 iCloud 数据存在云上贵州,美区的 iCloud 服务器肯定存在美国了。
leeruud
307 天前
ios 表示很需要 app store 切账号功能
ostrichb
307 天前
Apple Store 和 App Store 是完全不同的兩個東西

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

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

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

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

© 2021 V2EX