wordpress判斷自定義頁面seo優(yōu)化排名價格
- 測試版本
- Flutter:3.7.6
- Dart:2.19.3
network_info_plus: 4.0.1
前言
我在做設(shè)備配網(wǎng)的時候,需要選擇配網(wǎng)的WiFi。用下拉選擇框展示W(wǎng)iFi列表?,F(xiàn)在有個需求:默認(rèn)展示的設(shè)備為手機(jī)連接的wifi。要實(shí)現(xiàn)這個需求只要能夠獲取到手機(jī)連接的wifi信息即可。
在這里我使用的庫是network_info_plus?。這個庫適用于Android、iOS、MacOS、Windows。可以獲取連接WiFi的名稱、BSSID、IPV4、IPV6、網(wǎng)關(guān)、廣播、子任務(wù)
在獲取Wifi信息時需要獲取設(shè)備的定位才能成功,因此我需要使用permission_handler來進(jìn)行權(quán)限申請
pub地址:network_info_plus | Flutter package
github地址:https://github.com/fluttercommunity/plus_plugins/tree/main/packages/network_info_plus/network_info_plus
Network_info_plus的API
函數(shù) | 描述 | 舉例 | 備注 |
---|---|---|---|
getWifiSubmask() | 獲取的設(shè)備的子網(wǎng)掩碼 |
| |
getWifiName() | 獲取WiFi的名稱 |
| 經(jīng)測試發(fā)現(xiàn)Android會有雙引號,ios沒有雙引號 |
getWifiIPv6() | 獲取Wifi的IPV6 |
| |
getWifiIP() | 獲取Wifi的IPV4 |
| |
getWifiGatewayIP() | 獲取設(shè)備的網(wǎng)關(guān)地址 |
| |
getWifiBSSID() | 獲取WiFi的BSSID |
| |
getWifiBroadcast(); | 獲取設(shè)備的廣播地址 |
| |
NetworkInfo(); | 初始化Network_info_plus |
使用步驟
1.下載Network_info_plus包
flutter pub add network_info_plus
2.權(quán)限配置
Android權(quán)限配置
配置要求
- Android 10(API 級別 29)SDK 或更高版本,則您的應(yīng)用需要具有 ACCESS_FINE_LOCATION 權(quán)限
- 低于 Android 10(API 級別 29),則您的應(yīng)用需要具有 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 權(quán)限
- 設(shè)備上啟用了位置服務(wù)(在“設(shè)置”>“位置”下)
- 如果您使用 Android 12(API 級別 31)及更高版本的設(shè)備,請確保您的應(yīng)用具有 ACCESS_NETWORK_STATE 權(quán)限
- 默認(rèn)情況下,此包不提供 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 權(quán)限
具體配置
1.進(jìn)入項(xiàng)目根目錄/android/app/src/main/AndroidManifest.xml中添加以下權(quán)限
?<!-- required?for?API?23?-?30???定位服務(wù)權(quán)限--><uses-permission-sdk-23?android:name="android.permission.ACCESS_COARSE_LOCATION"?android:maxSdkVersion="30"?/><uses-permission-sdk-23?android:name="android.permission.ACCESS_FINE_LOCATION"?android:maxSdkVersion="30"?/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"?/>
2.在代碼中獲取定位權(quán)限
var status = await Permission.location.status;if?(!status.isGranted) {await Permission.location.request();}
3.驗(yàn)證是否成功
在Flutter中添加如下代碼進(jìn)行測試
getPhoneConnectWifiName() async { ? ?? var info = NetworkInfo();String? wifiName = await info.getWifiName();print("-------------手機(jī)連接的wifi名稱為:$wifiName");var status = await Permission.location.status;if?(!status.isGranted) {await Permission.location.request();}wifiName = await info.getWifiName();print("-------------手機(jī)連接的wifi名稱為:$wifiName");}
iOS權(quán)限配置
1.下載的證書中應(yīng)該包含Access Wi-Fi Information
2.打開xcode,點(diǎn)擊TARGETS下的項(xiàng)目——>點(diǎn)擊Signing&Capablities——>點(diǎn)擊All
3.點(diǎn)擊加號——>在搜索框中搜索asscicated,然后雙擊Associated Domains。然后就能看到新增的內(nèi)容了
3.添加location的權(quán)限。進(jìn)入到項(xiàng)目根目錄/ios/Profile文件中,找到PERMISSION_LOCATION,取消注釋,并將值改為1。沒加的請看Flutter 權(quán)限申請,如何對iOS進(jìn)行配置
4.在Info.plist中添加NSLocationAlwaysAndWhenInUseUsageDescription和NSLocationWhenInUseUsageDescription權(quán)限。
展開Runner——>展開Runner——右擊Info文件——>點(diǎn)擊openAs——>選擇Source Code,然后添加如下內(nèi)容
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key><string>獲取用戶當(dāng)前連接的WiFi名稱并展示在配網(wǎng)列表中</string><key>NSLocationWhenInUseUsageDescription</key><string>獲取用戶當(dāng)前連接的WiFi名稱并展示在配網(wǎng)列表中</string>
5.在代碼中獲取定位權(quán)限
var status = await Permission.location.status;if?(!status.isGranted) {await Permission.location.request();}
6.驗(yàn)證是否成功
在Flutter中添加如下代碼進(jìn)行測試
getPhoneConnectWifiName() async { ? ?? var info = NetworkInfo();String? wifiName = await info.getWifiName();print("-------------手機(jī)連接的wifi名稱為:$wifiName");var status = await Permission.location.status;if?(!status.isGranted) {await Permission.location.request();}wifiName = await info.getWifiName();print("-------------手機(jī)連接的wifi名稱為:$wifiName");}
?