使用来自网络的图片更新iOS应用

时间:2014-02-27 23:33:52

标签: ios image web uiimageview

我正在开发免费的应用程序,并有2张图片(一个透明的叠加层)作为背景。我将从我的网络每月更改这两个图像。图像更新过程,但应用程序如何知道,如果图像在网络上发生了变化?启动应用程序时,我想实现以下目标:

  1. 在启动应用之前检查可用于图片的更新
  2. 下载图片,本地存储,用作背景
  3. 如果没有新图像,请使用默认
  4. 启动应用
  5. 有人可以通过比较/网络请求流程指向正确的方向吗?

    这是我到目前为止所拥有的:

    viewDidLoad方法

     self.imageData = [[NSMutableData alloc]init];
    [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.blahblah.com/newImage.jpg"]]delegate:self];
    

    其余代码:

      - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
     {
        self.length = [response expectedContentLength];
     }
     - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [self.imageData appendData:data];
        float progress =  (float)[imageData length]/(float)self.length;
        [self.progressView setProgress:progress animated:YES];
    }
     - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        NSLog(@"didFailWithError");
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        UIImage *img = [UIImage imageWithData:self.imageData];
        self.backgroundImageView.image = img;
        [self saveLocally:self.imageData];
    }
    // save
    - (void)saveLocally:(NSData *)imgData
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSDate *aDate = [NSDate date];
        NSTimeInterval interval = [aDate timeIntervalSince1970];
        NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.jpeg",(int)interval]];
        [imgData writeToFile:localFilePath atomically:YES];
    }
    

    感谢您的时间!

2 个答案:

答案 0 :(得分:1)

如果我能正确理解你的问题,你可以尝试一些方法。

一种方法是在网络上发布一些包含图像文件的文件名和/或大小的文本文件,如果文件大小与您在本地保存的图像及其大小不匹配,则可以然后更新(即下载新副本)设备上的图像。

这样,在下载较大的图像文件之前,您只需下载一个非常小的文件(包含这些数字的文本文件)。

答案 1 :(得分:1)

我希望你的应用程序中有一些json类型的功能,并通过imagename键值进行检查,并将旧的图像名称字符串与检索json数据键值进行比较,如果你找到更改,我做了更改我最近正在处理类似的应用程序的类型不完全相同,但是是服务器端应用程序,并且必须提供应用程序的离线模式,所以我得到的json我通常保存到我的库,即使图像以及下次我检索我的json数据我只同步新的类别,图像或其他什么。它的实时流视频应用程序类似于bbc新的应用程序类型