如何获取Expo EAS有效提交链接用于Gchat通知?
解决Expo EAS提交后获取Submission ID并生成可点击链接的问题
问题根源
你当前用的eas-build-on-success是构建流程的成功钩子,而EAS_SUBMISSION_ID是提交流程专属的环境变量——构建流程里根本不会注入这个变量,所以自然拿不到。
解决方案
1. 切换到提交流程的专属钩子
Expo EAS针对提交流程提供了专门的钩子,需要在package.json里配置提交相关的脚本,覆盖成功和失败场景:
{ "scripts": { "eas-submit-on-success": "node scripts/notify-submit-complete.js success", "eas-submit-on-failure": "node scripts/notify-submit-complete.js failure" } }
2. 在脚本中正确获取提交变量并生成链接
提交流程的钩子触发时,Expo会自动注入以下关键环境变量:
EAS_SUBMISSION_ID:提交的唯一IDEAS_SUBMISSION_PLATFORM:提交的平台(ios/android)EAS_SUBMISSION_STATUS:提交状态(SUCCESS/FAILURE)
你可以用这些变量生成Expo Dashboard的提交详情链接,格式固定为:https://expo.dev/accounts/[你的账户名]/projects/[你的项目名]/submissions/[EAS_SUBMISSION_ID]
脚本示例(同时处理成功/失败场景):
// 从环境变量和脚本参数获取信息 const platform = process.env.EAS_SUBMISSION_PLATFORM; const submissionId = process.env.EAS_SUBMISSION_ID; const submitStatus = process.argv[2]; // 接收success/failure参数 // 替换成你的实际账户名和项目名 const accountName = "your-account-name"; const projectName = "your-project-name"; // 生成提交链接 let submissionLink = "Submission link unavailable"; if (submissionId) { submissionLink = `https://expo.dev/accounts/${accountName}/projects/${projectName}/submissions/${submissionId}`; } // 构造Gchat通知消息 const gchatMessage = ` 应用${submitStatus === 'success' ? '提交完成' : '提交失败'}: 平台:${platform} 提交详情:${submissionLink} `; // 这里调用你已实现的Gchat推送逻辑 // sendToGchat(gchatMessage); console.log(gchatMessage);
3. 特殊场景:构建后自动触发提交的处理
如果你的流程是构建完成后自动触发提交,不建议在构建钩子中捕获提交ID(因为提交可能异步执行),最好还是用官方的提交钩子。如果一定要串联,可以在eas-build-on-success里调用eas submit --non-interactive,并通过命令输出提取Submission ID,但这种方式稳定性较差,优先推荐用提交钩子方案。
内容的提问来源于stack exchange,提问作者lindsaymacvean
相关产品推荐
相关产品推荐

