现在的位置: 首页 > 综合 > 正文

如何改进iOS App的离线使用体验

2014年06月08日 ⁄ 综合 ⁄ 共 930字 ⁄ 字号 评论关闭

App Store中的App分析

App已经与我们形影不离了,不管在地铁上、公交上还是在会场你总能看到很多人拿出来手机,刷一刷微博,看看新闻。

据不完全统计有近一半的用户在非Wifi环境打开App,以下为一个典型iPhone和Android App(50W+用户)的友盟后台数据:

1

2

3G、2G的数据连接往往不稳定(特别在公交或者地铁上),这时打开一些App就会像这样:

IMG_2159IMG_2163IMG_2160

当然也会有一些体验很好的App,在离线状态下也能顺畅使用:

IMG_2149IMG_2150IMG_2161IMG_2162

甚至提供了离线阅读功能:

IMG_2158

 

如何做?

打开过的文章、下载过的音频、查看过的图片我们都希望Cache到本地,下次不用再向服务器请求。

首先,我们为了最快让用户看到内容,会在ViewDidLoad加载Cache数据,如:

1
2
3
4
-
(
void)viewDidLoad
{
 
    [self
getArticleList:0 length:SECTION_LENGTH useCacheFirst:YES];
}

然后在viewDidAppear中向服务器请求最新数据,如

1
2
3
4
5
6
7
8
-
(
void)viewDidAppear:(BOOL)animated
{
     
    [super
viewDidAppear:animated];
 
    //...
 
    [self
getArticleList:0 length:SECTION_LENGTH useCacheFirst:NO]
}

当然这里的getArticleList接口有useCacheFirst参数,我们需要网络请求模块能够支持这一点,下面就介绍这些库和工具。(借助一些工具很容易能做到这些,而不用自己造轮子。遵循“凡事都应该最简单,而不过于简陋”的原则,这里整理一下,方便项目中使用)。

 

1.NSMutableURLRequest

Sample(参考麒麟的文章《iOS开发之缓存(一):内存缓存》来使用NSURLCache):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
NSString
*paramURLAsString= @
"http://www.baidu.com/";
if ([paramURLAsString
length] == 0){

抱歉!评论已关闭.