ios原生集成ReactNative,RN和IOS的交互等,很JB多东西的综合

1.搭建ReactNative开发基础环境可以根据http://reactnative.cn/docs/0.31/getting-started.html文档来配置,安装必须的工具

2.创建一个Ios工程 TestRTC

3.进入到工程根目录下面执行安装ReactNative命令行工具  npm install -g react-native-cli

4.在工程的根目录下面创建一个React文件夹 来存放RN的相关文件

5.在React文件夹下创建一个package.json文件,用于初始化RN(这里面的package.json最好是在初始化一个工程里面copy过来 以保证是最新的react、reactnative版本,初始化项目命令react-native init AwesomeProject ),package.json里面的name要和ios工程里面的名字一样即:”name”:”TestRTC”

6.安装ReactNative的依赖包 进入到React目录下面执行npm install

7.安装成功后创建index.ios.js(在React目录下),可以从上面说的初始化的 AwesomeProject工程里面copy过来 (不过index.ios.js里面的项目名要对应 和你ios工程名一样即可).

8.使用Cocoapods自动集成Reactnative,在工程的根目录下创建Podfile文件

Pod file文件内容为

target 'TestRTC' do

pod 'React', :path => './React/node_modules/react-native', :subspecs => [

'Core',

'ART',

'RCTActionSheet',

'RCTAdSupport',

'RCTGeolocation',

'RCTImage',

'RCTNetwork',

'RCTPushNotification',

'RCTSettings',

'RCTText',

'RCTVibration',

'RCTWebSocket',

'RCTLinkingIOS',

]

end

9.然后执行pod install --verbose --no-repo-update 安装

10.以上步骤执行完之后集成RN到工程已经大功告成,下面就看怎么应用RN在Xcode里面

11.添加库libc++

随便创建一个Controller,Controller代码如下

self.title=@"rn";

self.view.backgroundColor= [UIColororangeColor];

NSString*urlStr =@"http://127.0.0.1:8081/index.ios.bundle?platform=ios&dev=true";

NSURL*jsCodeLocation = [NSURLURLWithString:urlStr];

//NSURL *jsCodeLocation;

//jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

RCTRootView*rootView = [[RCTRootViewalloc]initWithBundleURL:jsCodeLocationmoduleName:@"iOSReactNative"initialProperties:nillaunchOptions:nil];

rootView.backgroundColor= [[UIColoralloc]initWithRed:1.0fgreen:1.0fblue:1.0falpha:1.0f];

rootView.frame= [[UIScreenmainScreen]bounds];

[self.viewaddSubview:rootView];

现在就可以运行Xcode了。

12.运行后跳转到从oc跳转到RN界面的时候会出现红屏,这时候不用慌,仔细看错误之后你会发现是npm服务没有起来,然后在控制台进入到React目录下执行npm start 命令 ,在重新运行工程你会发现reactNative界面就可以展现在我们面前了

ReactNative 与 原生IOS的交互

1.在.h文件中引入#import"RCTBridgeModule.h"

2.在.h文件中添加代理<RCTBridgeModule>


3.在.m文件的实现部分,需要包含RCT_EXPORT_MODULE()宏,这个宏也可以添加一个参数用来指定在 JS 中访问这个模块的名字。如果你不指定,默认就会使用这个 OC 类的名字。

4.写入reactnative需要调用的方法

RCT_EXPORT_METHOD(print:(NSString *)text) {

NSLog(@"%@", text);

}

6.在ReactNative需要实现的JS文件中引入

var{NativeModules} =require('react-native');

7.引入IOS中的类

varMLRNController=NativeModules.MLRNController;

8.在需要实现的地方调用

MLRNController.print("Hello World");

注:不知道为什么RN所在的类中self的内存地址会被修改,意思就是你想要的self跟你在于js交互中用到的self不是同一个self.同时出现的情况就会出现pop不掉我们的RN类的这个界面.

解决办法:使用单例来保存我们原本要用的self,在viewDidLoad方法中做保存

1.新建一个单例类(MLRNSington)来做保存self


2.在单例类中存放RNVC


3.在RN类中的self保存到单例中


4.pop出控制器


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容