前言
在小程序发布和提审的过程中,经常需要手动切换
baseUrl到prod(正式版)环境。这种方式不仅繁琐,还容易出错。因此,设计一种能够根据不同环境自动切换baseUrl的方案,不仅可以简化提审流程,还能有效避免人为失误。
本文将详细讲解如何实现小程序在启动时自动判断环境并切换 baseUrl,从而实现流程优化。
实现思路
通过 uni.getAccountInfoSync() 获取当前环境版本(开发版、体验版、正式版等),再根据环境设置相应的 baseUrl。以下是App.vue实现的具体代码:
参考代码
<script>
export default {
globalData: {
// 动态 baseUrl 变量
baseUrl: null,
// 生产环境的 baseUrl
prodBaseUrl: 'https://prod.example.com',
// 开发环境的 baseUrl
devBaseUrl: 'https://dev.example.com',
},
onLaunch() {
console.log('App Launch');
// 初始化 baseUrl
this.initializeBaseUrl();
},
methods: {
/**
* 初始化 baseUrl
*/
initializeBaseUrl() {
if (!this.globalData.baseUrl) {
// 获取账号信息
const accountInfo = uni.getAccountInfoSync();
// 获取小程序的当前环境版本:develop(开发版)、trial(体验版)、release(正式版)、gray(灰度版,仅支付宝小程序支持)
const envVersion = accountInfo.miniProgram.envVersion;
// 根据环境版本设置 baseUrl
this.globalData.baseUrl = envVersion === 'release'
? this.globalData.prodBaseUrl
: this.globalData.devBaseUrl;
console.log(
`[App] 当前环境:${envVersion === 'release' ? '【正式版】' : '【非正式版】'},baseUrl 设置为: ${this.globalData.baseUrl}`
);
} else {
console.log('[App] baseUrl 已初始化:', this.globalData.baseUrl);
}
},
},
};
</script>
<style lang="scss">
/* 样式按需添加 */
</style>
uni.getAccountInfoSync() 官方文档说明
以下为 uni.getAccountInfoSync() 的相关说明:
- 接口功能:获取小程序账号信息。
- 返回值字段:
miniProgram.envVersion:小程序运行环境版本,可能值包括:develop(开发版)、trial(体验版)、release(正式版)、gray(灰度版,仅支付宝支持)。
注意事项
- 接口调用时机:
如果小程序启动时需要立即调用接口,请确保在baseUrl初始化完成后再执行接口调用。否则可能因未正确设置baseUrl导致调用失败。 - 测试账号提交审核:
在提交审核时,审核人员使用的版本通常为develop(开发版)。请务必填写开发版对应的测试账号和环境信息,否则可能会审核不通过。
结语
通过以上方案,小程序能够根据环境自动切换
baseUrl,大幅简化了提审和发布流程,同时也降低了人为错误的风险。