欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路

 更新時(shí)間:2020年09月18日 15:42:48   作者:asml  
這篇文章主要介紹了淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前戲

蘋(píng)果iOS 14針對(duì)本地局域做了一些權(quán)限限制,詳情見(jiàn)鏈接:https://developer.apple.com/videos/play/wwdc2020/10110/

wwdc翻譯過(guò)來(lái)湊字?jǐn)?shù)的

什么是本地網(wǎng)絡(luò)?

這里的本地網(wǎng)絡(luò)其實(shí)就是我們常說(shuō)的局域網(wǎng),是將設(shè)備接入路由器以后形成的網(wǎng)絡(luò),設(shè)備可以通過(guò)這張網(wǎng)絡(luò)互相通信,如我們的設(shè)備發(fā)現(xiàn)、設(shè)備綁定、局域網(wǎng)優(yōu)先等功能都是使用的本地網(wǎng)絡(luò)。

從 iOS 13 開(kāi)始,應(yīng)用想要獲得當(dāng)前連接到的 Wi-Fi 名稱,那就必須要獲得定位權(quán)限。因?yàn)橥ㄟ^(guò)識(shí)別 Wi-Fi 名稱, 應(yīng)用就能輕松地在你和周圍的人之間建立大數(shù)據(jù)網(wǎng)絡(luò)。但是不給定位權(quán)限不代表應(yīng)用就沒(méi)有辦法跟蹤你了,因?yàn)閼?yīng)用可以通過(guò)本地網(wǎng)絡(luò)里的設(shè)備進(jìn)行跟蹤。

為什么需要向用戶申請(qǐng)權(quán)限?

和iOS 13獲取WiFi名稱需要通過(guò)定位權(quán)限類似,蘋(píng)果加強(qiáng)了對(duì)用戶隱私安全權(quán)限,這里也是類似的問(wèn)題。在過(guò)去的 iOS 版本中,應(yīng)用可以隨意掃描本地網(wǎng)絡(luò)中的設(shè)備,因此應(yīng)用就可以很輕松地得到本地網(wǎng)絡(luò)里所有設(shè)備的名稱和 MAC 地址。MAC 地址是一種確認(rèn)網(wǎng)絡(luò)設(shè)備位置的地址,每個(gè)網(wǎng)卡都有一個(gè)唯一的 MAC 地址,加上 MAC 地址也具有唯一性,設(shè)備廠商會(huì)按照一定的規(guī)律分配 MAC,所以不同的局域網(wǎng)都是獨(dú)一無(wú)二可以識(shí)別的。比方說(shuō),你從線下渠道買(mǎi)了個(gè)新相機(jī),拍完照片利用相機(jī)自帶的 Wi-Fi 將照片導(dǎo)入到手機(jī)上。這時(shí)候帶有某個(gè)推廣模塊的應(yīng)用對(duì)局域網(wǎng)發(fā)起了一次掃描,識(shí)別到了一個(gè)新的設(shè)備,推廣模塊會(huì)將相機(jī)的 MAC 地址上傳了云端,進(jìn)行簡(jiǎn)單的識(shí)別對(duì)比以后,很容易知道這個(gè) MAC 地址屬于相機(jī)。這樣帶有推廣模塊的應(yīng)用都會(huì)在畫(huà)像里給你加上「相機(jī)用戶」這樣的標(biāo)簽,當(dāng)你下次打開(kāi)帶有同一個(gè)推廣模塊的購(gòu)物應(yīng)用時(shí),你就會(huì)看到推薦了一堆和相機(jī)有關(guān)的東西。

那些應(yīng)用需要使用本地網(wǎng)絡(luò)?

  • 利用本地網(wǎng)絡(luò)進(jìn)行設(shè)備發(fā)現(xiàn)
  • 利用本地網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸
  • 網(wǎng)絡(luò)調(diào)試工具

影響范圍

主要影響無(wú)法使用Socket或者Bonjour做一些局域網(wǎng)的發(fā)現(xiàn),數(shù)據(jù)傳輸。

對(duì)局域網(wǎng)應(yīng)用如:智能家居類,局域網(wǎng)游戲,網(wǎng)絡(luò)測(cè)試工具等等。本人測(cè)試了下其實(shí)也沒(méi)有那么大,因?yàn)榘l(fā)現(xiàn)這個(gè)開(kāi)關(guān),App下次啟動(dòng)后可能不會(huì)生效,暫時(shí)未定位原因。

怎么解決?

相信很多人都很奇怪為什么不整個(gè)權(quán)限申請(qǐng)或狀態(tài)查詢的接口,在翻了一些資料后發(fā)現(xiàn),居然真的沒(méi)有。 鏈接:https://developer.apple.com/forums/tags/wwdc20-10110

很無(wú)奈!

大部分應(yīng)用使用局域一般使用Socket或者Bonjour做一些局域的發(fā)現(xiàn),數(shù)據(jù)傳輸。說(shuō)在調(diào)用的時(shí)候會(huì)出現(xiàn)code:65 desc:no route to host。這是其實(shí)就是所謂的無(wú)本地網(wǎng)絡(luò)權(quán)限。但是我在測(cè)試時(shí)發(fā)現(xiàn)有時(shí)候即使是關(guān)掉本地網(wǎng)絡(luò)權(quán)限的開(kāi)關(guān),也能正常的使用UDP、TCP。簡(jiǎn)直不敢信!難道iOS 14也會(huì)想iOS 13一開(kāi)始出來(lái)一樣各種坑滿天飛?

