React-Native与原生的模块桥接(一)
来源:互联网 发布:db2 备份数据库 编辑:程序博客网 时间:2024/05/19 00:39
目前的React-Native方面,虽然大部分逻辑等都在前端即可完成,但是必要支付、第三方登陆、分享、地图、定位等等模块功能,还是应该让原生的Android做好供给前端直接使用。
本篇例子仅仅用来说明如何进行 模块桥接。
模块桥接里涉及到的通信机制,可以移步React-Native 与原生的3种交互通信(Android)
废话不多说,下面看看我们如何桥接一个第三方登陆模块。
PS:为了方便让原生开发使用,建议将桥接的不论是模块还是View都进行模块化、组件化。
效果图:
Native部分:
创建ThirdLoginModule并继承ReactContextBaseJavaModule
public class ThirdLoginModule extends ReactContextBaseJavaModule { private static final String TAG = "ThirdLoginModule"; private static String REACT_CLASS = "AllureThirdLoginModule"; public static final String PLATFORM_QQ = "PLATFORM_QQ"; public static final String PLATFORM_WECHAT = "PLATFORM_WECHAT"; public static final int PLATFORM_VALUE_QQ = 1; public static final int PLATFORM_VALUE_WECHAT =2; public ThirdLoginModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return REACT_CLASS; } @Nullable @Override public Map<String, Object> getConstants() { final Map<String, Object> constants = new HashMap<>(); constants.put("PLATFORM_QQ", PLATFORM_VALUE_QQ); constants.put("PLATFORM_WECHAT", PLATFORM_VALUE_WECHAT); return constants; } /** * 第三方登陆 * @param platform * @param callback */ @ReactMethod public void thirdLogin(int platform, Callback callback) { switch (platform) { case PLATFORM_VALUE_QQ: //这里QQ 的登陆,至于需要回传给前端什么由你决定 Log.e("QQ","QQ"); callback.invoke("QQ登陆"); break; case PLATFORM_VALUE_WECHAT: //这里WE_CHAT 的登陆,至于需要回传给前要什么由你决定 Log.e("WECHAT","WECHAT"); callback.invoke("WECHAT登陆"); break; } }}
JS部分:
qq(){ NativeModules.AllureThirdLoginModule.thirdLogin( NativeModules.AllureThirdLoginModule.PLATFORM_QQ, (msg) => { console.log(msg); ToastAndroid.show(msg, ToastAndroid.SHORT); } ); }weChat(){ NativeModules.AllureThirdLoginModule.thirdLogin( NativeModules.AllureThirdLoginModule.PLATFORM_WECHAT, (msg) => { console.log(msg); ToastAndroid.show(msg, ToastAndroid.SHORT); } ); }
OK。 模块桥接完毕,就是这么简单。下一篇,咱们继续桥接控件View相关案例。
源码下载
国际惯例,下载后在主项目npm install在运行
0 0
- React-Native与原生的模块桥接(一)
- React Native原生模块的基本使用
- React-Native 原生模块(iOS)调用
- React Native原生模块与JS模块通信的几种方式
- react native使用原生模块
- React Native十四:原生模块
- React Native使用指南-原生模块
- React Native创建原生模块
- react native使用原生模块
- React-Native与原生的View桥接(二)
- react native 与原生之间的交互
- (十一)React Native---与原生交互
- react native 学习笔记----使用Android的原生模块
- React Native 学习笔记十三(原生模块之Toast)
- React Native 原生模块封装、发布、调用 (Android)
- React Native 与 原生交互
- React Native 与 原生交互
- Android React Native使用原生模块
- [BetterExplained]为什么你应该(从现在开始就)写博客
- Java常用排序算法/程序员必须掌握的8大排序算法
- [kuangbin带你飞]专题四 最短路练习 B
- UGUI之Horizontal Layout Group组件介绍
- 2016中国软件技术大会 解析最新企业级软件技术
- React-Native与原生的模块桥接(一)
- android 上传图片过大处理
- qt-vs-addin 配置出错 MSVCL.NETMSBUILD 的问题
- Google C++ 编码规范——1.头文件
- ios根据不同尺寸的iPhone对显示的字体大小进行适配
- 基于点云数据的三维目标识别
- mybatis整合REDIS远程缓存
- oracle:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- Android Studio中xml文件中的TextView的text中字符串属性默认大写