iOS開發(fā)避免不開系統(tǒng)權(quán)限的問題,如何在APP中以更加友好的方式向用戶展示系統(tǒng)權(quán)限,似乎也是開發(fā)過程中指的深思的一件事。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、做網(wǎng)站、定州網(wǎng)絡(luò)推廣、微信小程序、定州網(wǎng)絡(luò)營銷、定州企業(yè)策劃、定州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供定州建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:chinadenli.net
那如何提高用戶獲取權(quán)限的通過率呢?以下幾種方式或許是不錯(cuò)的嘗試:
上面的只是一些嘗試,與本文的主要講述內(nèi)容關(guān)系不大,接下來我們主要來看一下常用的一些系統(tǒng)權(quán)限的狀態(tài)獲取以及主動(dòng)喚起權(quán)限請求的方法。
相機(jī)權(quán)限
相冊權(quán)限
日歷權(quán)限
麥克風(fēng)權(quán)限
推送權(quán)限
定位權(quán)限
提醒事項(xiàng)權(quán)限
通訊錄權(quán)限
互聯(lián)網(wǎng)權(quán)限
藍(lán)牙權(quán)限
引入頭文件 #import AVFoundation/AVFoundation.h
引入頭文件 #import Photos/Photos.h
引入頭文件 #import EventKit/EventKit.h
引入頭文件 #import AVFoundation/AVFoundation.h
引入頭文件 #import UserNotifications/UserNotifications.h
引入頭文件 #import CoreLocation/CoreLocation.h
封裝方法調(diào)用
TenLocationManager.h
TenLocationManager.m
引入頭文件 #import EventKit/EventKit.h
引入頭文件
iOS 9.0前 #import AddressBook/AddressBook.h
iOS 9.0后 #import Contacts/Contacts.h
引入頭文件 #import CoreTelephony/CTCellularData.h
系統(tǒng)未提供接口供開發(fā)者手動(dòng)請求網(wǎng)絡(luò)權(quán)限,iOS10以上系統(tǒng),應(yīng)用首次請求網(wǎng)絡(luò)會(huì)自動(dòng)彈出,一個(gè)應(yīng)用只彈出一次,卸載也不會(huì)重新彈出
引入頭文件 #import CoreBluetooth/CoreBluetooth.h
TenBluetoothManager.h
TenBluetoothManager.m
蘋果瀏覽器開網(wǎng)絡(luò)權(quán)限的方法:首先,請大家在自己的手機(jī)中找到【設(shè)置】圖標(biāo),點(diǎn)擊進(jìn)入主界面。第二步,請大家翻動(dòng)界面,然后點(diǎn)擊選擇目標(biāo)軟件。第三步,此時(shí)我們來到了的軟件權(quán)限設(shè)置頁面,其中有是否允許訪問照片、相機(jī)、通訊錄等選項(xiàng)。
第四步,我們需要選擇屏幕中的【位置】按鈕,然后點(diǎn)擊【永不】選項(xiàng),我們還能設(shè)置“使用應(yīng)用期間”即可。第五步,此時(shí)請選擇屏幕中的【允許通知】選項(xiàng),進(jìn)行相關(guān)設(shè)置。
Safari是一款由蘋果開發(fā)的網(wǎng)頁瀏覽器,是各類蘋果設(shè)備(如Mac、iPhone、iPad、iPod Touch)的默認(rèn)瀏覽器。Safari使用WebKit瀏覽器引擎。
Safari,作為蘋果計(jì)算機(jī)的操作系統(tǒng)macOS中的瀏覽器,它用來取代之前的Internet Explorer for Mac。Safari以驚人速度渲染網(wǎng)頁。與Mac及iPod touch、iPhone、iPad兼容。讓最愛網(wǎng)站一目了然。聰明的它還會(huì)檢查拼寫和語法。
一開始以為是用戶網(wǎng)絡(luò)情況不好,但隨著越來越多的用戶報(bào)告這個(gè)問題,我意識到這并不是偶然情況。但是并非所有用戶都如此。
而且卸載掉之后,如果再裝,也不會(huì)出現(xiàn)這現(xiàn)象。問題只會(huì)出現(xiàn)在這臺設(shè)備第一次安裝、第一次啟動(dòng)的情況下。如果把手機(jī)抹掉、重置,問題還能重現(xiàn)。
在iOS 14系統(tǒng)中蘋果新增加了本地網(wǎng)絡(luò)的授權(quán),本地網(wǎng)絡(luò)(Local Network)是在當(dāng)app使用Bonjour服務(wù)或者訪問本地局域網(wǎng)時(shí)需要用戶授權(quán),如:
Network.framework(NWBrowser,NWListener.Service)
Foundation(NetService)
MultipeerConnectivity(藍(lán)牙)
Dnssd(發(fā)現(xiàn),發(fā)布和解析局域網(wǎng)或廣域網(wǎng)上的網(wǎng)絡(luò)服務(wù))
Bonjour主要做本地通信和智能交互的。
通常我們是通過 NSNetService 和 NSNetServiceBrowser 來使用 Bonjour 的,前者用于建立與發(fā)布 service,后者用于監(jiān)聽查詢網(wǎng)絡(luò)上的 service。
在我們的項(xiàng)目中因?yàn)槭褂昧说谌終TVCocoaHTTPServer,在查看其中源碼發(fā)現(xiàn)這個(gè)庫中使用了NSNetService:
因此在用戶第一次啟動(dòng)項(xiàng)目是會(huì)彈出本地網(wǎng)絡(luò)授權(quán)的提示。
驗(yàn)證環(huán)境:
iPad iOS 14
Xcode 11
通過把本地網(wǎng)路權(quán)限關(guān)閉去驗(yàn)證是否對項(xiàng)目有影響:
1、我們項(xiàng)目之所以會(huì)提示本地網(wǎng)絡(luò)授權(quán)是因?yàn)镵TVHTTPCache依賴于KTVCocoaHTTPServer,是因?yàn)镵TVHTTPCache使用的音視頻緩存方案:本地實(shí)現(xiàn)http service。
在iOS本地開啟Local Server服務(wù),然后使用播放控件請求本地Local Server服務(wù),本地的服務(wù)再不斷請求視頻地址獲取視頻流,本地服務(wù)請求的過程中把視頻緩存到本地,大體的思路是這樣的。而實(shí)現(xiàn)loacl Service要基于Bonjour庫,通過 Bonjour,一個(gè)應(yīng)用程序 publish 一個(gè)網(wǎng)絡(luò)服務(wù) service,然后網(wǎng)絡(luò)中的其他程序就能自動(dòng)發(fā)現(xiàn)這個(gè) service,從而可以向這個(gè) service 查詢其 ip 和 port,然后通過獲得的 ip 和 port 建立 socket 鏈接進(jìn)行通信。通常我們是通過 NSNetService 和 NSNetServiceBrowser 來使用 Bonjour 的,前者用于建立與發(fā)布 service,后者用于監(jiān)聽查詢網(wǎng)絡(luò)上的 service,因此在iOS14設(shè)備上邊提示了本地網(wǎng)路授權(quán)。
2、為了驗(yàn)證關(guān)閉本地網(wǎng)絡(luò)授權(quán)是否會(huì)對項(xiàng)目有所影響,先找到KTVHTTPCache庫在項(xiàng)目中的緩存目錄:tmp-KTVHTTPCache,最新安裝的app并沒有任何緩存,然后運(yùn)行app,播放視頻再次查看緩存目錄下有了視頻緩存,目前調(diào)研結(jié)果是關(guān)閉本地網(wǎng)絡(luò)權(quán)限并不會(huì)對我們項(xiàng)目產(chǎn)生影響。
使用另外一種方案:
使用IOS原生API ,使用 AVAssetResourceLoader,在不改變 AVPlayer API 的情況下,對播放的音視頻進(jìn)行緩存。
這種方案只能是使用AVPlayer才可以,使用第三方播放器除非它也暴露出了類似于AVAssetResourceLoader這樣的協(xié)議。
相關(guān)三方很多 VIMediaCache
這種方案測試不會(huì)提示本地網(wǎng)絡(luò)授權(quán)管理
iOS14新增加本地網(wǎng)絡(luò)權(quán)限 Privacy - Local Network Usage Description
如有本地網(wǎng)絡(luò)使用場景需要在 info.plist 中增加 Bonjour services 字段(如投屏加入 _leboremote._tcp )
查看使用本地網(wǎng)絡(luò)的三方庫方法:在項(xiàng)目目錄下使用 grep -r SimplePing . 命令即可
Apple官方無具體API查詢Local Network權(quán)限,這里采用建立定時(shí)器對本地網(wǎng)絡(luò)請求,如果請求不通則無Local Network權(quán)限。需要使用Ping庫( )具體見下:
網(wǎng)站標(biāo)題:ios開發(fā)獲取網(wǎng)絡(luò)權(quán)限,iOS網(wǎng)絡(luò)權(quán)限
網(wǎng)站URL:http://chinadenli.net/article48/dsgcohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)