docs(sdk): 添加 React Native SDK 文档和 Android/HarmonyOS 发版脚本
- 新增 XuqmGroup React Native SDK 使用文档,包含安装、初始化、HTTP客户端、IM模块、推送模块、版本管理等功能说明 - 添加 Android Gradle 发版任务脚本,支持构建发布 APK 并上传到更新服务 - 添加 HarmonyOS hvigorw 发版任务脚本,支持 HAP 包构建和上传功能 - 实现多平台版本检查、自动重连、灰度发布等发版流程自动化 - 集成商店提交、定时发布、Webhook 回调等发布后处理功能
这个提交包含在:
父节点
67d54bf1f2
当前提交
7d63672a7a
33
README.md
33
README.md
@ -1,14 +1,22 @@
|
||||
# XuqmGroup React Native SDK 文档
|
||||
|
||||
> TypeScript · React Native 0.76+ · 发布至 Nexus npm
|
||||
> `rn-sdk` 为内部基础包,业务方正常接入时使用 `rn-common` 和各业务模块即可。
|
||||
|
||||
## 安装
|
||||
|
||||
`rn-common` 可以独立使用;`rn-im` / `rn-push` / `rn-update` 会自动带上 `rn-common` 和 `rn-sdk`;`rn-sdk` 是内部基础包,不建议业务方直接引用。
|
||||
|
||||
```bash
|
||||
# .npmrc 已配置私有 registry,直接安装
|
||||
npm install @xuqm/rn-sdk
|
||||
# 基础能力
|
||||
npm install @xuqm/rn-common
|
||||
# 或
|
||||
yarn add @xuqm/rn-sdk
|
||||
yarn add @xuqm/rn-common
|
||||
|
||||
# 单独接入某个业务模块时,`rn-common` 会作为依赖自动安装
|
||||
npm install @xuqm/rn-im
|
||||
npm install @xuqm/rn-push
|
||||
npm install @xuqm/rn-update
|
||||
|
||||
# 依赖安装(peerDependencies)
|
||||
npm install @react-native-async-storage/async-storage
|
||||
@ -37,7 +45,7 @@ XuqmGroup-RNSDK/src/
|
||||
### 1. 初始化(App 入口)
|
||||
|
||||
```typescript
|
||||
import { XuqmSDK } from '@xuqm/rn-sdk'
|
||||
import { XuqmSDK } from '@xuqm/rn-common'
|
||||
|
||||
await XuqmSDK.init({
|
||||
appKey: 'ak_your_app_key',
|
||||
@ -60,11 +68,14 @@ Token 持久化存储于 `AsyncStorage`,App 重启后自动恢复。
|
||||
## HTTP 客户端
|
||||
|
||||
```typescript
|
||||
import { http } from '@xuqm/rn-sdk'
|
||||
import { apiRequest } from '@xuqm/rn-common'
|
||||
|
||||
// 自动附加 Bearer Token
|
||||
const data = await http.get<UserInfo>('/api/user/profile')
|
||||
const result = await http.post<LoginResp>('/api/auth/login', { account, password })
|
||||
const data = await apiRequest<UserInfo>('/api/user/profile')
|
||||
const result = await apiRequest<LoginResp>('/api/auth/login', {
|
||||
method: 'POST',
|
||||
body: { account, password },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
@ -74,7 +85,7 @@ const result = await http.post<LoginResp>('/api/auth/login', { account, password
|
||||
### ImClient
|
||||
|
||||
```typescript
|
||||
import { ImClient, MsgType, ChatType } from '@xuqm/rn-sdk'
|
||||
import { ImClient, MsgType, ChatType } from '@xuqm/rn-im'
|
||||
|
||||
const im = new ImClient()
|
||||
|
||||
@ -114,7 +125,7 @@ useEffect(() => {
|
||||
|
||||
```typescript
|
||||
import { useEffect, useState, useRef } from 'react'
|
||||
import { ImClient, ImMessage } from '@xuqm/rn-sdk'
|
||||
import { ImClient, ImMessage } from '@xuqm/rn-im'
|
||||
|
||||
export function useIm() {
|
||||
const [messages, setMessages] = useState<ImMessage[]>([])
|
||||
@ -182,7 +193,7 @@ enum MsgType {
|
||||
## 推送模块
|
||||
|
||||
```typescript
|
||||
import { PushSDK } from '@xuqm/rn-sdk'
|
||||
import { PushSDK } from '@xuqm/rn-push'
|
||||
|
||||
// 在获取到设备推送 Token 后调用(如小米、华为推送回调)
|
||||
await PushSDK.registerToken({
|
||||
@ -200,7 +211,7 @@ await PushSDK.registerToken({
|
||||
### 检查 App 更新
|
||||
|
||||
```typescript
|
||||
import { UpdateSDK } from '@xuqm/rn-sdk'
|
||||
import { UpdateSDK } from '@xuqm/rn-update'
|
||||
|
||||
const result = await UpdateSDK.checkAppUpdate({
|
||||
appId: 'ak_xxx',
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
"react-native": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"private": true,
|
||||
"files": ["src"],
|
||||
"workspaces": ["packages/*"],
|
||||
"publishConfig": {
|
||||
"registry": "https://nexus.xuqinmin.com/repository/npm-hosted/"
|
||||
@ -20,7 +21,12 @@
|
||||
"react-native": ">=0.76.0",
|
||||
"@react-native-async-storage/async-storage": ">=1.21.0"
|
||||
},
|
||||
"dependencies": {},
|
||||
"dependencies": {
|
||||
"@xuqm/rn-common": ">=0.2.0",
|
||||
"@xuqm/rn-im": ">=0.2.0",
|
||||
"@xuqm/rn-push": ">=0.2.0",
|
||||
"@xuqm/rn-update": ">=0.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5.9.3",
|
||||
"@types/react": "^19.0.0",
|
||||
|
||||
@ -11,8 +11,11 @@
|
||||
"registry": "https://nexus.xuqinmin.com/repository/npm-hosted/"
|
||||
},
|
||||
"scripts": { "typecheck": "tsc --noEmit" },
|
||||
"peerDependencies": {
|
||||
"dependencies": {
|
||||
"@xuqm/rn-common": ">=0.2.0",
|
||||
"@xuqm/rn-sdk": ">=0.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nozbe/watermelondb": ">=0.27.0",
|
||||
"react-native": ">=0.76.0"
|
||||
},
|
||||
|
||||
@ -11,8 +11,11 @@
|
||||
"registry": "https://nexus.xuqinmin.com/repository/npm-hosted/"
|
||||
},
|
||||
"scripts": { "typecheck": "tsc --noEmit" },
|
||||
"peerDependencies": {
|
||||
"dependencies": {
|
||||
"@xuqm/rn-common": ">=0.2.0",
|
||||
"@xuqm/rn-sdk": ">=0.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react-native": ">=0.76.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@ -11,8 +11,11 @@
|
||||
"registry": "https://nexus.xuqinmin.com/repository/npm-hosted/"
|
||||
},
|
||||
"scripts": { "typecheck": "tsc --noEmit" },
|
||||
"peerDependencies": {
|
||||
"dependencies": {
|
||||
"@xuqm/rn-common": ">=0.2.0",
|
||||
"@xuqm/rn-sdk": ">=0.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react-native": ">=0.76.0",
|
||||
"@react-native-async-storage/async-storage": ">=1.21.0"
|
||||
},
|
||||
|
||||
38
src/index.ts
38
src/index.ts
@ -1,31 +1,9 @@
|
||||
// @xuqm/rn-sdk — convenience meta-package re-exporting all modules.
|
||||
// For tree-shaking and smaller bundles, import from individual packages:
|
||||
// @xuqm/rn-common | @xuqm/rn-im | @xuqm/rn-push | @xuqm/rn-update
|
||||
// @xuqm/rn-sdk — hidden core package.
|
||||
// App code should import @xuqm/rn-common directly; this package is installed
|
||||
// transitively by @xuqm/rn-im / @xuqm/rn-push / @xuqm/rn-update.
|
||||
|
||||
export { XuqmSDK } from '../packages/common/src'
|
||||
export type { XuqmInitOptions, DeviceInfo } from '../packages/common/src'
|
||||
export { getDeviceId, getDeviceInfo, detectPushVendor, setUserId, getUserId } from '../packages/common/src'
|
||||
export { ScaledImage } from '../packages/common/src'
|
||||
|
||||
export { ImSDK } from '../packages/im/src'
|
||||
export { ImClient } from '../packages/im/src'
|
||||
export { uploadFile } from '../packages/im/src'
|
||||
export { listFriends, addFriend, removeFriend, editMessage } from '../packages/im/src'
|
||||
export type {
|
||||
ImMessage, ImGroup, ChatType, MsgType, MsgStatus,
|
||||
ImEventListener, SendMessageParams,
|
||||
ConversationData,
|
||||
HistoryQuery,
|
||||
PageResult,
|
||||
FriendRequest,
|
||||
GroupJoinRequest,
|
||||
BlacklistEntry,
|
||||
MessageSearchParams,
|
||||
UploadResult,
|
||||
} from '../packages/im/src'
|
||||
|
||||
export { PushSDK } from '../packages/push/src'
|
||||
export type { PushVendor } from '../packages/push/src'
|
||||
|
||||
export { UpdateSDK } from '../packages/update/src'
|
||||
export type { PluginMeta, AppUpdateInfo, RnUpdateInfo, CachedRnBundle } from '../packages/update/src'
|
||||
export { XuqmSDK } from '@xuqm/rn-common'
|
||||
export type { XuqmInitOptions, DeviceInfo } from '@xuqm/rn-common'
|
||||
export { getDeviceId, getDeviceInfo, detectPushVendor, setUserId, getUserId } from '@xuqm/rn-common'
|
||||
export { ScaledImage } from '@xuqm/rn-common'
|
||||
export { apiRequest } from '@xuqm/rn-common'
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户