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

1.搭建ReactNative開發(fā)基礎環(huán)境可以根據(jù)http://reactnative.cn/docs/0.31/getting-started.html文檔來配置坠敷,安裝必須的工具

2.創(chuàng)建一個Ios工程 TestRTC

3.進入到工程根目錄下面執(zhí)行安裝ReactNative命令行工具? npm install -g react-native-cli

4.在工程的根目錄下面創(chuàng)建一個React文件夾 來存放RN的相關文件

5.在React文件夾下創(chuàng)建一個package.json文件侨艾,用于初始化RN(這里面的package.json最好是在初始化一個工程里面copy過來 以保證是最新的react举塔、reactnative版本震蒋,初始化項目命令react-native init AwesomeProject )牵咙,package.json里面的name要和ios工程里面的名字一樣即:”name”:”TestRTC”

6.安裝ReactNative的依賴包 進入到React目錄下面執(zhí)行npm install

7.安裝成功后創(chuàng)建index.ios.js(在React目錄下)抵代,可以從上面說的初始化的 AwesomeProject工程里面copy過來 (不過index.ios.js里面的項目名要對應 和你ios工程名一樣即可).

8.使用Cocoapods自動集成Reactnative,在工程的根目錄下創(chuàng)建Podfile文件

Pod file文件內(nèi)容為

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.然后執(zhí)行pod install --verbose --no-repo-update 安裝

10.以上步驟執(zhí)行完之后集成RN到工程已經(jīng)大功告成模闲,下面就看怎么應用RN在Xcode里面

11.添加庫libc++

隨便創(chuàng)建一個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];

現(xiàn)在就可以運行Xcode了建瘫。

12.運行后跳轉(zhuǎn)到從oc跳轉(zhuǎn)到RN界面的時候會出現(xiàn)紅屏,這時候不用慌尸折,仔細看錯誤之后你會發(fā)現(xiàn)是npm服務沒有起來啰脚,然后在控制臺進入到React目錄下執(zhí)行npm start 命令 ,在重新運行工程你會發(fā)現(xiàn)reactNative界面就可以展現(xiàn)在我們面前了

ReactNative 與 原生IOS的交互

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

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


3.在.m文件的實現(xiàn)部分实夹,需要包含RCT_EXPORT_MODULE()宏橄浓,這個宏也可以添加一個參數(shù)用來指定在 JS 中訪問這個模塊的名字。如果你不指定亮航,默認就會使用這個 OC 類的名字荸实。

4.寫入reactnative需要調(diào)用的方法

RCT_EXPORT_METHOD(print:(NSString *)text) {

NSLog(@"%@", text);

}

6.在ReactNative需要實現(xiàn)的JS文件中引入

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

7.引入IOS中的類

varMLRNController=NativeModules.MLRNController;

8.在需要實現(xiàn)的地方調(diào)用

MLRNController.print("Hello World");

注:不知道為什么RN所在的類中self的內(nèi)存地址會被修改,意思就是你想要的self跟你在于js交互中用到的self不是同一個self.同時出現(xiàn)的情況就會出現(xiàn)pop不掉我們的RN類的這個界面.

解決辦法:使用單例來保存我們原本要用的self,在viewDidLoad方法中做保存

1.新建一個單例類(MLRNSington)來做保存self


2.在單例類中存放RNVC


3.在RN類中的self保存到單例中


4.pop出控制器


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市塞赂,隨后出現(xiàn)的幾起案子泪勒,更是在濱河造成了極大的恐慌昼蛀,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圆存,死亡現(xiàn)場離奇詭異叼旋,居然都是意外死亡,警方通過查閱死者的電腦和手機沦辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門夫植,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人油讯,你說我怎么就攤上這事详民。” “怎么了陌兑?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵沈跨,是天一觀的道長。 經(jīng)常有香客問我兔综,道長饿凛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任软驰,我火速辦了婚禮涧窒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锭亏。我一直安慰自己纠吴,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布慧瘤。 她就那樣靜靜地躺著戴已,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碑隆。 梳的紋絲不亂的頭發(fā)上恭陡,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音上煤,去河邊找鬼。 笑死著淆,一個胖子當著我的面吹牛劫狠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播永部,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼独泞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苔埋?” 一聲冷哼從身側(cè)響起懦砂,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荞膘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罚随,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年羽资,在試婚紗的時候發(fā)現(xiàn)自己被綠了淘菩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡屠升,死狀恐怖潮改,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腹暖,我是刑警寧澤汇在,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站脏答,受9級特大地震影響糕殉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜以蕴,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一糙麦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丛肮,春花似錦赡磅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至习劫,卻和暖如春咆瘟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诽里。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工袒餐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谤狡。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓灸眼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親墓懂。 傳聞我的和親對象是個殘疾皇子焰宣,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容