|
1 | | -# 深入小程序系列之三、 ReactNative和小程序混编 |
| 1 | +<p align="center"> |
| 2 | + <a href="https://www.finclip.com?from=github"> |
| 3 | + <img width="auto" src="https://www.finclip.com/mop/document/images/logo.png"> |
| 4 | + </a> |
| 5 | +</p> |
2 | 6 |
|
3 | | -## 背景 |
| 7 | +<p align="center"> |
| 8 | + <strong>FinClip ReactNative DEMO</strong></br> |
| 9 | +<p> |
| 10 | +<p align="center"> |
| 11 | + 本项目提供在 ReactNative 环境中运行小程序的 DEMO 样例 |
| 12 | +<p> |
4 | 13 |
|
5 | | -本文我们将开一下脑洞,在 ReactNative 工程基础上下集成及运行小程序方案。 |
| 14 | +<p align="center"> |
| 15 | + 👉 <a href="https://www.finclip.com?from=github">https://www.finclip.com/</a> 👈 |
| 16 | +</p> |
6 | 17 |
|
7 | | -先看一下效果如下: |
| 18 | +----- |
| 19 | +## 🤔 FinClip 是什么? |
8 | 20 |
|
9 | | - |
| 21 | +有没有**想过**,开发好的微信小程序能放在自己的 APP 里直接运行,只需要开发一次小程序,就能在不同的应用中打开它,是不是很不可思议? |
10 | 22 |
|
11 | | -## 环境搭建 |
12 | | - |
13 | | -``` |
14 | | -npm install -g react-native-cli yarn |
15 | | -``` |
16 | | -官方的[环境搭建文档](https://reactnative.dev/docs/environment-setup)已经有详细的说明,这里不再重复。大家可以看下我本地的环境配置版本,目前整个项目运行稳定,可以借鉴。 |
17 | | - |
18 | | -```bash |
19 | | -$ react-native info |
20 | | -info Fetching system and libraries information... |
21 | | -System: |
22 | | - OS: macOS 10.15.3 |
23 | | - CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz |
24 | | - Memory: 93.87 MB / 16.00 GB |
25 | | - Shell: 3.2.57 - /bin/bash |
26 | | - Binaries: |
27 | | - Node: 16.4.0 - ~/.nvm/versions/node/v10.20.1/bin/node |
28 | | - Yarn: 1.22.4 - ~/.nvm/versions/node/v10.20.1/bin/yarn |
29 | | - npm: 7.18.1 - ~/.nvm/versions/node/v10.20.1/bin/npm |
30 | | - Watchman: Not Found |
31 | | - Managers: |
32 | | - CocoaPods: 1.10.1 - /usr/local/bin/pod |
33 | | - SDKs: |
34 | | - iOS SDK: |
35 | | - Platforms: iOS 14.4, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2 |
36 | | - Android SDK: |
37 | | - API Levels: 22, 23, 24, 25, 26, 27, 28, 29, 30 |
38 | | - Build Tools: 23.0.2, 23.0.3, 25.0.0, 26.0.2, 27.0.0, 27.0.3, 28.0.3, 29.0.2, 30.0.2 |
39 | | - System Images: android-28 | Google APIs Intel x86 Atom, android-30 | Google APIs Intel x86 Atom |
40 | | - Android NDK: 21.3.6528147 |
41 | | - IDEs: |
42 | | - Android Studio: 4.0 AI-193.6911.18.40.6626763 |
43 | | - Xcode: 12.4/12D4e - /usr/bin/xcodebuild |
44 | | - Languages: |
45 | | - Java: 10.0.1 - /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/bin/javac |
46 | | - Python: 2.7.16 - /usr/bin/python |
47 | | - npmPackages: |
48 | | - @react-native-community/cli: Not Found |
49 | | - react: 17.0.2 => 17.0.2 |
50 | | - react-native: 0.65.1 => 0.65.1 |
51 | | - npmGlobalPackages: |
52 | | - *react-native*: Not Found |
53 | | - |
54 | | -``` |
55 | | -## 新建 ReactNative 样例工程 |
| 23 | +有没有**试过**,在自己的 APP 中引入一个 SDK ,应用中不仅可以打开小程序,还能自定义小程序接口,修改小程序样式,是不是觉得更不可思议? |
56 | 24 |
|
| 25 | +这就是 FinClip ,就是有这么多不可思议! |
57 | 26 |
|
58 | | -### 新建 ReactNative 工程 |
| 27 | +## 🤩 效果预览 |
59 | 28 |
|
60 | | -```bash |
| 29 | +**本项目是 FinClip 小程序在 ReactNative 工程基础上下集成及运行小程序 DEMO 演示,您可以按照下方流程测试,验证 FinClip 小程序在 ReactNative 环境下的实际效果。** |
61 | 30 |
|
62 | | -react-native init mopdemo |
| 31 | +先看一下运行效果~ |
63 | 32 |
|
64 | | -``` |
65 | | - |
66 | | -稍等一会... |
67 | | - |
68 | | -初始化项目完成之后,你可以选择两种不同的方式运行 App 在 iOS/Android 平台: |
| 33 | +<p align="center"> |
| 34 | + <a href="#"> |
| 35 | + <img width="auto" src="./docs/mop-react-native-demo.gif"> |
| 36 | + </a> |
| 37 | +</p> |
69 | 38 |
|
70 | | -注意!ReactNative需要依赖本地安装对应的 iOS,Android 开发工具,即需要安装 Xcode 和 AndroidStudio。具体安装使用方法这里不赘述。 |
| 39 | +## ⚙️ 操作步骤 |
| 40 | +### 第一步 引入小程序引擎插件 |
| 41 | +在 `package.json` 文件中引入小程序 ReactNative 插件 |
71 | 42 |
|
72 | | -这里我们用 VSCode+Xcode 作为开发组合环境。 |
| 43 | +`"react-native-mopsdk": "^1.0.1"` |
73 | 44 |
|
| 45 | +### 第二步 初始化引擎 |
| 46 | +在 `main.dart` 文件中增加以下小程序引擎初始化方法。 |
74 | 47 |
|
75 | | -### 集成小程序解析引擎 |
| 48 | +在 Mop.instance.initialize 中,需要用到 `SDK KEY` 和 `SECRET`。 |
76 | 49 |
|
77 | | -这里我们采用凡泰集成免费社区版的小程序解析引擎,只需要 10 行代码量不到即可完成小程序集成。 |
78 | | - |
79 | | -1. 引入小程序引擎插件。在 package.json 文件中引入小程序 ReactNative 插件 |
| 50 | +```objc |
| 51 | +import MopSDK from 'react-native-mopsdk'; |
| 52 | +// 1. mop初始化 |
| 53 | +MopSDK.initialize({ |
| 54 | + appkey: '22LyZEib0gLTQdU3MUauASlb4KFRNRajt4RmY6UDSucA', |
| 55 | + secret: '4a915e447bcbd439', |
| 56 | + apiServer: 'https://api.finclip.com', |
| 57 | + apiPrefix: '/api/v1/mop' |
| 58 | + }, (data) => { |
| 59 | + console.log('message;', data); |
| 60 | + }); |
| 61 | +``` |
80 | 62 |
|
81 | | -```javascript |
82 | | -"react-native-mopsdk": "^1.0.2" |
| 63 | +### 第三步 打开小程序 |
| 64 | +```objc |
| 65 | +MopSDK.openApplet('appid','','',(data)=>{}); |
83 | 66 | ``` |
84 | 67 |
|
85 | | -android 在 build.gradle 添加 maven 配置 |
| 68 | +- **SDK KEY** 和 **SDK SECRET** 可以从 [FinClip](https://finclip.com/#/home) 获取,点 [这里](https://finclip.com/#/register) 注册账号; |
| 69 | +- 进入平台后,在「应用管理」页面添加你自己的包名后,点击「复制」即可获得 key\secret\apisever 字段; |
| 70 | +- **apiServer** 和 **apiPrefix** 是固定字段,请直接参考本 DEMO ; |
| 71 | +- **小程序 ID** 是管理后台上架的小程序 APP ID,需要在「小程序管理」中创建并在「应用管理」中关联; |
| 72 | +> 小程序 ID 与 微信小程序ID 不一样哦!(这里是特指 FinClip 平台的 ID ) |
86 | 73 |
|
87 | | -```bash |
88 | | - maven { |
89 | | - url "https://gradle.finogeeks.club/repository/applet/" |
90 | | - credentials { |
91 | | - username "applet" |
92 | | - password "123321" |
93 | | - } |
94 | | - } |
95 | | -``` |
96 | 74 |
|
97 | | -iOS 需要重新 pod install |
| 75 | +## 📋 接口文档 |
| 76 | +[点击这里](https://www.finclip.com/mop/document/introduce/quickStart/intergration-guide.html#_4-reactnative-%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90) 查看 React Native 快速集成文档 |
98 | 77 |
|
99 | | -2. 在 App.js 文件中增加以下小程序引擎初始化方法。 Mop.instance.initialize 这里需要用到 sdkkey 和 secret。可以直接在[https://mp.finogeeks.com](https://mp.finogeeks.com) 免费注册获取。注册使用方法可以参考 [接入指引](https://mp.finogeeks.com/mop/document/introduce/access/mechanism.html) |
| 78 | +## 🔗 常用链接 |
| 79 | +以下内容是您在 FinClip 进行开发与体验时,常见的问题与指引信息 |
100 | 80 |
|
101 | | -```javascript |
102 | | -import MopSDK from 'react-native-mopsdk'; |
103 | | -// 1. mop初始化 |
104 | | - MopSDK.initialize( |
105 | | - { |
106 | | - appkey: '22LyZEib0gLTQdU3MUauASlb4KFRNRajt4RmY6UDSucA', |
107 | | - secret: 'c5cc7a8c14a2b04a', |
108 | | - apiServer: 'https://api.finclip.com', |
109 | | - apiPrefix: '/api/v1/mop', |
110 | | - }, |
111 | | - data => { |
112 | | - console.log('message;', data); |
113 | | - const s = JSON.stringify(data); |
114 | | - this.setState({ |
115 | | - status: 'native callback received', |
116 | | - message: s, |
117 | | - }); |
118 | | - }, |
119 | | - ); |
120 | | -``` |
| 81 | +- [FinClip 官网](https://www.finclip.com/#/home) |
| 82 | +- [示例小程序](https://www.finclip.com/#/market) |
| 83 | +- [文档中心](https://www.finclip.com/mop/document/) |
| 84 | +- [SDK 部署指南](https://www.finclip.com/mop/document/introduce/quickStart/intergration-guide.html) |
| 85 | +- [小程序代码结构](https://www.finclip.com/mop/document/develop/guide/structure.html) |
| 86 | +- [iOS 集成指引](https://www.finclip.com/mop/document/runtime-sdk/ios/ios-integrate.html) |
| 87 | +- [Android 集成指引](https://www.finclip.com/mop/document/runtime-sdk/android/android-integrate.html) |
| 88 | +- [Flutter 集成指引](https://www.finclip.com/mop/document/runtime-sdk/flutter/flutter-integrate.html) |
121 | 89 |
|
122 | | -3. 打开小程序 |
| 90 | +## ☎️ 联系我们 |
| 91 | +微信扫描下面二维码,关注官方公众号 **「凡泰极客」**,获取更多精彩内容。<br> |
| 92 | +<img width="150px" src="https://www.finclip.com/mop/document/images/ic_qr.svg"> |
123 | 93 |
|
124 | | -```javascript |
125 | | -MopSDK.openApplet('appid','','',(data)=>{}); |
126 | | -``` |
| 94 | +微信扫描下面二维码,邀请进官方微信交流群(加好友备注:finclip 咨询),获取更多精彩内容。<br> |
| 95 | +<img width="150px" src="https://finclip-homeweb-1251849568.cos.ap-guangzhou.myqcloud.com/images/ldy111.jpg"> |
127 | 96 |
|
| 97 | +## Stargazers |
| 98 | +[](https://github.com/finogeeks/finclip-react-native-demo/stargazers) |
128 | 99 |
|
129 | | -* **SDKKEY** 和 **Secret** 可以从前面部署的社区版的管理后台获取。 |
130 | | -* **apiServer** 为这里是小程序生态后端的服务地址也就是前文所输入的`IP:端口`。 |
131 | | -* **小程序id** 为在管理后台上架的小程序唯一ID(在小程序小架时自动生成) |
132 | | -* 上述的参数可以在前文服务器部署的后台界面上获取,亦可以在没有部署服务端的情况下在[https://mp.finogeeks.com](https://mp.finogeeks.com)快速注册,免费获取。 |
133 | | -* **重要事情说三遍,您可以在官方的github仓库中查看示例代码** [https://github.com/finogeeks/mop-react-native-demo](https://github.com/finogeeks/mop-react-native-demo) |
| 100 | +## Forkers |
| 101 | +[](https://github.com/finogeeks/finclip-react-native-demo/network/members) |
0 commit comments