1、打开react-native项目中ios文件夹下得xcode工程文件。
2、在AppDelegate.m的平级创建需要暴露给ReactNative的Swift类
将其命名为“MyModule”
创建完后,会提示你是否创建Bridging Header,因为IOS开发如果需要swift和oc共存,则Swift必须提供一个Bridging Header 给oc,否则oc无法调用Swift。目前Swift无法直接暴露给ReactNative,所以需要oc来做桥接。
3、在刚创建的Bridging Header文件中添加一行代码,这是React Bridge的头文件
#import "RCTBridgeModule.h"
4、编写我们的主类文件,也就是刚才创建的MyModule.swift
import Foundation //加上@objc是为了让swift和被oc所调用 @objc(MyModule) class MyModule: NSObject { @objcfunc sayHi(msg:String!, callback: RCTResponseSenderBlock) -> Void { callback(["Swift Module recieved your message, content is \"\(msg)\""]); } }
5、还需要最后一步骤,将我们的模块方法通过ReactNative暴露出去,这步还是在oc的实现文件中去做,新建一个MyModule.m文件。
代码内容如下:
// MyModule.m #import "RCTBridgeModule.h" @interfaceRCT_EXTERN_MODULE(MyModule, NSObject) RCT_EXTERN_METHOD(sayHi:(NSString)msg callback:(RCTResponseSenderBlock)callback) @end
5、到此就完成了一个Swift ReactNative模块的开发,在XCode中运行下(Command + R),完成模块的编译后,就可以去ReactNative中去引用这个模块。
6、Native 语言暴露给ReactNative的模块、方法都在NativeModules这个模块上,所以我们新建一个js模块
import React, { NativeModules } from 'react-native'; export default NativeModules.MyModule;
7、在业务代码中应用这个模块,并调用swift方法
import MyModule from './MyModule'; MyModule.sayHi("Hi, I am from JS” , (msg)=>{ console.log(msg); });)最终会在浏览器的控制台中输出: Swift Module recieved your message, content is "I am from JS
相关推荐
React Native 的跨平台 WebView
React Native 学习笔记,总结的还不错咯
React Native 第三方分享【一行代码,双平台分享】 支持平台:【QQ】【QQ空间】【微信】【朋友圈】【微博】【FaceBook】
ReactNative与原生通信的demo
React Native的缩放抽屉控件
React Native: 原生Popover菜单
React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台。
React Native开发嘎嘎商城客户端
React Native - 拥有不同状态的动画的图标
用React Native实现类似于Facebook Paper的可交互UI
iOS ARKit的React Native绑定
React Native 实现的 GMTC 客户端,做的非常专业,非常棒
react-native-app-store-review一个RN实现的App Store评分组件
react-native 自建热更新版本升级工具 demo ios
iOS/Android图片选择器,支持摄像头,多个图像和裁剪
go-micro 微服务实战的客户端 === 基于react native 构建 Android iOS app前端
目前,我们默认使用iOS / Obj-C和Android / Java,但如果您愿意,也可以选择iOS / Swift或Android / Kotlin。 您想要JS文件的目录。 如果不存在,我们将为您创建。 而已! :package: 请稍等,我们将为您快速提供...
采用React Native构建的GitHub for iOS。能够查看仓库和用户信息,控制你的通知和你issues和pull requests的事件通知。 GitPoint是功能最强大的非官方GitHub iOS客户端,100%免费。
一个支付宝的react native组件
react-native-progressive-image 逐步加载图像