iOSiOSiOS Tips

关于客户端与safari通信

2015-12-28  本文已影响503人  bde04638cca8

  由于最近项目中要求客户端与safari之间的通信,我看了很多文章和demo关于这方面。主要分为三类:①  schemeUrl跳转 ;②在客户端建立一个httpserver,服务器请求客户端 ;③在客户端建立一个WebSocketServer,与服务器进行数据交互。

  首先来说说第一种,schemeUrl跳转应该比较基础的。

第一步在客户端创建scheme,可以与后台约定一个字符串,也可以随便写,只要你开心。

第二步适配iOS 9,你还必须的在info.plist中创建LSApplicationQueriesSchemes,填上你的scheme。适配iOS9请点击这里

第三步等约定好了scheme之后,你就可以通过safari打开你的App了,在safari浏览器中输入myapp://就可以跳到你的app了哦。(schemeUrl最好都用小写,就算客户端用的是大写,系统还是会默认为小写的);

最后在myapp://带一个json字符串,这样我们通过NSString * urlString=[url absoluteString]就获取到了后面的NSString。

配置scheme

然后再来说说第二种HttpServer

HttpServerDemo请点击这里

cocoahttpserver使用很简单,把文件夹拷贝进项目即可。

然后初始化服务器

httpServer = [[HTTPServer alloc] init];

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

// [httpServer setPort:12345];

NSString * webLocalPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Web"];

[httpServer setDocumentRoot:webLocalPath];

NSError * error;

if([httpServer start:&error]){

NSLog(@"start server success in port %d %@",[httpServer listeningPort],[httpServer publishedName]);

}else{

NSLog(@"启动失败");

}

这个时候你的客户端的服务器就已经创建成功了。是不是很简单。

最后一种,也是最有趣的,也是功能最强大了。

详情请点击WebSocketDemo

初始化代码:

[[BLWebSocketsServer sharedInstance] startListeningOnPort:8686 withProtocolName:@"websocket" andCompletionBlock:^(NSError *error) {

if (!error) {

NSLog(@"Server started");

}else{

NSLog(@"+++++%@", error);

}

}

//处理服务器请求的回调

[[BLWebSocketsServer sharedInstance] setHandleRequestBlock:^NSData *(NSData *data) {

return data;

}

记得判断一下![BLWebSocketsServer sharedInstance].isRunning是不是在后台运行,如果不是记得创建。如果想让客户端一直后台,其实很简单。开启后台播放音乐权限,一直播放音乐就好了。

上一篇 下一篇

猜你喜欢

热点阅读