admin管理员组

文章数量:1579890

2024年7月19日发(作者:)

龙源期刊网

基于iOS 平台Safari 浏览器的设计与实现

作者:张磊

来源:《电脑知识与技术》2013年第28期

摘要:随着移动互联网发展越来越快,iOS成为发展最为迅速的手机操作系统之一。基于

IOS平台的safari浏览器的开发由此产生,该文使用Objective-C语言和Sqlite数据库技术,在

Xcode环境下,实现基于iOS平台的Safari浏览器系统,为用户提供了一个快速上网浏览的入

口,不仅满足了用户的需求,而且使用户的体验更加良好。

关键词:iOS;Safari;Sqlite;Xcode

中图分类号:TN929 文献标识码:A 文章编号:1009-3044(2013)28-6322-05

随着互联网的发展,浏览器逐渐成为新一代浏览网络资源的工具。由于苹果的市场份额越

来越来越大,采用iOS系统的智能手机市场份额越来越大,为了能够方便用户在手机上浏览网

页,浏览器Safari的iOS客户端的开发也就应运而生。同时Safari 先进的新功能令它成为遨游

网络的绝佳方式。Safari 的搜索如今更智能,可以让你更迅速地找到所需网页。而且,它还会

以精彩的新方式为你显示所有打开的标签[1]。由于iPhone、iPad、itouch在国内市场份额较

大,而且苹果提供给开发者成熟的开放API接口和完善的SDK开发包,以及大量的第三个

库。 能够方便开发者很快的做出自己的Safari浏览器客户端应用[2]。

1 关键技术

1.1 Xcode开发环境

我们通常使用Xcode开发苹果软件应用程序, 自4.0开始,开发人员用Xcode开发基于

iOS的iPhone、iPod Touch 、iPad设备应用程序,程序员通常在Mac OS X 10.6.2 以上版本

Mac OS 操作系统上安装iOS SDK,程序员可以使用 Xcode把应用程序部署到iOS设备上,

Xcode提供的应用程序开发环境友好而方便, Xcode支持多种语言进行程序设计,比如说:

C、C++、Objective-C、Java。另外,Xcode 的编译速度也极快 [3]。

2 需求分析

Safari浏览器是一款功能强大的浏览器,主要完成的功能为快速浏览网页,添加本地书

签,添加分组,多网页之间的交互与他们之间的切换。具体系统需要完成的功能主要有以下几

点:

1)利用Safari中的标签浏览。

2)只需一次点击开启独立窗口界面。

龙源期刊网

3)Safari在所有地方都令文本美观而易于阅读。

3 系统设计

本系统的框架图如图1所示,应用层即为搜索页面,支撑系统的数据库和图形显示工具包

是Sqlite和搜索结果视图。对用户搜索的页面的结果进行显示时,Sqlite作用是用来存储历史

数据。Sqlite占用资源极少,在设备中只需要几百KB内存就够了,并且处理速度比大部分的

普通数据库都要快,所以本系统采用了Sqlite数据库。搜索结果的页面主要由系统提供的API

来实现,将网页、图像、文字呈现出来。

3.1功能模块设计

本文Safari浏览器分为五个基本功能模块:网页模块、书签模块、阅读列表模块、分组模

块、历史记录模块、分页浏览模块。本系统的功能模块图如图2所示。

4 系统详细设计

4.1 系统整体流程

在系统开始时需要对数据库进行初始化,如果没有数据库,那么创建数据库,如果数据库

已经存在,那么使用应经存在的数据库为之后的一切程序活动做好准备。如图所示:首先打开

浏览器,输入网址,点击回车加载网页,浏览网页的过程中保存历史记录,若需要添加书签,

则进行添加书签的操作。

在整个系统的过程中,初始化工作,数据处理和显示过程做好准备,打开数据库,方便数

据处理操作,方便面程序数据的加载。系统开始启动,初始化以及加载网页的过程,主要是对

核心资源进行配置和加载,一旦失败,必须反复加载直至成功。不能直接退出系统。本系统流

程图如图3所示。

4.2书签模块

书签模块主要完成的是添加书签、删除书签、已经载入书签的操作,通过书签加载网页,

完成后将网页显示在屏幕上,添加书签,首先存储在内存中,然后将网页的信息通过书签写入

Sqlite数据库中,从而实现数据的持久化。同样,删除书签也是将对数据库进行操作,将书签

