2013-11-21 38 views
1

我現在有一個應用程序,允許用戶從網站上獲取信息。我不幸沒有任何訪問該網站的API,這只是一個屏幕刮。理想情況下,用戶每天從網站上獲取一次信息。 目前我設定時間並使用performFetchWithCompletionHandler。當performFetchWithCompletionHandler被調用時,它檢查設置的時間,如果時間是當前時間,它將執行刮擦。不幸的是,performFetchWithCompletionHandler不以這種方式工作(我不能保證它會在用戶指定的小時&分鐘內觸發)。有沒有辦法讓我的應用程序在後臺運行並在指定的時間間隔內刷網站?安排iOS後臺任務的最佳方式?

+0

使用'NSTimer'執行一個基於GCD塊的操作。 –

+0

@rmaddy,它幾乎是重複的,但是這個問題是在取回之前和取回允許這個工作,只是不是在最理想的方式。我希望有一些東西會浮出水面。 – TheRedAgent

+1

@SanjeetSuhag不會讓NSTimer在我的應用程序碰到背景時被禁用? – TheRedAgent

回答

1

這可能對你有幫助...

首先聲明, 的NSTimer * timerAppBG; 在AppDelegate.h文件....

- >請把婁在AppDelegate.m文件中的所有方法...

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    timerAppBG = [NSTimer scheduledTimerWithTimeInterval:60.0f target:self selector:@selector(applicationWillResign) userInfo:nil repeats:YES]; 
} 
- (void) applicationWillResign 
{ 
     NSLog(@"About to lose focus"); 
    //Write your code here... 
    [self myVcInitMethod]; 
} 

- (void) myVcInitMethod 
{ 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(applicationWillResign) 
    name:UIApplicationWillResignActiveNotification 
    object:NULL]; 
} 

感謝。

+0

我加入了這個,但applicationWillResign永遠不會被解僱。我把一個NSLog放在timerAppBg = [NSTimer ...]的上面,然後被解僱,但由於某種原因,applicationWillResign永遠不會被調用(我沒有看到「關於失去焦點」行被調用。 – TheRedAgent