diff --git a/docs/SDK设计规范.md b/docs/SDK设计规范.md index 43d35d8..aa859e2 100644 --- a/docs/SDK设计规范.md +++ b/docs/SDK设计规范.md @@ -42,16 +42,29 @@ SDK 读取配置文件后,自动调用 **方式 B** 完成完整初始化( App 主动调用,适用于无法提前写入配置文件或需要动态切换环境的场景。 ```ts -await XuqmSDK.initialize({ - appKey: 'your-app-key', - platformUrl: 'https://www.51szyx.com', // 平台地址,必填 - debug: __DEV__, -}) +// 使用默认公有平台(www.51szyx.com) +await XuqmSDK.initialize({ appKey: 'your-app-key', debug: __DEV__ }) + +// 使用私有化部署平台 +await XuqmSDK.initialize({ appKey: 'your-app-key', platformUrl: 'https://your-server.com' }) +``` + +**签名**: + +```ts +interface XuqmInitOptions { + appKey: string + platformUrl?: string // 平台地址,可选;不传则使用内置默认公有平台地址 + debug?: boolean +} + +XuqmSDK.initialize(options: XuqmInitOptions): Promise ``` **行为**: -1. 请求 `{platformUrl}/api/sdk/config?appKey={appKey}` -2. 平台根据 appKey 和租户服务开通情况,返回该 App 专属的服务配置: +1. `platformUrl` 未传时使用内置默认公有平台地址(`DEFAULT_TENANT_PLATFORM_URL`) +2. 请求 `{platformUrl}/api/sdk/config?appKey={appKey}` +3. 平台根据 appKey 和租户服务开通情况,返回该 App 专属的服务配置: ```json { "apiUrl": "...", // 通用 API 地址 @@ -62,20 +75,8 @@ await XuqmSDK.initialize({ "imEnabled": true // 是否开通 IM 服务 } ``` -3. SDK 将服务配置保存,供所有子 SDK 使用。 -4. **失败时直接抛出错误**,不降级,不回退到默认地址。调用方必须处理异常。 - -**签名**: - -```ts -interface XuqmInitOptions { - appKey: string - platformUrl: string // 平台地址,必填 - debug?: boolean -} - -XuqmSDK.initialize(options: XuqmInitOptions): Promise -``` +4. SDK 将服务配置保存,供所有子 SDK 使用。 +5. **失败时直接抛出错误**,不降级。调用方必须处理异常。 --- @@ -471,11 +472,10 @@ App ```ts // 1. 初始化(通常在 App 入口,配置文件模式下可省略) -await XuqmSDK.initialize({ - appKey: 'your-app-key', - platformUrl: 'https://www.51szyx.com', - debug: __DEV__, -}) +// 公有平台:不传 platformUrl +await XuqmSDK.initialize({ appKey: 'your-app-key', debug: __DEV__ }) +// 私有化部署:传入自有平台地址 +// await XuqmSDK.initialize({ appKey: 'your-app-key', platformUrl: 'https://your-server.com' }) // 2. 业务登录(App 自有登录逻辑) const result = await api.login(phone, verifyCode) diff --git a/packages/common/src/config.ts b/packages/common/src/config.ts index f282717..3229603 100644 --- a/packages/common/src/config.ts +++ b/packages/common/src/config.ts @@ -1,5 +1,6 @@ export interface XuqmInitOptions { appKey: string + platformUrl?: string // 不传则使用内置默认公有平台地址 debug?: boolean } diff --git a/packages/common/src/sdk.ts b/packages/common/src/sdk.ts index 544dbc5..04dfae8 100644 --- a/packages/common/src/sdk.ts +++ b/packages/common/src/sdk.ts @@ -42,7 +42,8 @@ export const XuqmSDK = { async initialize(options: XuqmInitOptions): Promise { if (isInitialized()) return ensureInitPromise() - const configUrl = `${DEFAULT_TENANT_PLATFORM_URL}/api/sdk/config?appKey=${options.appKey}` + const baseUrl = options.platformUrl ?? DEFAULT_TENANT_PLATFORM_URL + const configUrl = `${baseUrl}/api/sdk/config?appKey=${options.appKey}` try { const res = await fetch(configUrl) const json = await res.json()