react-native与原生Swift交互

最近项目要加入rn做混编,就试着写个交互的demo。rn已经应用的相当成熟了,网上很多大牛们写的资料可供参考,但是找了很久都没有找到源码,于是就自己试着写了一个简单的demo。此demo主要参考一下资料,有兴趣的小伙伴可以点进去参考查看

react-native中文网--原生模块

React Native Native Module

8) React Native 与原生之间的通信(iOS)

前两个都是react-native的文档,中英文版本有所差异,可以对比参考,第三篇是简书的一篇文章很详细,可惜没有源码,,,理论知识看上面三篇足够了,说来惭愧,接触rn不久,js完全一片空白,好多基础的语法都不太懂,我这里就不写这些原理了,下面贴出demo链接,希望对小伙伴们有所帮助

SwiftRnApp

用NativeEventEmitter给js发事件没有成功,那位小伙伴尝试成功了还望指教一下,先在此谢过

使用rn混编主要是想用的他热修复功能,一开始是尝试着用微软的ReactNative热更新库code-push,有兴趣的小伙伴可以参考下面两篇文章

微软的React Native热更新 - 使用篇

react-native-code-push进阶篇

最后由于各种原因被否掉了,现在项目中采用的是加载服务器上的rn压缩文件,大致流程是:工程中打包一套rn文件,工程启动时解压到沙盒中以供加载,每次启动后会去请求看是否有需要更新的rn包,如果没有就直接加载本地的沙盒中的rn文件,如果有就去下载然后解压到本地沙盒替换之前的rn文件,

下面贴出iOS打包js文件的方法

react-native bundle --platform 平台 --entry-file 启动文件 --bundle-output 打包js输出文件 --assets-dest 资源输出目录 --dev 是否调试

react-native bundle --platform ios --entry-file index.js --bundle-output ./bundles/main.jsbundle --assets-dest ./bundles --dev false


加载本地的bundle 文件时命名可以随意取

demo中有相关的代码,希望对有需要的小伙伴有所帮助

你可能感兴趣的:(ReactNative,Swift,iOS)