小胖博客

记录开发和使用中的点滴

iOS开发实战-科学上网 NetworkExtension食用教程

写在前面

之前由于一些关键字问题被简大叔给封锁了…我还是换成正常的来吧~鉴于此顺便给自己开了个 简单的wordpress博客有兴趣的可以去看看吧~~~
最近闲来无事,又跟小伙伴搞起.自由冲浪.的项目,于是这个项目就来了.

项目介绍

运用Apple NetworkExtension框架(现在不用单独申请了哟),搭配NEKit 配置S最终实现….上网

  • 首先感谢zhuhaow的优秀框架NEKit帮我们做了很多网络相关的处理,原则上我们只用专注UI就可以很方便的在iOS OSX平台开发出一个简单的S客户端

  • 再来就是感谢称一称小哥的优秀Demo,该Demo几乎就是一个iOS平台的S客户端

  • 本项目为Swift项目

  • 根据NEKit的使用帮助,这边第三方类库管理工具我们使用Carthage

  • 本文已称一称小哥的Demo为主

项目准备

一.安装NEProviderTargetTemplates.pkg

由于未知原因苹果在mac OS 10.12中删除了这个文件,因此我们需要从10.11系统中提取或下载–百度网盘
安装完毕后,在新增build target中我们就可以看到多了AppProxy和 Package Tunnrl Provider。我们选择Package Tunnrl Provider

《iOS开发实战-科学上网 NetworkExtension食用教程》

《iOS开发实战-科学上网 NetworkExtension食用教程》

打开项目将2个Target的Capabilites中的PersonalVPN和NetworkExtesions开关打开,注意是两个都开哦

《iOS开发实战-科学上网 NetworkExtension食用教程》

二.连接VPN

首先,我们需要在主程序中像系统生名一个ProviderManager,即设置VPN中的栏目。

三.简单配置extension

由于目前我使用的是Swift3.0,这时候我们需要修改Extension中的几个方法修改一下

四.启动VPN

启动VPN很简单,只需对ProviderManager执行startVPNTunnelWithOptions()方法即可

连接成功会manager.connection.status会发生相应改变,因此我们需要在按下连接按钮后监听status,从而知道目前Vpn的连接状态

五.关于Debug调试

  • Extension debug不同于正常的程序,尽量使用NSlog代替print,即可在系统日志中查看到内容。同时,如果需要Debug,可通过Xcode->Debug->Attach To Process 选择你的Tunnel名进行debug
    打开控制台console就能看到所有日志 筛选一下当前的target就能看到日志信息了

六.传SS递配置文件

我们需要在主程序中传递类似账号、密码、端口、加密方式等参数给我们的VPN组件。

  • 主程序写入

  • target读取

七.导入NEKit

根据NEKit导入方法 直接导入即可
导入成功后记得copy framework哦,脚本copy和手动添加都是可行的

八.上架问题

90080,90087,90209,90125报错

在上架时如果直接使用会报错90080,90087,90209,90125等错误,这是由于NEKit中包含了x86_64, i386 架构,当然这个AppStore是不允许的,所以会在上传的时候报错
解决方法: Build Phases – New Run Script Phase
《iOS开发实战-科学上网 NetworkExtension食用教程》

添加如下代码

《iOS开发实战-科学上网 NetworkExtension食用教程》

CFBundleShortVersionString报错

这是由于NEKit没有设置版本号
找到NEKit的framework将info.plist中的版本号
《iOS开发实战-科学上网 NetworkExtension食用教程》

《iOS开发实战-科学上网 NetworkExtension食用教程》

九.Demo食用方法

  • 添加CommonCryptoframework
    >由于CommonCrypto框架的问题需要在Cartfile中添加
    github "soffes/CommonCrypto"
  • 导入NEKit
    >按照demo上使用Carthage导入NEKit
    运行carthage update --no-use-binaries --platform ios
    关闭项目Capabilites中AppGroups开关 将entitlements中相关的 groups属性删除即可

我不是广告

宣传一波牛.牛牛.牛牛.牛8折优惠码:MHO5TKGQ64 (只能用10次哦~) 已锐速,欢迎免费体验,希望你们看到的时候还没被请去喝茶

结语

最后再次感谢NEKit?和称一称提供的Demo ?

很高兴App 已经过审, 有兴趣的可以玩玩牛牛数据 支持iPad哦
Mac版已成功上架

发表评论

电子邮件地址不会被公开。