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嘛,



上一篇 下一篇

猜你喜欢

热点阅读