React Native与iOS的通信
2019-03-30 本文已影响0人
osnail
首先贴出文档先 https://reactnative.cn/docs/0.36/native-modules-ios.html#content
RCTPromiseResolveBlock和RCTPromiseRejectBlock
对于iOS的文件首先要遵循RCTBridgeModule协议
遵循协议
@interface YPayment : NSObject<RCTBridgeModule>
@end
在.m要重写一个RN写好的宏方法 RCT_EXPORT_MODULE ,而且还要在自己 被js带调用的方法名前面加上一个宏方法RCT_EXPORT_METHOD
RCT_EXPORT_MODULE()
RCT_EXPORT_METHOD(OCFunction:(NSDictionary *)dic Rejecter:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject){
/*
if (1){
resolve(@{@"key":value});
}else{
reject(@{@"error":error})
}
*/
}
接下来就是js去调取这个oc的方法了
同样也要导入react native的对应文件
import {
NativeModules,
} from 'react-native';
let payinfo = { key: 1 }
try {
let res = await NativeModules.YPayment.OCFunction(payinfo)
alert(res)
} catch (error) {
alert(error)
}
这里其实还是要注意的就是YPayment并不是随意写的而是iOS那边这个函数所在的文件的名字。
RCTResponseSenderBlock
这个回调专门回调一个数组的 个人感觉他并没有像Promise那样友好,失败和成功分为了不同的回调,但是这并不影响它的使用,我们可以自己在这个回调里面设置自己的成功和失败的bool嘛,