ionic6探索筆記——原生插件的使用

官方插件文檔:https://ionicframework.com/docs/native


前面提到幕袱,ionic集成原生的方式有兩種:capacitor和cordova呼奢,在官方文檔里也分別介紹了各自的插件使用方法鹃锈。今天就分別探索一下這兩種集成方式是怎樣使用原生插件的。文章以最常用的相機插件為例。

一、Capacitor的相機插件

在使用capacitor插件之前需要在項目里安裝一個名為@capacitor/core的工具包:

npm install?@capacitor/core --save

如果在創(chuàng)建項目的時候選擇集成capacitor,這個工具包應該會自動安裝脾歧。

使用方法

1、在頁面的.ts文件引入資源并實例化對象

import { Camera } from '@capacitor/core';

const {Camera} = Plugins;

async getPhotos() {

? const photos= await Camera.getPhoto({

? ? resultType: CameraResultType.Uri,

? ? source: CameraSource.Prompt,

? ? quality: 100

? });

????this.imgSrc = photos.webPath;

}

注意乞巧,這里定義方法需要用async聲明涨椒,并且Camera.getPhoto()方法前面要加await摊鸡,這是為了處理異步操作绽媒。

詳細的參數(shù)說明我們可以進入源文件中查詢蚕冬,這里簡單介紹一下常用的兩個參數(shù):

resultType(返回的結果類型)

這個參數(shù)是必填的,有三種類型:CameraResultType.Uri(圖片的web地址)是辕、CameraResultType.Base64(base64字符串)囤热、CameraResultType.dataUrl(加上’data:image/png;base64,’的base64字符串)。這三種返回結果類型對應的字段分別是:webPath获三、base64String旁蔼、dataUrl

source(資源類型)

CameraSource.Prompt(選擇彈窗)疙教、CameraSource.Camera(直接打開相機)棺聊、CameraSource.Photos(直接打開相冊)

效果展示(source =?CameraSource.Prompt)

1、在瀏覽器中

在瀏覽器中

測試結果:直接打開本地資源

2贞谓、在安卓手機


安卓手機

測試結果:彈出操作表限佩,可以選擇相冊或者拍照

3、在蘋果手機上


蘋果手機

效果和安卓類似

寫到這里裸弦,我突然產(chǎn)生一個想法祟同,在手機上訪問ionic的web服務能不能使用capacitor的插件。

首先理疙,我們先指定IP啟動服務:

ionic server --host 你的IP地址(默認localhost) --port 你的端口(默認8100)

服務起來之后晕城,我們在手機瀏覽器上訪問該IP(如:192.168.13.68:8100),手機必須和服務在同一網(wǎng)段窖贤,接下來就是調用插件的方法了

1砖顷、在安卓手機上

2、在蘋果手機上


顯然赃梧,在手機web網(wǎng)頁也是可以借助capacitor調用手機硬件择吊,這是cordova的插件無法做到的。

另外兩種獲取圖片的方式(CameraSource.Camera(直接打開相機)槽奕、CameraSource.Photos(直接打開相冊))就不介紹了几睛,大家可以自己試一下。



二粤攒、cordova的相機插件

1所森、禁用capacitor

ionic integrations disable capacitor

2、添加平臺

ionic cordova platform add android/ios

3夯接、安裝插件

ionic cordova plugin add cordova-plugin-camera

npm install @ionic-native/camera

4焕济、使用插件

首先在app.module.ts全局引入服務

在ts文件中的部分代碼

import {Camera} from '@ionic-native/camera/ngx';

constructor( private camera: Camera) {}

getPhotos() {

? this.camera.getPicture({

? ? sourceType: 1? // PHOTOLIBRARY : 0, CAMERA : 1, SAVEDPHOTOALBUM : 2

? });

}

不過在打包的過程中報錯了:


應該是Camera服務需要依賴 @ionic-native/core這個服務

那就安裝一下咯

npm install @ionic-native/core

5、效果展示

