V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tobemaster
V2EX  ›  macOS

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

  •  
  •   tobemaster · 307 天前 · 3412 次点击
    这是一个创建于 307 天前的主题,其中的信息可能已经有所发展或是发生改变。

    缘由

    如果你有多个 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 可以
    第 1 条附言  ·  307 天前
    首先这个只是用来在 Mac 上,快速切换 appleStore 账号,免除退出重新登录的麻烦,不能自动下载

    因为是用 Apple script 实现的,不支持 iOS

    效果:
    applescript toggle zone
    链接: https://lusun.com/v/OZh7cVbCY6u
    第 2 条附言  ·  307 天前
    目前的实现也并不是特别完美,主要是 Apple script GUI 编程,其实有很多坑,需要考虑较多的边缘情况。
    第 3 条附言  ·  307 天前

    切换账号的目的

    切换到 us 账号登录后,App Store 会刷新地区的,美区的多了一个 Arcade 菜单,可以下载美区的软件的,要不然,这么折腾干啥

    29 条回复    2024-01-23 17:23:54 +08:00
    abc2020988877
        1
    abc2020988877  
       307 天前
    看了半天没看懂,多账号快捷登录确实有需求。
    EricChan
        2
    EricChan  
       307 天前
    ios 上能否实现类似的自动切换?
    stevexiaojobs
        3
    stevexiaojobs  
       307 天前
    App Store ?
    vokins
        4
    vokins  
       307 天前 via iPhone
    感谢分享,收藏一下
    goodokgood1
        5
    goodokgood1  
       307 天前
    iphone 强烈需要这个功能
    Aurora0
        6
    Aurora0  
       307 天前
    Aurora0
        7
    Aurora0  
       307 天前
    但是这个只能换区 不能下载
    goodokgood1
        8
    goodokgood1  
       307 天前
    @Aurora0 谢谢,这个是地区切换不是账号切换吧?
    wyman222
        9
    wyman222  
       307 天前
    感谢大佬,急缺这个功能,先谢再试
    hanierming
        10
    hanierming  
       307 天前
    我倒希望 IOS 能有,ios17 的切账号体验太垃圾了。。。
    ViolaH
        11
    ViolaH  
       307 天前 via iPhone
    @hanierming +1 ,切主号以外的号要比以前多点好多下
    vokins
        12
    vokins  
       307 天前 via iPhone
    我是小白,我想知道,切换地区有啥作用?主要是切换以后,不能在当前区进行下载啊,一下载就又跳回原来区商店了
    vokins
        13
    vokins  
       307 天前 via iPhone
    @Aurora0 我是小白,我想知道,切换地区有啥作用?主要是切换以后,不能在当前区进行下载啊,一下载就又跳回原来区商店了。谢谢
    tobemaster
        14
    tobemaster  
    OP
       307 天前
    @Aurora0 #7 切换到 us 账号登录后,App Store 会刷新地区的,美区的多了一个 Arcade 菜单,美区的软件可以下载的


    tobemaster
        15
    tobemaster  
    OP
       307 天前
    @vokins #12 看我追加的留言,可以下载外区商店的应用的
    vokins
        16
    vokins  
       307 天前 via iPhone
    @tobemaster 谢谢,这个我知道,我是想问楼上有个快捷指令切换 ios 的商店,点一下就能切换。我不懂这种切换以后怎么操作?比如现在是国区账号,切换到美区还是没法下载。
    musibii
        17
    musibii  
       307 天前
    @vokins 那就是只能看不能下载,实际上账号并没有切换过去。有个 switchr 能实现多个地区的切换。
    tobemaster
        18
    tobemaster  
    OP
       307 天前
    @vokins #16 这个纯切换地区,不换账号的,没啥用的,苹果认的是账号的所属地,后台肯定是要校验的,大陆的 iCloud 数据存在云上贵州,美区的 iCloud 服务器肯定存在美国了。
    leeruud
        19
    leeruud  
       307 天前
    ios 表示很需要 app store 切账号功能
    ostrichb
        20
    ostrichb  
       307 天前
    Apple Store 和 App Store 是完全不同的兩個東西
    tobemaster
        21
    tobemaster  
    OP
       306 天前
    @ostrichb 你提醒的对
    pianoer88
        22
    pianoer88  
       306 天前 via Android
    非常有价值
    tobemaster
        23
    tobemaster  
    OP
       306 天前
    @pianoer88 对你有用就好
    Aurora0
        24
    Aurora0  
       305 天前 via iPhone
    @vokins 有一些软件只在特定的区有,可以在换区前看看确认一下哪个区有
    不是只有美区,就比如台湾的话也有一些特定上架的游戏
    vokins
        25
    vokins  
       305 天前 via iPhone
    @Aurora0 主要是看完以后不是还需要输入密码登录才能下载吗?我知道港澳台有麻将游戏美区和国区没有
    neochen13
        26
    neochen13  
       305 天前
    可惜没有 alfred 版本的
    Ryanxxx
        27
    Ryanxxx  
       305 天前 via iPhone
    @Aurora0 好东西,以后手机上看各区 app 价格就方便多了
    Bumon
        28
    Bumon  
       304 天前
    用上了,很方便!感谢分享
    tobemaster
        29
    tobemaster  
    OP
       303 天前
    @neochen13 alfred 和 raycast 运行 Apple script 的原理是一样的,都是命令行传参,所以脚本也是适用 Alfred 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:24 · PVG 00:24 · LAX 08:24 · JFK 11:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.