【踩坑記】從HybridApp到ReactNative

前言

隨著移動互聯(lián)網(wǎng)的興起娱颊,Webapp開始大行其道。大概在15年下半年的時候我接觸到了HybridApp凯砍。因為當(dāng)時還沒畢業(yè)嘛箱硕,所以并不清楚自己未來的方向,所以就投入了HybridApp的懷抱悟衩。

HybridApp最早好像是國外的PhoneGap剧罩,然后國內(nèi)有AppCan、Dcloud座泳、APICloud等等惠昔。我當(dāng)時接觸的是APICloud,相比于其他平臺挑势,APICloud最大的特點是它的混合程度比較高镇防!

要知道,Webapp最大的問題就是性能問題始終無法和原生App相比潮饱,由此才發(fā)展出來HybridApp来氧。

界內(nèi)公認(rèn)的最穩(wěn)定的的Hybrid開發(fā)方式就是:由Native解決交互問題,由H5解決應(yīng)用層問題香拉。比如AppStore就是采用這種模式啦扬。

在這一點上APICloud做的還是不錯的,它的交互都是調(diào)用原生的接口凫碌,而應(yīng)用層開發(fā)者可以自行通過H5進(jìn)行開發(fā)扑毡。

當(dāng)然了,HybridApp的坑還是比較多的证鸥。在大概半年的時間里我踩了無數(shù)的坑。勤晚。枉层。

想起來都是淚啊。

不說了赐写,今天說說React Native鸟蜡。

React Native

React Native

因為Hybrid的平臺太多了,所以一直以為React Native也是一種HybirdApp開發(fā)方式挺邀。

最近想做一個監(jiān)聽手機(jī)短信的APP揉忘,所以就又用APICloud嘗試了下跳座,結(jié)果只能監(jiān)聽到正規(guī)手機(jī)號發(fā)送的短信卻監(jiān)聽不到短信通道發(fā)送的。我以為是APICloud的模塊問題泣矛,所以就想著看看React Native能不能幫我解決這個需求疲眷?

了解RN之后才發(fā)現(xiàn),完全不是我想的那樣D唷狂丝!

之前的各種HybridApp開發(fā)方式,它們的原理其實就是在一個運行在Webview中的app哗总,只不過這個Webview比較特殊而已几颜。

而RN完全不是這樣!

RN是最終還是會把你寫的代碼轉(zhuǎn)換成原生的代碼進(jìn)行編譯讯屈。這就意味著RN開發(fā)出來的APP是無限接近原生APP的性能的蛋哭!

FB真是牛逼到家了!涮母!

具體的RN開發(fā)我還沒深入谆趾,這里就不誤人子弟了。

下面就說說RN到底能不能幫我解決監(jiān)聽短信的問題呢哈蝇?

當(dāng)時是棺妓。。炮赦。額怜跑。。吠勘。沒解決性芬。。剧防。

哈哈~

其實沒解決不是因為RN的問題植锉,具體的原因我最后再說。

我查遍了RN的文檔峭拘,最終確定確實是沒有SMS相關(guān)的API和模塊俊庇。

無奈之下只能在網(wǎng)上搜索下咯~

這里我就要夸一夸我大Google了。

在百度上搜索ReactNative SMS鸡挠,毛也沒有搜到辉饱!

在Google上立馬搜到了很多。

百度搜索結(jié)果
Google搜索結(jié)果

成功找到一個React-native-sms-listener的模塊拣展,是一個巴西的開發(fā)者開發(fā)的彭沼。

React-native-sms-listener

興奮的去安裝編譯,結(jié)果又掉坑里了备埃。姓惑。褐奴。

在坑里爬了半天,發(fā)現(xiàn)是因為RN的版本升級了于毙。敦冬。。

0.29更新日志

在RN的0.29版本中望众,Android的原生代碼中增加了一個MainApplication.java的文件匪补,原先的MainActivity.java的文件也有所調(diào)整。烂翰。夯缺。

而這個React-native-sms-listener的模塊安裝的時候要求將他的一段代碼寫到MainActivity.java中去,結(jié)果就當(dāng)然可想而知了甘耿,編譯的時候死活無法通過踊兜。抓狂~

然后又費了半天勁給RN進(jìn)行降級。

這里也提一嘴如何給RN降級佳恬,官網(wǎng)的文檔只提了如何升級卻沒有如何降級捏境,這又是一個小坑。

RN如何升級

因為是通過npm進(jìn)行管理的毁葱,所以會有一個package.json的文件垫言。這個文件里指定了RN的版本,安裝好之后就是最新版本倾剿,如果官網(wǎng)版本有更新筷频,那么你這里的版本就會落后了,那么升級的時候就是需要把這個版本號改為最新的版本然后執(zhí)行npm install.