在瀏覽器中無法使用:

但是在手機上是可以打開相機的? ? ? ? ??


對比兩種集成方式調用相機的方法盔几,我們發(fā)現(xiàn)使用capacitor只需要安裝和引用@capacitor/core這個服務就可以使用它提供的所有原生api晴弃,而集成cordova則需要安裝用到的所有模塊和cordova插件。顯然,在集成capacitor而不安裝cordova插件的情況下上鞠,是不能使用cordova的插件來調用手機硬件际邻,但是我們在集成cordova并安裝@capacitor/core之后可不可以使用capacitor調用手機硬件呢?

1芍阎、安裝和引用@capacitor/core 上面已經(jīng)介紹了世曾,這里不做過多說明

import { Camera } from '@capacitor/core';

const {Camera} = Plugins;

2、調用相機

async getPhotos() {

? const photos= await Camera.getPhoto({

? ? resultType: CameraResultType.Uri,

? ? source: CameraSource.Prompt,

? ? quality: 100

? });

????this.imgSrc = photos.webPath;

}

結果展示

蘋果手機



安卓手機

結論:在蘋果手機上谴咸,使用CameraSource.Camera可以直接打開相機轮听,使用另外兩種方式都如圖所示;而在安卓手機上岭佳,三種方式都是進入手機相冊血巍。這跟單獨集成capacitor還是有區(qū)別的。


總結:

????ionic6之前的版本珊随,調用原生只有集成cordova一種方式藻茂。ionic6開始,又多了capacitor這種方式(capacitor應該算是cordova的升級版)玫恳。在使用方式上來看辨赐,capacitor更加方便,只需要安裝一個服務模塊就可以調用它提供的所有api京办。但是capacitor也有一個弊端掀序,那就是它目前提供的api相對較少,基本都是些常用的功能惭婿,而cordova相對豐富一些不恭。

? ? 那么在我們的實際開發(fā)當中,還是建議優(yōu)先集成cordova财饥,這樣既能使用capacitor提供的原生功能换吧,也可以使用cordova的插件。

? ? 本文只是對調用相機做了兩種集成方式的比較钥星,對于其他插件大家可以在用到的時候自行比較沾瓦。


歡迎對ionic6感性趣的友友們一起探討和打賞!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谦炒,一起剝皮案震驚了整個濱河市贯莺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宁改,老刑警劉巖缕探,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異还蹲,居然都是意外死亡爹耗,警方通過查閱死者的電腦和手機八拱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門远荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辣吃,“玉大人霹俺,你說我怎么就攤上這事东揣÷痰辏” “怎么了轧邪?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵叼耙,是天一觀的道長最易。 經(jīng)常有香客問我怒坯,道長,這世上最難降的妖魔是什么藻懒? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任剔猿,我火速辦了婚禮,結果婚禮上嬉荆,老公的妹妹穿的比我還像新娘归敬。我一直安慰自己,他們只是感情好鄙早,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布汪茧。 她就那樣靜靜地躺著,像睡著了一般限番。 火紅的嫁衣襯著肌膚如雪舱污。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天弥虐,我揣著相機與錄音扩灯,去河邊找鬼。 笑死霜瘪,一個胖子當著我的面吹牛珠插,可吹牛的內容都是我干的。 我是一名探鬼主播颖对,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼捻撑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缤底?” 一聲冷哼從身側響起布讹,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎训堆,沒想到半個月后描验,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡坑鱼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年膘流,在試婚紗的時候發(fā)現(xiàn)自己被綠了絮缅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡呼股,死狀恐怖耕魄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情彭谁,我是刑警寧澤吸奴,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站缠局,受9級特大地震影響则奥,放射性物質發(fā)生泄漏。R本人自食惡果不足惜狭园,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一读处、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唱矛,春花似錦罚舱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窃肠,卻和暖如春包个,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铭拧。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工赃蛛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搀菩。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓呕臂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肪跋。 傳聞我的和親對象是個殘疾皇子歧蒋,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容