ios networkExtension使用中遇到的問題

需要開發(fā)一個特殊的app。所以需要用到networkExtension。但在使用過程中遇到了很多問題,在這里記錄一下。因為我自己也是新手在做這個的時候到處找不到資料很痛苦啊。如果中間有錯誤的地方還請大佬們指正。

1.為什么要用networkExtension

蘋果巴巴為了省電等需求在我們的app退到后臺后,是不會讓我們的app活多久的。但是要做一個代理全部手機上網(wǎng)絡流量的app就需要能夠在我們的app退出后依然能夠工作。networkExtension就是蘋果給我們的方案。

2.創(chuàng)建target

在我們是用networkExtension的時候,它已經(jīng)不是我們當前的app了而是一個獨立的app。所以就需要在當前項目中創(chuàng)建一個netwokrExtension的target。如截圖中箭頭指示的

第一步選擇添加一個target。

第二步選擇NetworExtension。然后輸入項目名稱就好了。


p-1

第三步 需要配置Netwokr Extensions 和 Personal XXX 這兩個權限在以前是需要去申請的,現(xiàn)在只要你的賬號是開發(fā)者賬號就可以直接選擇添加,選擇好了后是如p-2這樣的。但是有一點不要忘了就我們的主app和擴展app的target這里都需要添加這兩個權限。

p-2

3.擴展app的調(diào)試及打印

調(diào)試

擴展app的調(diào)試根據(jù)擴展app的類型來區(qū)分有2種方式。

*? 一種是普通類型的APP 直接運行擴展app就好了。

*? 另一種是通知類 需要啟動主工程,然后選擇Xcode -> Debug -> Attach to process by pID or name? ?這里有個坑就是你需要輸入的是擴展app的 Display Name 而不是Bundie Idetifier。我當時就被這個坑慘了。

打印

擴展的打印一直困擾了我很久。網(wǎng)上看到了很多方案,但是我都沒有跑通。我這里就說一下我使用的方案。就是利用系統(tǒng)日志。在console中輸出打印。打印的方法在iOS10以前可以用NSLog() 方法直接就能夠把打印輸出到console中,在iOS10以后需要使用os_log()方法,如果你找不到這個方法,可以試著引入 import os庫。當然os_log方法功能有限,這里推薦一個第三方庫CocoaLumberjack? OC和swift都支持。也是可以輸出到console中的。

4.擴展程序中添加橋接文件

在擴展程序中可能會用到OC/C/C++這些語言寫的類。我們就需要用到橋接文件了。和我們正常使用橋接文件是一樣的,你可以在擴展程序中新建一個橋接文件 然后在擴展程序的target中添加這個橋接文件。就可以正常引用C/C++/OC的方法了。

這里有一個建議就是在擴展程序中單獨建一個橋接文件,不和主app公用一個橋接文件。這樣橋接文件在引用頭文件時不會出現(xiàn)頭文件路徑不對,找不到的問題。


5.流量攔截及如何處理不希望攔截的流量

本身這個問題是和使用networkExtension沒有關系的,因為我自己腦子轉(zhuǎn)不過來在這個問題上卡了很久所以才拿出來說。當我們使用packetFlow.readPackets讀取到ip數(shù)據(jù)包后,我們把分析了數(shù)據(jù)后,一部分數(shù)據(jù)我們會代理,但是有一些數(shù)據(jù)我們不想處理怎么辦?我最后的解決方法是把這些數(shù)據(jù)在發(fā)到這些數(shù)據(jù)的目標服務器去,是tcp就建立tcp連接發(fā)送,是udp就建立udp連接發(fā)送。五元組的數(shù)據(jù)是能夠在ip數(shù)據(jù)包中拿到的。

6.一個可用的封裝的tun2socks ios庫

ios這邊我找了很久都沒有找到一個可以使用的tun2socks的庫,最后找到了這個庫。感覺很厲害
https://github.com/zapcannon87/ZPTCPIPStack

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 因為要結(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,852評論 0 12
  • 十月懷胎娘遭難,一朝落地娘心寬; 赤身無有一根線,問爹問娘要吃穿; 夜夜五更難合眼,娘睡濕處兒睡干。 東拜菩薩西拜...
    張蕓_閱讀 361評論 0 0
  • 春風還沒有很暖,但陽光已經(jīng)刺眼。 期待和你再見面,也已料到你會對我再無片語只言。 我夠固執(zhí),你也夠我持此執(zhí)念。
    大耳朶_Ear閱讀 187評論 0 1
  • 三十幾年一晃而過,習慣了過年的忙碌,害怕,期待,終于在婚后有了自己的小家年。 女兒結(jié)婚就是一道分水嶺,你不在是娘家...
    生命的赤道閱讀 376評論 0 1
  • 很難受
    010ed0d5a362閱讀 177評論 0 0

友情鏈接更多精彩內(nèi)容