這里的思路是

  • 通過(guò)接口獲取本機(jī)的IP地址
  • 使用(SimplePing)來(lái)ping手機(jī)的IP

整個(gè)流程的大概耗時(shí)在0.13-0.2秒之間,大部分在0.17秒左右。可能耗時(shí)還能接受。但是不知道某些路由器是否可以設(shè)置禁止ping。如果有那就炸裂了。 下面上簡(jiǎn)單的代碼

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  NSDictionary *router = [LDSRouterInfo getRouterInfo];
  pinger = [[SimplePing alloc] initWithHostName:router[@"ip"]];
  pinger.delegate = self;
  [self->pinger start];
  
}
- (void)simplePing:(SimplePing *)pinger didStartWithAddress:(NSData *)address {
  if (timer) {
    return;
  }
  timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
  dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
  dispatch_source_set_event_handler(timer, ^{
    [pinger sendPingWithData:nil];
  });
  dispatch_resume(timer);
}

- (void)simplePing:(SimplePing *)pinger didSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber {
  NSLog(@"可以使用局域網(wǎng)");
}

- (void)simplePing:(SimplePing *)pinger didFailToSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber error:(NSError *)error {
  if (error.code == 65) {//no route to host
    NSLog(@"不可以使用局域網(wǎng)");
  }
}

友情提示

  • 調(diào)上面接口可以觸發(fā)首次啟動(dòng)本地網(wǎng)絡(luò)權(quán)限的系統(tǒng)彈窗
  • 不知道某些路由器是否可以設(shè)置禁止ping
  • 整理流程在iPhone 6sp耗時(shí)130-200毫秒之間。平均值在160毫秒左右
  • 上面代碼未正式上線,本人也在測(cè)試中,請(qǐng)酌情使用。

demo

到此這篇關(guān)于淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路的文章就介紹到這了,更多相關(guān)檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • iOS實(shí)現(xiàn)小型計(jì)算器

    iOS實(shí)現(xiàn)小型計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)小型計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • iOS開(kāi)發(fā)實(shí)現(xiàn)音頻播放功能

    iOS開(kāi)發(fā)實(shí)現(xiàn)音頻播放功能

    本文給大家分享的是在IOS開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)音頻播放的功能,講解的十分細(xì)致,有需要的小伙伴可以參考下
    2016-03-03
  • 舉例講解Objective-C中@property屬性的用法

    舉例講解Objective-C中@property屬性的用法

    這篇文章主要介紹了Objective-C中@property屬性的用法,包括@property的屬性關(guān)鍵字的整理,需要的朋友可以參考下
    2016-03-03
  • iOS中鍵盤(pán) KeyBoard 上添加工具欄的方法

    iOS中鍵盤(pán) KeyBoard 上添加工具欄的方法

    大iOS中 鍵盤(pán) KeyBoard 上怎么添加工具欄呢?大致思路是提前創(chuàng)建好工具欄,在鍵盤(pán)彈出的時(shí)候?qū)⒐ぞ邫陲@示出來(lái),在鍵盤(pán)消失的時(shí)候讓工具欄隱藏。具體實(shí)現(xiàn)代碼大家參考下本文吧
    2017-08-08
  • iOS 多選刪除功能附tableViewTips及單選刪除

    iOS 多選刪除功能附tableViewTips及單選刪除

    這次分享并記錄一下tableView的多選刪除,并額外記錄一下單選刪除及tableView的設(shè)置小技巧。代碼簡(jiǎn)單易懂,需要的朋友參考下吧
    2017-05-05
  • 簡(jiǎn)介iOS開(kāi)發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)

    簡(jiǎn)介iOS開(kāi)發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)

    這篇文章主要介紹了iOS開(kāi)發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù),SQLite是一個(gè)可作嵌入式的數(shù)據(jù)庫(kù)非常適合小型應(yīng)用使用,需要的朋友可以參考下
    2015-12-12
  • iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例

    iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例

    這篇文章主要介紹了iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例,例子采用傳統(tǒng)的Objective-C語(yǔ)言編寫(xiě),需要的朋友可以參考下
    2016-03-03
  • iOS實(shí)現(xiàn)垂直滑動(dòng)條效果

    iOS實(shí)現(xiàn)垂直滑動(dòng)條效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)垂直滑動(dòng)條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 談一談iOS單例模式

    談一談iOS單例模式

    這篇文章主要和大家談一談iOS中的單例模式,單例模式是一種常用的軟件設(shè)計(jì)模式,想要深入了解iOS單例模式的朋友可以參考一下
    2016-05-05
  • iOS 捕獲程序崩潰日志

    iOS 捕獲程序崩潰日志

    我們常常會(huì)遇到iPhone手機(jī)或者iPad平板上運(yùn)行APP崩潰的問(wèn)題,有時(shí)候打開(kāi)某個(gè)APP,卻一下子“閃退”了。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),這個(gè)絕對(duì)是頭疼的問(wèn)題。那么如何獲取到iOS設(shè)備崩潰日志呢?這個(gè)提供一些簡(jiǎn)單的方法,共開(kāi)發(fā)者與用戶溝通使用。
    2015-06-06

最新評(píng)論