[Ionic 2從入門到精通] 2.12 本地功能

基于網(wǎng)頁的移動應用的問題在于我們可以通過瀏覽器在iOS和Android上運行十气,用戶不能將它們安裝在設備本地,應用不能訪問本地API春霍,如:聯(lián)系人砸西,藍牙等等。這就是為什么我們使用Cordova結合Ionic址儒,Cordova允許我們將應用打包為一個本地封裝芹枷,這樣允許我你們提交到應用商店,同時也可以通過插件來使用本地API莲趣。用來Cordova之后鸳慈,HTML5移動應用可以做到本地應用能做的一切。
剛才也說到了喧伞,想要使用本地功能的話我們就要用到插件走芋。Cordova提供了大量的默認插件包括:

同時,基本上所有的功能都有社區(qū)開發(fā)的開源插件潘鲫,以下是一些比較流行的:

插件所做的基本上就是創(chuàng)建一個接口給JavaScript觸發(fā)本地功能的調用翁逞。所以,如果你需要用到一個不存在的Cordova插件的時候(基本上不會遇到這樣的情況)溉仑,你可以自己去寫(當然也需要寫本地代碼)挖函。
重要:大部分插件只在真實設備上才可以使用,如果你想通過ionice serve去測試Cordova插件的時候可以能會出現(xiàn)錯誤浊竟。

在Ionic 2中使用Cordova插件

Ionic 2中實現(xiàn)本地功能有兩種方法怨喘。可以通過安裝Cordova插件直接使用:

ionic plugin add plugin-name

然后訪問插件提供的本地功能逐沙,通痴芩迹可以通過全局對象去訪問:

window.plugins.somePlugin.someMethod();

不需要導入洼畅,不需要需求(required)吩案,不需要在特定地方調用或者不需要其他任何東西 —— 一旦你通過命令行安裝好了插件之后你可以在任何地方訪問。并不是所有的插件都可以這樣去訪問帝簇,但是大部分都是這么用的徘郭。這不是Ionic 2特有的,任何Cordova項目(唯一的不同是使用cordova plugin add丧肴,而不是ionic plugin add)都可以這樣去使用残揉。當使用正常Cordova語法的時候,在Ionic 1芋浮,Ionic 2抱环,Sencha Touch, jQuery Mobile或者其他使用Cordova的網(wǎng)頁里面使用插件并沒有不同。
記住如果你這樣去使用Cordova插件的話镇草,你的應用可能由于TypeScript警告而編譯不了眶痰。這是因為TypeScript不知道他是什么,可能你需要去安裝他對應的typings梯啤。如果想強行通過編譯的話竖伯,你可以簡單的加上:

declare var variableCausingProblems;

在類定義的裝飾器上面添加你用到的插件。
另一種方法因宇,你可以用Ionic Native來使用Cordova插件七婴,這是Ionic 2特有的。如果你對Ionic 1的ngCordova很熟悉察滑,這基本就是Ionic 2里面的同一個東西打厘。如果你不熟悉ngCordova的話,Ionic Native基本上就是通過Promise和Observables讓Cordova插件更好的與Angular 2工作杭棵。
Ionic Native在Ionic 2應用中是默認安裝的婚惫。所以你需要做的就是像平常那樣安裝你需要用到的插件,像這樣:

ionic plugin add cordova-plugin-geolocation

接下來魂爪,你需要在要用到這個插件的類里面通過Ionic Native導入此插件:

import { Geolocation } from 'ionic-native';

然后你就可以在代碼里面使用了:

Geolocation.getCurrentPosition().then((resp) => {
    console.log("Latitude: ", resp.coords.latitude);
    console.log("Longitude: ", resp.coords.longitude);
});

注意先舷,上面代碼返回了一個promise,我們通過.then()設置了一個操作器(handler)滓侍,如果我們使用標準的Cordova語法的話蒋川,那么是用不了這個的 -- Cordova的標準語法是使用回調函數(shù),會比較亂撩笆。
同時需要中哦你大概ianjizhud是不是所有的Cordova插件都能通過Ionic Native使用捺球。所有可用的組件以及如何使用,請查看Ionic Native 文檔夕冲。如果你想用的組件中Ionic Native里面沒有的話氮兵,那么你只能回頭使用標準Cordova語法了(或者你可以自己動手添加到Ionic Native)。
雖然不是強制要求歹鱼,你可以在任何地方使用Ionic Native泣栈。他可能使你的代碼更整潔,更是個Angular 2生態(tài)系統(tǒng)(typings自動處理這些弥姻,所以TypeScript不會抱怨)南片。用老式的Cordova不會死人,所以也不要覺得他太糟糕庭敦。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末疼进,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秧廉,更是在濱河造成了極大的恐慌伞广,老刑警劉巖拣帽,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嚼锄,居然都是意外死亡诞外,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門灾票,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峡谊,“玉大人,你說我怎么就攤上這事刊苍〖让牵” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵正什,是天一觀的道長啥纸。 經(jīng)常有香客問我,道長婴氮,這世上最難降的妖魔是什么斯棒? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮主经,結果婚禮上荣暮,老公的妹妹穿的比我還像新娘。我一直安慰自己罩驻,他們只是感情好穗酥,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惠遏,像睡著了一般砾跃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上节吮,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天抽高,我揣著相機與錄音,去河邊找鬼透绩。 笑死翘骂,一個胖子當著我的面吹牛,可吹牛的內容都是我干的渺贤。 我是一名探鬼主播雏胃,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼请毛,長吁一口氣:“原來是場噩夢啊……” “哼志鞍!你這毒婦竟也來了?” 一聲冷哼從身側響起方仿,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤固棚,失蹤者是張志新(化名)和其女友劉穎统翩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體此洲,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡厂汗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了呜师。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娶桦。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖汁汗,靈堂內的尸體忽然破棺而出衷畦,到底是詐尸還是另有隱情,我是刑警寧澤知牌,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布祈争,位于F島的核電站,受9級特大地震影響角寸,放射性物質發(fā)生泄漏菩混。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一扁藕、第九天 我趴在偏房一處隱蔽的房頂上張望沮峡。 院中可真熱鬧,春花似錦亿柑、人聲如沸帖烘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秘症。三九已至,卻和暖如春式矫,著一層夾襖步出監(jiān)牢的瞬間乡摹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工采转, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留聪廉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓故慈,卻偏偏與公主長得像板熊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子察绷,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容