欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

實現(xiàn)檢測iOS14本地網(wǎng)絡(luò)權(quán)限的方法-創(chuàng)新互聯(lián)

實現(xiàn)檢測iOS14本地網(wǎng)絡(luò)權(quán)限的方法?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)金昌免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

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

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

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

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

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

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

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

影響范圍

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

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

怎么解決?

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

很無奈!

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

這里的思路是

  • 通過接口獲取本機的IP地址
  • 使用(SimplePing)來ping手機的IP

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

- (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)");
  }
}

分享名稱:實現(xiàn)檢測iOS14本地網(wǎng)絡(luò)權(quán)限的方法-創(chuàng)新互聯(lián)
文章來源:http://chinadenli.net/article24/eocje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管外貿(mào)建站App設(shè)計關(guān)鍵詞優(yōu)化網(wǎng)站設(shè)計網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化