如何在iOS上执行背景检查?

时间:2013-09-12 22:23:09

标签: ios background-process

我需要对我的iOS应用进行非常简单的背景检查。它只需要对我的Web服务器进行一次调用,并检查它在我的应用程序中检索的数字。有可能做那种背景调查吗?如果是这样我该怎么办呢?

修改

澄清我的背景意思:我的意思是电话背景。当应用程序不存在时。是否可以在后台执行此请求?显然,应用程序没有完全关闭多任务处理。

4 个答案:

答案 0 :(得分:1)

对于NSOperationQueue来说,这听起来很完美。

http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues

您可以编写操作,然后在需要时将其放入队列。

或者,更简单地说,你可以做一个非常简单的异步调用。

+ (NSArray *) myGetRequest: (NSURL *) url{

  NSArray *json = [[NSArray alloc] init];

  NSData* data = [NSData dataWithContentsOfURL:
                url];
  NSError *error;

  if (data)
     json = [[NSArray alloc] initWithArray:[NSJSONSerialization
                                           JSONObjectWithData:data
                                           options:kNilOptions
                                           error:&error]];

  if (error)
     NSLog(@"%@", error)

  return json;
}

然后把它放在一个简单的调度块中......

dispatch_queue_t downloadQueueA = dispatch_queue_create("updater", NULL);
dispatch_async(downloadQueueA, ^{
    // stuff done here will happen in the background
    NSArray * arrayOfData = [self myGetRequest: myURL];
    // could be array... dictionary... whatever, you control this by returning the type of data model you want from the server formatted as JSON data
    NSString * stringValue = arrayOfData[index];

    dispatch_async(dispatch_get_main_queue(), ^{
       // perform checking here and do whatever updating you need to do based on the data

    });
});

答案 1 :(得分:1)

检查服务器和检索数据的方法很多。

我的建议:

  1. 在服务器上创建包含数据的文件(例如Data.txt)
  2. 使用NSURLRequest创建对Data.txt的请求
  3. 使用connectionDidFinishLoading从Data.txt
  4. 获取数据
  5. 将数据从Data.txt放入NSArray
  6. 工作/比较数组并执行逻辑
  7. 如果您的服务器速度很快且您只需要一个号码,您可以在主要步骤中执行此操作,否则请使用:

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
          // your request here  
    });
    

    根据要求以不同的方式工作。

    请记住检查互联网连接和服务器是否可用,如可达性和使用NSURLRequest委托管理连接错误

答案 2 :(得分:0)

答案 3 :(得分:0)

在iOS上查看本教程Multithreading and Grand Central Dispatch。

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial