https://github.com/puti94/react-native-uni
react-native 桥接 uni小程序sdk
https://github.com/puti94/react-native-uni
android ios react-native rn
Last synced: about 1 year ago
JSON representation
react-native 桥接 uni小程序sdk
- Host: GitHub
- URL: https://github.com/puti94/react-native-uni
- Owner: puti94
- License: mit
- Created: 2020-06-13T07:32:51.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-17T08:08:52.000Z (almost 6 years ago)
- Last Synced: 2025-03-26T02:34:55.838Z (about 1 year ago)
- Topics: android, ios, react-native, rn
- Language: Objective-C
- Homepage:
- Size: 46 MB
- Stars: 20
- Watchers: 1
- Forks: 8
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# react-native-uni
react-native 桥接uni小程序sdk
[uni小程序SDK](https://nativesupport.dcloud.net.cn/)
> uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
有nvue部分底层使用weex实现的,但是感觉体验还是没有rn好。rn在国内又不太接地气,没有uni各种完善的第三方框架,就可以集成uni小程序sdk,使我们的react-native应用具有跟微信小程序类似的功能。

## Installation
###
```sh
npm install react-native-uni --save
//or
yarn add react-native-uni
```
## Usage
```js
import * as Uni from "react-native-uni";
// ...
Uni.initialize({...})
Uni.launch({appid: '__UNI__7586C24'})
```
rn >= 0.60 自动链接 `cd ios && pod install`
rn < 0.60
```bash
react-native link react-native-webview
```
安卓有些配置项请参考example项目
## 注意事项
[uni小程序官网](https://nativesupport.dcloud.net.cn/)
此项目是在react-native中集成uni的小程序sdk,相关注意事项参考官方文档
由于依赖weex等的相关包比较大,只是集成基础包应用都会大个20M左右。
此桥接库只默认集成了基础包,如果提示缺少模块,只需要去官网下载sdk添加缺少的包
## Api
### initialize(params?: Config): Promise
```ts
type Config = {
// 胶囊按钮的标题和标识
items?: { title: string; key: string }[];
//是否显示胶囊按钮
capsule?: boolean;
//安卓独有,胶囊按钮字体大小
fontSize?: string;
//安卓独有,胶囊按钮字体颜色
fontColor?: string;
//安卓独有,胶囊按钮字体宽度
fontWeight?: string;
};
```
初始化框架,越前面越好,只需要调用一次
### setSplashView(component: ComponentType<{ appid: string }>)
设置小程序开启的启动页面
### launch(arg: LaunchArgs): Promise
```ts
type LaunchArgs = {
//uni小程序id
appid: string;
//需要传给小程序的参数
params?: Object;
//打开小程序的路径
path?: string;
};
```
打开小程序。
### isExistsApp(appid: string): Promise
根据小程序id判断是否存在小程序
### getRuningAppid(): Promise
获取真正运行的小程序id
### getAppVersionInfo(appid: string): Promise<{ name: string; code: number } | null>
获取小程序版本信息
### getAppBasePath(appid: string): Promise
获取小程序运行路径
### getCurrentPageUrl(): Promise
获取当前小程序的直连url
### closeCurrentApp(): Promise
关闭当前小程序
### releaseWgtToRunPathFromPath(path: string): Promise
释放wgt文件
### onMenuClick(cb: (key: any) => void)
监听胶囊自定义按键启动
### onEventReceive(cb: (data: any) => void)
监听小程序向app发送的消息
### onAppClose(cb: () => void)
监听小程序关闭
## QA
#### 打release包出现以下错误
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
More than one file was found with OS independent path 'AndroidManifest.xml'
`android/build.gradle` 修改gradle版本 `classpath("com.android.tools.build:gradle:3.4.0")`
## Contributing
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
## License
MIT