点击json url链接检查目标c中某段时间后的任何新数据

时间:2015-11-01 13:05:17

标签: ios objective-c background

我需要每隔一周点击一次json url来检查新数据。我试过这种方式。

首先,我以毫秒为单位进行午餐时间并将其保存在plist中,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

long currentTime = (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]);
    NSDictionary * dict =[NSMutableDictionary new];
    paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    documentsDirectory = [paths objectAtIndex:0];
    path = [documentsDirectory stringByAppendingPathComponent:@"time.plist"];
    [dict setValue:[NSNumber numberWithLong:currentTime] forKey:@"count"];
    [dict writeToFile:path atomically:YES];
}

然后我在后台检查它。如果7天消失了,我会点击一个计时器来点击json网址。

- (void)applicationDidEnterBackground:(UIApplication *)application {
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    documentsDirectory = [paths objectAtIndex:0];
    path = [documentsDirectory stringByAppendingPathComponent:@"json.plist"];

    NSDictionary *plistDictionary = [NSDictionary dictionaryWithContentsOfFile:path];

    long plistTime= [[plistDictionary objectForKey:@"count"] longValue];
    timeWithSevenDays=plistTime+604800;
     timer =   [NSTimer scheduledTimerWithTimeInterval:timeWithSevenDays
                                               target: self
                                             selector: @selector(checkForUpdateJson)
                                             userInfo: nil
                                              repeats: YES];
    [timer fire];

}

点火计时器后,我用当前时间更新plist数据。但如果应用程序在7天内处于前台,则会产生复杂性。

我应该使用后台服务吗?但后台服务会缩短电池寿命。 或者将其添加到适用于前景和背景的Appdelegate中的任何有效方法。

1 个答案:

答案 0 :(得分:0)

只需检查didFinishLaunchingWithOptions中的新数据。

另一种方法是使用推送通知服务器让用户知道新内容并在应用激活时下载。