<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
掃碼需求日益增多,為了滿足客戶的需求,掃碼演變的多種多樣,其中有二維條碼,條形碼居中,條形碼又可以細分成幾種,以下記錄全螢幕和自定義頁面掃碼的在uniapp的技術實現
uni.scanCode(OBJECT)
h5平臺暫不支援這種形式調起全螢幕
掃碼的格式基本滿足日常需求,但是一些格式的碼還是沒有得到支援
程式碼範例如下:
// 允許從相機和相簿掃碼 uni.scanCode({ success: function (res) { console.log('條碼型別:' + res.scanType); console.log('條碼內容:' + res.result); } }); // 只允許通過相機掃碼 uni.scanCode({ onlyFromCamera: true, success: function (res) { console.log('條碼型別:' + res.scanType); console.log('條碼內容:' + res.result); } }); // 調起條碼掃描 uni.scanCode({ scanType: ['barCode'], success: function (res) { console.log('條碼型別:' + res.scanType); console.log('條碼內容:' + res.result); } });
優點:方便快捷調起全螢幕掃碼
缺點:支援碼的種類不多,掃碼效率比不過微信、支付寶等商業掃碼庫。如需更強的掃碼效果,參考下方的支付寶外掛掃碼
針對app場景,我們使用全螢幕掃碼,可以使用支付寶提供的掃碼外掛,具體接入,可參考我上一篇 uniapp接入支付寶掃碼 ,這個的速度和識別率基本是業內頂尖,特別提醒接入掃一掃這個服務本身是免費的,但是假如你要開啟掃碼檢測,紀錄檔記錄的話,這些就要額外收費,這點大家根據需求來,但是大部分情況,作為免費測試的話,大家記得關閉這些額外收費的功能
tip:接入這個外掛要先自定義基座再打包,不然執行不生效
var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module") mpaasScanModule.mpaasScan({ // 掃碼識別型別,引數可多選,qrCode、barCode,不設定,預設識別所有 'scanType': ['qrCode','barCode'], // 是否隱藏相簿,預設false不隱藏 'hideAlbum': false }, (ret) => { uni.showModal({ title: "彈窗標題", // 返回值中,resp_code 表示返回結果值,10:使用者取消,11:其他錯誤,1000:成功 // 返回值中,resp_message 表示返回結果資訊 // 返回值中,resp_result 表示掃碼結果,只有成功才會有返回 content: JSON.stringify(ret), showCancel: false, confirmText: "確定" }) })
優點:支援掃碼的格式多,基本涵蓋各類碼
缺點:uniapp暫時只支援全螢幕,希望官方可以推出自定義掃碼
自定義掃碼的場景也是在市場上的需求佔有一定的分量,例如快遞員的快遞app,經常一個頁面巢狀一個半頁的掃碼框,掃完之後的內容load在下面,直接視覺化觀看!
app端nvue專用的掃碼元件。
<barcode id='1' class="barcode" autostart="true" ref="barcode" background="rgb(0,0,0)" frameColor="#1C86EE" scanbarColor="#1C86EE" :filters="fil" @marked="success1" @error="fail1"></barcode>
<template> <view> <barcode id='1' class="barcode" autostart="true" ref="barcode" background="rgb(0,0,0)" frameColor="#1C86EE" scanbarColor="#1C86EE" :filters="fil" @marked="success1" @error="fail1"></barcode> <button class="btn" @click="toStart">開始掃碼識別</button> <button class="btn" @click="tocancel">取消掃碼識別</button> <button class="btn" @click="toFlash">開啟閃光燈</button> <button class="btn" @click="toscan">預覽</button> </view> </template> <script> export default { onLoad() { }, data() { return { fil: [0, 2, 1] } }, methods: { success1(e) { console.log("success1:" + JSON.stringify(e)); }, fail1(e) { console.log("fail1:" + JSON.stringify(e)); }, toStart: function() { this.$refs.barcode.start({ conserve: true, filename: '_doc/barcode/' }); }, tocancel:function(){ this.$refs.barcode.cancel(); }, toFlash: function() { this.$refs.barcode.setFlash(true); }, toscan: function() { console.log("scan:"); const barcodeModule = uni.requireNativePlugin('barcodeScan'); barcodeModule.scan("/static/barcode1.png" ,(e)=>{ console.log("scan_error:"+JSON.stringify(e)); }); } } } </script> <style> .barcode { width: 750rpx; height: 700rpx; background-color: #808080; } .btn { top: 20rpx; width: 730rpx; margin-left: 10rpx; margin-top: 10rpx; background-color: #458B00; border-radius: 10rpx; } </style>
優點:該場景可以自由設定寬高巢狀在頁面
缺點:有時候處理不當容易黑畫面,容易樣式錯亂
uni-app可以呼叫plus的api操作擴充套件能力,這塊很簡單,在app的條件編譯裡直接寫就好了,也不需要plus ready。 但是HTML5 裡有很多原生的視覺化控制元件,包括map、video、livepusher、barcode、nview(包括原生頭、原生tab),獲取這些物件和操作他們需要有特殊寫法。
5+app開發時,我們可以用plus.webview.currentWebview獲取當前頁面,但uni-app裡用法不一樣,需要這樣取當前顯示的webview:
const currentWebview = this.$mp.page.$getAppWebview(); //注意相關操作寫在APP-PLUS條件編譯下
還有一種寫法比較冗餘,可以獲取頁面棧中任意一個webview物件:
var pages = getCurrentPages(); var page = pages[pages.length - 1]; // #ifdef APP-PLUS var currentWebview = page.$getAppWebview(); //頁面棧最頂層就是當前webview // #endif
注意uni-app不需要像5+App那樣等待plus ready,可以直接用。核心程式碼:
var barcode = plus.barcode.create('barcode', [plus.barcode.QR], { top:'100px', left:'0px', width: '300px', height: '300px', position: 'static' }); //此處未演示掃碼成功回撥的地址設定,實際請參考HTML5Plus API自行處理 //注意掃碼區域需為正方形,否則影響掃碼識別率 currentWebview.append(barcode);
這也是目前比較穩定的自定義掃碼
優點:穩定識別率高,自由度高
缺點:需要自己進行封裝元件,可能沒有上面的單純的呼叫,更多依靠自己的封裝元件能力
這篇記錄了全螢幕掃碼,自定義掃碼分別兩種方式來記錄,請大家各取所需,有什麼更好的,歡迎大家踴躍評論,這篇只是講了app場景,假如是h5選項的情況,以上的記錄可能將不適用,更多關於uniapp掃碼記錄的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45