React Native 与iOS的通信

本文详细介绍了React Native如何与iOS原生代码进行交互,包括调用iOS方法、传递参数、使用callback和Promise、接收iOS推送的消息,以及在不同线程中执行的方法。通过实例展示了在iOS中创建模块、定义方法,以及在JavaScript中调用这些方法的过程,帮助开发者更好地理解和实践React Native与iOS的跨平台通信。
摘要由CSDN通过智能技术生成

RN可以很好的与原生进行交互,我们首先看看效果吧:
bridge

首先我们来看看React Native 怎样调用iOS的代码并且带有简单的参数:
在iOS工程里面我们新建一个类iOSExport,iOSExport将会实现RCTBridgeModule协议。
首先我们要在iOSExport类的实现中添加这句宏定义:RCT_EXPORT_MODULE()
RCT_EXPORT_MODULE()如果你不传入参数,那么你在iOS中导出的模块名就是类名,你也可以插入参数作为自定义模块名。

@implementation iOSExport
//定义导出的模块名
RCT_EXPORT_MODULE()
@end

后面我们就可以实现协议的代理方法了,协议方法的实现需要在RCT_EXPORT_METHOD,这个宏里面。
我们先写一个有两个参数的方法给js调用:

@implementation iOSExport
//定义导出的模块名
RCT_EXPORT_MODULE()

//定义导出的方法名
RCT_EXPORT_METHOD(rnToiOS:(NSString *)name :(NSInteger)age) {
  NSString *st = [NSString stringWithFormat:@"name:%@,age:%ld",name,age];
    NSLog(@"test:%@",st);
    [self alter:st];
}
@end

这样OC端的工作就OK了,下面我们继续看看js端怎么调用:
首先我们要在js文件里面 import NativeModules
然后在我们需要使用的时候获取导出的模块,我们再用模块调用iOS的导出的函数名就可以了,看代码:

//创建一个可以点击的按钮,点击按钮后调用iOS的rnToiOS方法
<TouchableHighlight 
    style={[styles.highLight,{marginTop:50}]} 
    underlayColor='#deb887' 
    activeOpacity={
  0.8}
    onPress={() => this._nameAndAge()}
    >
    <Text>简单数据传递</Text>
</TouchableHighlight>

_nameAndAge() { //多参数的传递
        var iOSExport = NativeModules.iOSExport //获取到模块
        iOSExport.rnToiOS('帝君',200) //直接调用函数
        this.setState({
            text:'rnToiOS'
        })
}

下面我们再看如何在js端调用iOS的含有字典参数和回调函数的方法。iOS提供给js的回调函数是使用block实现的,看下回调函数的说明:

/**
 * The type of a block that is capable of sending a response to a bridged
 * operation.
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值