ios - Nativescript tns 发布 ios 无法可靠运行,因为 Apple 在 App Store Connect 上强制执行 2FA
问题描述
我有一个 Nativescript 应用程序,我想将它发布到 App Store Connect。我正在使用这样的 CI/CD 系统设置:
- 第 1 步:使用“ tns build ”构建要发布的应用程序,它会输出一个 .ipa 文件
- 第二步:运行命令“ tns publish ios ”,并使用特定的Apple ID登录App Store Connect并上传.ipa文件
该系统过去运行良好,直到 Apple 于 2021 年 3 月开始强制所有与 App Store Connect 交互的帐户执行 2FA。
从那时起,命令“ tns publish ios ”一直无法将二进制文件发送到 App Store Connect,提示身份验证错误,并提示我在我使用的 Apple ID 上启用 2FA。
我已完成以下步骤以使我的 CI/CD 系统再次工作:
- 在我之前提到的特定 Apple ID 上启用 2FA
- 为这个 Apple ID 设置一个应用程序专用密码,我的 CI/CD 软件将使用该密码
- 使用 Mac 机器上的“ tns apple-login ”工具为这个 Apple ID 生成一个有效的会话令牌
- 在这段文档https://v7.docs.nativescript.org/angular/tooling/docs-cli/publishing/publish-ios之后,将特定于应用程序的密码和会话令牌作为参数添加到“ tns publish ios ”
完成此操作后,我可以使用我的 CI/CD 系统在 App Store Connect 上成功构建和上传 iOS 应用程序构建......几个小时。发生这种情况后,我必须使用“ tns apple-login ”重新生成一个新的会话令牌。
对“ tns publish ios ”命令的 2FA 支持似乎是事后诸葛亮。我无法想象每次我想上传二进制文件时都必须登录是一个很好的长期解决方案。
还有其他人对 Nativescript 应用程序有这个问题吗?使用 CI/CD 系统将已构建的 .ipa 文件上传到 App Store Connect 有什么好的替代方法吗?
解决方案
只是为了为其他流浪者提供这个问题的答案,这就是我为解决我的问题所做的事情。
从那以后我们停止使用tns publish ios,它显然是为手动使用而设计的。值得庆幸的是,那里有解决方案。
Apple 在 CI/CD 系统上处理 2FA 的解决方案是使用App Store Connect API。
有关其工作原理的更多信息:https ://developer.apple.com/documentation/appstoreconnectapi
此外,支持 CI/CD 系统的 App Store Connect API 的tns publish ios的一个很好的替代品是Fastlane。
他们有这个用例的文档页面,我遵循了:https ://docs.fastlane.tools/app-store-connect-api/
推荐阅读
- azure - Azure 机器学习设计器 - 编辑加载时卡住的列
- javascript - JavaScript 游戏(画布)角色移动和图像显示
- python - 无法解码 JWT 令牌
- php - Mysqli bind_param 未设置但仍在执行
- excel - SharePoint、Excel、CDN 数据表
- python - 单个单元格中的多个数据的相关性分析
- javascript - 如何将事件对象添加到回调函数?
- git - 如何从 GitHub 版本下载所有文件?
- opencart-3 - 编辑 OC3 特色模块容器背景颜色
- c++ - 如何通过使用 LibJIT 编译的函数传递 C++ 异常?