从Sqlite数据库中删除。加载书签,用户点击书签的单元格后,Webview读取出书签中存数的

url,开始加载网页,将网页的内容显示到屏幕中,至此完成书签添加,书签删除,载入书签的

操作。

4.3数据库设计

龙源期刊网

E-R图如图5所示为本系统数据库E-R图。本系统的数据库实体主要有书签信息和分组信

息。

如图5所示,每个书签中都包过网站名和王网站地址两种信息,每个书签对应一条自己的

基本信息。

4.4 数据表设计

基本信息user表 如表1所示基本信息所含三个属性。

5 系统编码与实现

5.1 书签、分组、历史记录管理模块

创建UITableView加载表视图,将表视图分为两部分,两部分的section分别为0、1。0

表示呈现以组为单位的cell,而1表示以书签为单位的cell。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:

(NSIndexPath *)indexPath

{

static NSString * CellIdentifier = @"Cell";

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:

CellIdentifier]autorelease];

}

if (n == 0) {

NSString * str = [[groupArray objectAtIndex:]valueForKey:@"image"];

= [UIImage imageNamed:str];

= [[groupArray objectAtIndex:]valueForKey:@"name"];

oryType = UITableViewCellAccessoryDetailDisclosureButton;

龙源期刊网

return cell;}

if (n == 1) {

= [UIImage imageNamed:@""];

= [[webArray objectAtIndex:] valueForKey:@"name"];

= [[webArray objectAtIndex:]valueForKey:

@"address"];

return cell;

}}

如图6所示,点击历史记录推出历史记录的表示图,可以实行加载历史记录网页的功能,

也可以执行删除历史几率的功能。

- (void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

if (editingStyle == UITableViewCellEditingStyleDelete) {

NSString * str = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

NSUserDomainMask, YES)objectAtIndex:0];

NSString * filePath = [str stringByAppendingPathComponent:@""];

FMDatabase * db =[FMDatabase databaseWithPath:filePath];

if ([db open]){

NSLog(@"***database is opened!");

[db executeUpdate:@"delete FROM User where name=?",[[webArray objectAtIndex:

]valueForKey:@"name"]];

[webArray removeObjectAtIndex:];

龙源期刊网

[iew deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]

withRowAnimation:UITableViewRowAnimationAutomatic];

}}

else if (editingStyle == UITableViewCellEditingStyleInsert) {

// Create a new instance of the appropriate class, insert it into the array, and add a new row to

the table view

} }

设置返回每一个单元行的样式,。取出数据库中的数据,将其放在一个数组中,最后像是

在单元行的View上。判断每一行的是否能被编辑,若能编辑,则可以进行删除和增加的操

作。若不能编辑,则不做任何操作。

-(void)tableView:(UITableView *)tableView

accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

{

if (n == 0 && == 0) {

HistoryViewController * historyView = [[HistoryViewController alloc]init];

[tionController pushViewController:historyView animated:YES];

[historyView release];

}

if (n ==0 && == 1) {

ReadListViewController * readList = [[ReadListViewController alloc]init];

[tionController pushViewController:readList animated:YES];

[readList release];

}

if (n == 0 && == 2) {

龙源期刊网

ICouldViewController * ICould = [[ICouldViewController alloc]init];

[tionController pushViewController:ICould animated:YES];

[ICould release];

}}

6 总结

本文对一个基于IOS的Safari浏览器进行了实现。Safari浏览器推出以后,从世界范围内

来看都已得到了广泛的应用,而Safari浏览器也随着iPhone、iPad、等商品的发展有了很大的

进步。Safari浏览器在国内外的发展态势良好,对社会的现代化发展有着积极的推动作用。目

前,Safari浏览器需求在iOS客户端中中显得愈发重要,Safari浏览器具有非常大的潜在市

场,Safari浏览器的使用越来越渗透到人们生活的方方面面,给人们的日常生活带来了巨大的

便利。

参考文献:

[1] 齐京. 开发iPhone移动应用程序[J].科技创新导报, 2012(17):9-11.

[2] 科昌.Object-C程序设计[M]. 4版.北京:电子工业出版社,2012:135.

[3] 刘鹏. 基于iOS的个人健康管理系统客户端的开发[D]. 大连:大连理工大学,2012.

本文标签: 书签系统浏览器