我想在我的iOS應用程序中啓動一個計時器,當應用程序在後臺運行時以及應用程序關閉時。定時器必須每隔30分鐘檢查一次新的通知。在計時器功能中,他們每30分鐘調用一次函數showNotification()。iOS定時器在後臺
我該如何做這個計時器,以及在應用程序未在後臺運行/運行時,我必須在哪個位置調用計時器。
我想在我的iOS應用程序中啓動一個計時器,當應用程序在後臺運行時以及應用程序關閉時。定時器必須每隔30分鐘檢查一次新的通知。在計時器功能中,他們每30分鐘調用一次函數showNotification()。iOS定時器在後臺
我該如何做這個計時器,以及在應用程序未在後臺運行/運行時,我必須在哪個位置調用計時器。
當應用程序不在前臺時,以100%的確定性完成某些操作是不可能的。您可以使用後臺提取功能定期喚醒,但無法控制它何時發生。
儘管有一些技術性的解決方法,甚至可能還有一些黑客解決方案(在後臺播放無聲音頻),但聽起來像您的問題可以在不使用定時器和背景獲取的情況下解決。
只需執行remote notifications。當你的iOS收到你的應用程序的通知時,它會喚醒應用程序並讓它處理一段時間。然後,您可以控制向用戶顯示哪些通知,並可能在後臺加載一些數據。
從廣義上講,你需要:
AFAIK在後臺(製作過程)中沒有辦法在180s後運行NSTimer。
編輯:如果您啓用後臺模式,您可以獲得最多10分鐘。你可以學習更多,例如。 here。
如何啓用後臺模式?當我啓用後臺模式時,我可以設置一個每10分鐘調用一次函數的計時器? –
廣告1)請參閱附加鏈接。廣告2)tldr:不 - 你有10分鐘(最多)做你所有的東西。也許通知可以解決你的問題。 –
Write this both methos in your Appdelegate.m file
//For Objective c
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self TimerMethod];
}
-(void)TimerMethod
{
//Every 30 minute call the functions
_timer=[NSTimer scheduledTimerWithTimeInterval:1800.0f target:self selector:@selector(updateMethod:) userInfo:nil repeats:YES];
}
- (void)updateMethod:(NSTimer *)theTimer
{
NSLog(@"Timer set now");
}
//For Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool
{
self.TimerMethod()
}
func TimerMethod()
{
var timer = NSTimer.scheduledTimerWithTimeInterval(1800, target: self, selector: "updateMethod", userInfo: nil, repeats: true)
}
func updateMethod()
{
print("set timer now")
}
對於遠程通知,您必須擁有Apple Developer會員資格? –
我這麼認爲。您需要能夠配置推送通知證書,這隻有在註冊成員資格時纔有可能。 –