升級很簡單前痘,降級需要注意的是凛捏。你需要先把Android相關(guān)的代碼全部刪掉。

ReactNative根目錄

就是圖中的android文件夾和index.android.js的文件全部都刪掉芹缔。然后將package.js中的版本號調(diào)整為要降到的版本坯癣,最后執(zhí)行npm install就可以了。

為什么要刪掉最欠?官網(wǎng)文檔中有提到的

如果是新添加的文件示罗,則直接創(chuàng)建。
如果文件和當(dāng)前版本的文件相同芝硬,則跳過蚜点。
如果文件和當(dāng)前版本的文件不同,則會提示你一些選項吵取。

這就意味著禽额,如果新版本有新文件而舊版本并沒有锯厢,它是不會自動刪掉的皮官。這就會導(dǎo)致編譯的時候出現(xiàn)一些莫名奇妙的錯誤脯倒。。捺氢。

最終

成功的寫了一個監(jiān)聽短信的App藻丢,可惜還是監(jiān)聽不到通過短信通道發(fā)來的短信。摄乒。悠反。

我又一度懷疑是不是巴西那哥們寫的模塊有問題。馍佑。斋否。

反正Android的開發(fā)環(huán)境都搭好了,索性自己用原生的方式寫一個吧拭荤。

查了下資料茵臭,發(fā)現(xiàn)想要監(jiān)聽短信有兩種方式,一種是監(jiān)聽廣播舅世,一種是監(jiān)聽短信數(shù)據(jù)庫旦委。

首先嘗試了監(jiān)聽數(shù)據(jù)庫,經(jīng)過一番調(diào)試終于可以監(jiān)聽到了雏亚,趕緊找個渠道發(fā)個驗證碼試試缨硝。激動~~

可是。罢低。查辩。

尼瑪!^榷獭宜肉!

還是監(jiān)聽不到!t岜谬返!

這時候我突然想起一件事:MIUI的短信列表被特殊處理了拴签!


Paste_Image.png

如上圖铺董,它把通知類的短信和普通短信進(jìn)行了區(qū)分把通知類的短信摘出去了。忘闻。

坑啊~

這TM肯定不在一個數(shù)據(jù)庫了莉擒。酿炸。。

想明白這個問題之后都無奈了涨冀,折騰半天是手機(jī)系統(tǒng)的問題填硕。。。

然后又嘗試了下監(jiān)聽廣播的方式扁眯,也宣告失敗壮莹。

猜測miui底層應(yīng)該在自身接收到廣播做完相應(yīng)處理就把廣播攔截掉了。姻檀。

好了命满,本周的踩坑記就分享到這里了~

彩蛋

看過我之前文章的都知道我為什么要做短信監(jiān)聽。我說過打算做兩個Sender绣版,一個是App胶台,一個是基于SIM900A的小嵌入式產(chǎn)品。App的版本暫時就這樣了杂抽,等我給我的M4刷個其它的ROM再說诈唬。

喜訊是SIM900A調(diào)用Http請求時總重啟的問題順利解決了!缩麸!

原來是電腦USB電流輸出不足導(dǎo)致的讯榕,外接了個電源立馬好了~

請叫我踩坑小王子~


我是閆大伯,一只不斷踩坑爬坑的野生程序猿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匙睹,一起剝皮案震驚了整個濱河市愚屁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痕檬,老刑警劉巖霎槐,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梦谜,居然都是意外死亡丘跌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門唁桩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闭树,“玉大人,你說我怎么就攤上這事荒澡”ㄈ瑁” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵单山,是天一觀的道長碍现。 經(jīng)常有香客問我,道長米奸,這世上最難降的妖魔是什么昼接? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮悴晰,結(jié)果婚禮上慢睡,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好漂辐,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布钻弄。 她就那樣靜靜地躺著,像睡著了一般者吁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饲帅,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天复凳,我揣著相機(jī)與錄音,去河邊找鬼灶泵。 笑死育八,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赦邻。 我是一名探鬼主播髓棋,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惶洲!你這毒婦竟也來了按声?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恬吕,失蹤者是張志新(化名)和其女友劉穎签则,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铐料,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡渐裂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钠惩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒凉。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖篓跛,靈堂內(nèi)的尸體忽然破棺而出膝捞,到底是詐尸還是另有隱情,我是刑警寧澤愧沟,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布绑警,位于F島的核電站,受9級特大地震影響央渣,放射性物質(zhì)發(fā)生泄漏计盒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一芽丹、第九天 我趴在偏房一處隱蔽的房頂上張望北启。 院中可真熱鬧,春花似錦、人聲如沸咕村。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懈涛。三九已至逛万,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間批钠,已是汗流浹背宇植。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留埋心,地道東北人指郁。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像拷呆,于是被迫代替她去往敵國和親闲坎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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