原理:我們都知道,F(xiàn)lutter調(diào)用原生的API需要通過(guò)插件來(lái)實(shí)現(xiàn),permission_handler就是獲取原生手機(jī)權(quán)限。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),鎮(zhèn)江企業(yè)網(wǎng)站建設(shè),鎮(zhèn)江品牌網(wǎng)站建設(shè),網(wǎng)站定制,鎮(zhèn)江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,鎮(zhèn)江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
解決記錄:
最近在寫(xiě)flutter應(yīng)用,需要集成藍(lán)牙功能,用了一個(gè)第三方的庫(kù),踩了一些坑,做一下記錄。
這是庫(kù)的地址 PhilipsHue/flutter_reactive_ble: Flutter library that handles BLE operations for multiple devices. (github.com)
安卓主要的坑就是,在使用藍(lán)牙功能的時(shí)候,需要獲取定位權(quán)限,這個(gè)需要?jiǎng)討B(tài)獲取。
集成之后,編譯出錯(cuò),提示Swift Compiler Error。
(1)首先嘗試,修改對(duì)應(yīng)三方庫(kù)的Swift編譯版本。
我這邊嘗試修改,沒(méi)有成功。
(2) 沒(méi)辦法,我這邊手動(dòng)修改三方庫(kù)的源碼文件,進(jìn)行修復(fù)。重新編譯成功。
其他問(wèn)題
在Android真機(jī)調(diào)試時(shí)會(huì)出現(xiàn)沒(méi)有網(wǎng)絡(luò)權(quán)限的情況;
在AndroidManifest.xml 中添加
AndroidManifest.xml的路徑 android/app/src/main/AndroidManifest.xml 通常manifest的 /application 后添加
示例:
Bad state: Insecure HTTP is not allowed by platform
AndroidManifest.xml 路徑為:android/app/src/main/AndroidManifest.xml)
1.2 添加的屬性為
示例:
Android:
添加藍(lán)牙/定位權(quán)限
文件地址:Flutter項(xiàng)目文件夾/android/app/src/main/java/AndroidManifest.xml
iOS:
添加藍(lán)牙權(quán)限
文件地址:Flutter項(xiàng)目文件夾/ios/Runner/Info.plist
運(yùn)行Flutter 在Android端安裝的時(shí)候Androidstudio提示這個(gè)錯(cuò)誤:
原因:出現(xiàn)這個(gè)錯(cuò)誤的原因是我引入的第三方庫(kù)最低支持版本高于我的項(xiàng)目的最低支持版本,異常中的信息顯示:我的項(xiàng)目的最低支持版本為,而第三方庫(kù)的最低支持版本為x),所以拋出了這個(gè)異常。
解決辦法:文件地址:Flutter項(xiàng)目文件夾/android/app/src/main/java/AndroidManifest.xml
中添加
問(wèn)題出現(xiàn)在Android端,連接藍(lán)牙設(shè)備后,匹配特征值的時(shí)候
報(bào):set_notification_error,編寫(xiě)描述符時(shí)出錯(cuò)。
原因:
我個(gè)人的分析,設(shè)備是使用標(biāo)準(zhǔn)的Android API用于藍(lán)牙,必須等待回調(diào),該回調(diào)表明之前的GATT操作已完成(onDescriptorWrite),直到可以編寫(xiě)下一個(gè)描述符以啟用特征通知。也就是程序有個(gè)通過(guò)特征性UUID比較的工作順序,由于信號(hào)不好,或者是信號(hào)緩沖之類的原因,造成藍(lán)牙可能流程一步一步走不下來(lái)。
解決:
setNotifyValue(true) 添加延時(shí)操作
沒(méi)有引用極光推送包 之前得權(quán)限:
-訪問(wèn)網(wǎng)絡(luò)
-修改/刪除SDK卡中的內(nèi)容
-拍照
-控制震動(dòng)器
-查看網(wǎng)絡(luò)狀態(tài)
-查看WLANK狀態(tài)
-讀取手機(jī)狀態(tài)和身份【去掉 tx_device_id 包 該權(quán)限沒(méi)有 】
極光推送包引入后 手機(jī)權(quán)限多了以下這些:
-修改全局系統(tǒng)設(shè)置
-裝載和卸載文件系統(tǒng)
-顯示系統(tǒng)及警報(bào)
-大概位置
-更改WLAN狀態(tài)
-精準(zhǔn)的(GPS)位置
-訪問(wèn)額外的位置信息提供程序命令
-更改網(wǎng)絡(luò)連接性
-檢索當(dāng)前運(yùn)行的應(yīng)用程序