iOS开发——网络编程OC篇&使用WebView构建HyBird应用

使用WebView构建HyBird应用

HyBird是一种本地技术与Web相结合,能过实现跨平台的移动应用开发,最常用的一个框架:PhoneGap

一:首先,写好html代码

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
 5         <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
 6         <script>
 7             //从iOS对象中调用
 8             function  helloWorld(msg) {
 9                 document.getElementById(‘message‘).innerHTML = msg;
10             }
11             //调用iOS对象
12             function showAndroidDialog(msg) {
13                 var myJSONObject = new Object();
14                 myJSONObject.title = ‘HelloWorld‘;
15                 myJSONObject.message = msg;
16                 var JSONString = JSON.stringify(myJSONObject);
17                 var uri = ‘gap://XXXClass.XXXmethod#‘ + JSONString;
18                 window.location = uri;
19             }
20          </script>
21
22     </head>
23     <body>
24         <h2>iOS本地与Web互相调用</h2>
25         <button onclick=‘showAndroidDialog("JS to iOS 对象")‘>调用iOS对象</button>
26         <br><br>
27         <div  id=‘message‘></div>
28     </body>
29 </html>

二:在iOS中调用javaScript代码:

 1 - (void)viewDidLoad
 2 {
 3     [super viewDidLoad];
 4     // Do any additional setup after loading the view, typically from a nib.
 5
 6     self.webView.delegate = self;
 7     NSString *path = [[NSBundle mainBundle] pathForResource:@"www/index" ofType:@"html"];
 8     [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: path]]];
 9 }
10
11 - (void)didReceiveMemoryWarning
12 {
13     [super didReceiveMemoryWarning];
14     // Dispose of any resources that can be recreated.
15 }
16
17 #pragma mark UIWebViewDelegate
18
19 - (void)webViewDidFinishLoad:(UIWebView *)webView
20 {
21     [self.webView stringByEvaluatingJavaScriptFromString:@"helloWorld(‘从iOS对象中调用JS Ok.‘)"];
22 }
23
24
25 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
26 {
27     NSString *actionType = request.URL.host;
28     NSString *scheme = request.URL.scheme;
29     NSString *fragment = [request.URL.fragment URLDecodedString];
30     NSData *responseData = [fragment dataUsingEncoding:NSUTF8StringEncoding];
31
32     if ( [scheme isEqualToString:@"gap"] ) {
33         if ([actionType isEqualToString:@"XXXClass.XXXmethod"]) {
34
35             NSError* error;
36             NSDictionary* json = [NSJSONSerialization
37                                   JSONObjectWithData:responseData
38                                   options:NSJSONReadingAllowFragments
39                                   error:&error];
40
41             NSLog(@"title: %@ , message: %@",[json objectForKey:@"title"], [json objectForKey:@"message"] );
42
43         }
44     }
45     return true;
46 }

注:这里用到了一个NSString的分类用于字符串雨URL的编码与解码

 1 - (NSString *)URLEncodedString
 2 {
 3     NSString *result = (NSString *)
 4     CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
 5                                             (CFStringRef)self,
 6                                             NULL,
 7                                             CFSTR("!*‘();:@&amp;=+$,/?%#[] "),
 8                                             kCFStringEncodingUTF8));
 9     return result;
10 }
11
12 - (NSString*)URLDecodedString
13 {
14     NSString *result = (NSString *)
15     CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
16                                                             (CFStringRef)self,
17                                                             CFSTR(""),
18                                                             kCFStringEncodingUTF8));
19     return result;
20 }
时间: 2024-08-01 22:47:53

iOS开发——网络编程OC篇&使用WebView构建HyBird应用的相关文章

iOS开发——网络编程OC篇&amp;(三)数据请求

一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:urlStr]; 4 5 // 2.创建请求对

iOS开发——网络编程OC篇&amp;(九)数据解析

数据解析 关于iOS开发的中数据解析的方法有两种JSON和XML,这里只做简单的介绍,会使用就可以了. JSON—— 关于JSON的解析经过很多爱好者的分析使用相同自带的还是最好的,不管是从使用的容易度还是性能方面 NSJSONSerialization 1 -(void)start 2 { 3 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"json"]; 5

iOS开发——网络编程OC篇&amp;Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

iOS开发——网络编程OC篇&amp;总结

网络开发总结 一.一个HTTP请求的基本要素 1.请求URL:客户端通过哪个路径找到服务器 2.请求参数:客户端发送给服务器的数据 * 比如登录时需要发送的用户名和密码 3.返回结果:服务器返回给客户端的数据 * 一般是JSON数据或者XML数据 二.基本的HTTP请求的步骤(移动客户端)1.拼接"请求URL" + "?" + "请求参数" * 请求参数的格式:参数名=参数值 * 多个请求参数之间用&隔开:参数名1=参数值1&参数

iOS开发——网络编程OC篇&amp;(十)NSURLConnection/NSSeccession

一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSURLConnection的使用 1.简单说明 使用NSURL

iOS开发——网络编程OC篇&amp;(一)XMPP简单介绍与准备

XMPP简单介绍与准备 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容. 有许多的IM系统,如AOL IM.Yahoo IM. MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议. 协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过

iOS开发——网络编程OC篇&amp;(十二)AFN详解

AFN详解 众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的操作,同时还要考虑请求数据的安全等一堆问题. 一.早前的几个网络框架 1.ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2.MKNetworkKit (印度人写的). 3.AFN一直还在更新. AFNetworking的出现:MAC/iOS设计的一套网络

iOS开发——网络编程OC篇&amp;(五)网络监控

网络监控 随着移动网络升级:2G->3G->4G甚至相传正在研发的5G,网络速度是越来越快,但这流量也像流水一般哗哗的溜走. 网上不是流传一个段子: 睡觉忘记关流量,第二天房子就归移动了! 这固然是一种夸张的说法,但是作为一个优秀的App开发人员,我们需要在App中给出最恰当的提示. 在需要花费大量流量的时候(例如:视频,下载等)给出一些提示. 在用户视频期间用户切换网络的时候给出是否继续观看的提示! 下面笔者就给出一种可以实时监控网络状态改变的方法! 笔者使用的是网络流传最广的网络监控类:R

iOS开发——网络编程OC篇&amp;数据请求总结

数据请求总结 1 //**************************************GET 2 //同步 3 /* 4 //第一步,创建URL 5 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720