2016-08-18 23 views
1

如何觸發每個小時的方法,而不管應用程序是活動還是後臺或終止。該方法應該每小時觸發一次。如何觸發一個方法每小時,而不管應用程序活動,後臺或終止

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(callYourMethod:) userInfo:nil repeats:YES]; 

聽說的NSTimer不會的時間10分鐘之後的工作。

任何一個可以建議我如何激活將觸發一個方法的iOS Objecitve-C

+1

這樣做沒有確定的方法。誰告訴你計時器有時間限制是錯誤的,或者你錯過了上下文。如果某個應用已終止,則必須使用外部觸發器(例如推送套件通知)才能再次啓動該應用。當它在後臺時幾乎是一樣的,但你有更多的選項來喚醒它。沒有100%可靠,儘管PK最接近。當然你的應用程序必須是一個VoIP應用程序才能使用它。 – Avi

+0

你真的需要每小時做點什麼嗎?因爲這對移動應用程序來說是一個糟糕的設計。這樣你會消耗電池。而如果用戶殺死你的應用,任務沒有完成。如果需要使用推送通知,您可能最好做這個服務器端並將它推送給你的應用程序。此外,只有VOIP,音頻,位置和配件應用程序可以在後臺運行。濫用其中的一種讓你的應用程序在後臺運行會導致你的應用程序被拒絕。 – rckoenes

+0

計時器在主線程上工作。當應用程序進入後臺時,其定時器將失效。所以,當應用程序進入後臺時你不能這麼做。 –

回答

0

管理這種類型的任務每1小時當地是一個壞主意的方法。您不能承受NSTimer或GCD,因爲它們被設計爲在應用程序處於前臺狀態時使用。

當您處於後臺時,應用程序可能會在幾分鐘後 - 無論如何 - 無論如何 - 使iOS定時器失效定時器或調度方法。如果系統需要爲其他應用程序釋放內存或優化電池消耗,則會將應用程序置於暫停狀態。

只有在iOS 8中引入PushKit Framework的VoIP通知時,才能強制從關閉或掛起狀態喚醒應用程序。請注意,只有在您實施VoIP服務的情況下,才應使用此類通知你的應用。這個框架被嚴重記錄,首先由蘋果公司,但也在其他網站,如StackOverflow。我建議你按照this tutorial by Pierre-Marc Airoldi的指導,一步一步來構建一個使用VoIP服務的應用程序的全功能演示。 請注意,標準通知在您收到標準通知時不會執行任何操作:AppDelegate中的方法僅在您點擊通知時纔會觸發。如果您不想向用戶顯示通知,請不要發送消息;它不會顯示在屏幕上,但它也會被接收。

相關問題