搭建手机本地服务器


搭建手机本地服务器,可以保存在iOS沙盒中,从沙盒去获取存在本地的html,配置文件和证书文件的安装,从而本地配置信息,不走服务器,更加快速配置使用配置文件和页面的展示

用到的框架 RoutingHTTPServer  

CocoaHTTPServer

CocoaAsyncSocket

添加这些文件

编译没有出错的情况下就开始搭建了

在appdelegate导入头文件

#import "RoutingHTTPServer.h"

添加属性

@property (strong, nonatomic , readonly)RoutingHTTPServer *httpServer;

在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ;中添加开启服务器的代码

// Create server using our custom MyHTTPServer class

_httpServer = [[RoutingHTTPServer alloc] init];

/* * * * * * * * *  add By AK  * * * * * * * * * * * * * */

/*      设置文件格式为 Apple.mobileconfig      */

[_httpServer setDefaultHeader:@"Content-Type" value:@"application/x-apple-aspen-config"];

[_httpServer setType:@"_http._tcp."];

[_httpServer setPort:8000];

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

[_httpServer setDocumentRoot:documentsDirectory];

NSLog(@"%d",_httpServer.isRunning);

if (_httpServer.isRunning){

[_httpServer stop];

};

NSError *error;

if([_httpServer start:&error]) {

NSLog(@"Started HTTP Server on port %hu", [_httpServer listeningPort]);

} else {

NSLog(@"Error starting HTTP Server: %@", error);

[self startServer];

}

其中端口号在测试的时候必须添加端口才可以使用,

在加载描述文件,所以添加类型

把你对应的文件存放在对应的沙盒中

使用UIApplication 来用safari 来启动你所使用的html文件或者是描述文件

NSURL *url1 = [NSURL URLWithString:@"http://127.0.0.1:8000/pptp1.html"];

if([[UIApplication sharedApplication] canOpenURL:url1]){

[[UIApplication sharedApplication] openURL:url1];

}

问题:

当程序在后台的时候,从后台调出app可能导致服务器断开,但服务器却无法检测

再次调用url会出现无法访问服务器

解决1:添加一个UIBackgroundTaskIdentifier来让app进入后台的时候运行一段时间

在app delegate中

@property (nonatomic, unsafe_unretained)UIBackgroundTaskIdentifier bgTask;

在- (void)applicationDidEnterBackground:(UIApplication *)application中添加

if(!_bgTask) {

_bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{

dispatch_async(dispatch_get_main_queue(), ^{

[application endBackgroundTask:_bgTask];

_bgTask = UIBackgroundTaskInvalid;

});

}];

}

问题2:可能时间过长还是导致服务器失效


无效,服务器是正常的,没有断开连接.

我解决的办法

在- (void)applicationDidEnterBackground:(UIApplication *)application

app进入后台的时候关闭服务器,调用

[_httpServer stop];

当app进入前台- (void)applicationDidBecomeActive:(UIApplication *)application

再次开启

NSError *error;

if([_httpServer start:&error]) {

NSLog(@"Started HTTP Server on port %hu", [_httpServer listeningPort]);

} else {

NSLog(@"Error starting HTTP Server: %@", error);

// Probably should add an escape - but in practice never loops more than twice (bug filed on GitHub https://github.com/robbiehanson/CocoaHTTPServer/issues/88)

[self startServer];

}

你可能感兴趣的:(搭建手机本地服务器)