iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
大家知道,客户端的域名或IP地址是固定不变的,而客户端的ip地址一般是随机变换的。所以客户端可以直接通过域名向服务器发送请求消息,而服务器无法主动主动向客户端发送消息,只能通过客户端的回调来给客户端发送信息或调用客户端的函数。 那么服务器怎么随时联系客户端呢?通过客户端轮训来通过回调的方式给客户端传递消息,十分浪费流量,要不断建立而h5页面如何和客户端之间如何通信呢?它可没有能力建立socket连接啊?只能通过回调的方式通信了。 ios客户端如何调用h5页面呢?我自己写了一个通用处理类很简单,几行代码就可以了。下面是调用的代码:
-(void)auctionGuide:(UIButton *)button{ AECommonJSBridgeAndProgressViewController *jsWebview = [AECommonJSBridgeAndProgressViewController new]; NSString *urlSTR= [NSString stringWithFormat:@"%@/getAuctionGuide.ns",kBaseURL]; [jsWebview setupWithUrl:urlSTR handleNameArray:[NSArray arrayWithObjects:@"callPhone", nil] handleTimes:1]; [self.navigationController pushViewController:jsWebview animated:YES];}
简单吧?传递一个url地址就可以了。传递一个回调函数名数组就可以了。我这个h5页面最多只支持处理3个回调函数,handleTimes参数代表回调的函数个数。我的h5通用处理类会自动注册h5调用的函数。我这个类使用了ReactiveCocoa库(@weakify(self),@strongify(self);),用于处理block。在Podfile文件中增加pod ‘ReactiveCocoa’,'2.5’就可以导入ReactiveCocoa。 这个处理h5的通用类我放到资源文件里混点分。当然你也可以用其它方式调用h5,注册函数也很简单。在网上一搜一大把。
h5页面如何写回调ios客户端,我在网上查一个几十篇文章,试了很多遍,结果没有发现一个是正确的,都不能回调ios客户端。看来问题就出在细节处理上。为何没有一个详细的文章介绍呢!我毕竟不是专业 写h5页面的,把几篇文章结合一下才调用ios客户端成功。下面是h5页面回调iOS客户端注册的函数了的详细代码。