ReactNative 实现与原生ios交互,获取App版本号

755 阅读1分钟

1.Xcode打开工程,新建Cocoa Touch Class,名称为:CoomaanTools

2.打开CoomaanTools.h中导入相关类和实现协议RCTBridgeModule 文件修改如下:

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTLog.h>
@interface CoomaanTools : NSObject<RCTBridgeModule>

@end

3.在CoomaanTools.m实现该协议,需要含有一个宏:RCT_EXPORT_MODULE(),同时实现JS调用接口:

#import "CoomaanTools.h"

@implementation CoomaanTools
RCT_EXPORT_MODULE();
//  对外提供调用方法,演示Callback
RCT_EXPORT_METHOD(getVersion:(RCTResponseSenderBlock)callback)
{
  NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];//获取项目版本号
  callback(@[[NSNull null],version]);
}
@end

4.ReactNative通过NativeModules来实现传输和接受消息:

import React, { Component } from 'react';
import {
     StyleSheet,
     Text,
     Image,
     View,
     ImageBackground,
     StatusBar,
     NativeModules,
} from 'react-native';

var CoomaanTools = NativeModules.CoomaanTools;

...
CoomaanTools.getVersion((error,event)=>{
            if(error){
                console.log(error)
            }else{
                this.setState({
                    version:event
                })
            }
        }) 

5.完毕