integrateQQShareIOS
集成QQ分享到 iOS 项目,自动配置相关文件和依赖。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.existsSync | FileSystem['existsSync'] | 检查文件是否存在 |
deps.readFileSync | FileSystem['readFileSync'] | 读取文件内容 |
deps.writeFileSync | FileSystem['writeFileSync'] | 写入文件内容 |
deps.copyFileSync | FileSystem['copyFileSync'] | 复制文件 |
deps.statSync | FileSystem['statSync'] | 获取文件状态 |
deps.mkdirSync | FileSystem['mkdirSync'] | 创建目录 |
deps.readdirSync | FileSystem['readdirSync'] | 读取目录内容 |
deps.cp | FileSystem['promises']['cp'] | 异步复制目录 |
deps.join | Path['join'] | 路径拼接 |
deps.dirname | Path['dirname'] | 获取目录名 |
deps.basename | Path['basename'] | 获取文件名 |
deps.xmlParser | XMLParserConstructor | XML 解析器构造函数 |
deps.xmlSerializer | XMLSerializerConstructor | XML 序列化器构造函数 |
环境要求
- Node.js 环境: 需要文件系统、路径等 Node.js API
- @xmldom/xmldom: XML DOM 解析库
bash
npm install @xmldom/xmldom函数签名
typescript
function integrateQQShareIOS(
projectPath: string,
projectName: string,
bundleId: string,
config: QQShareIOSConfig,
deps: IntegrateIOSThirdPartyModuleDeps
): Promise<{ success: boolean; error?: string; logs: string[] }>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectPath | string | 是 | iOS 项目路径 |
projectName | string | 是 | 项目名称(如 'HBuilder-Hello') |
bundleId | string | 是 | 应用 Bundle Identifier |
config | QQShareIOSConfig | 是 | QQ分享配置 |
deps | IntegrateIOSThirdPartyModuleDeps | 是 | 依赖函数对象 |
QQShareIOSConfig
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
appId | string | 是 | QQ AppID |
universalLinks | string | 是 | QQ UniversalLinks(QQ开放平台配置的通用链接域名) |
liblibSharePath | string | 否 | liblibShare.a 文件路径 |
libQQSharePath | string | 否 | libQQShare.a 文件路径 |
tencentOpenAPIPath | string | 否 | TencentOpenAPI.xcframework 文件路径 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ success: boolean; error?: string; logs: string[] }> | 集成结果,包含成功状态、错误信息和日志 |
工作原理
- 复制库文件 - 将QQ分享相关的库文件复制到 iOS 项目中
- 修改 Xcode 项目 - 更新 project.pbxproj,添加库文件引用
- 配置 Info.plist - 添加QQ分享所需的 URL Scheme 和 Universal Links
- 配置权限 - 添加必要的权限配置
注意事项
- 需要在 macOS 环境下运行
- 需要从QQ开放平台获取 AppID 和 Universal Links
- 库文件路径为可选,如果未提供则跳过相应步骤