2017-03-02 97 views
0

我有一個應用程序需要在後臺運行,以便執行其後臺進程。我想在用戶關閉多任務應用程序時向用戶發送通知,以便我可以提示他們重新打開應用程序。我已閱讀這裏的討論:Local notification on application termination,並嘗試過這些解決方案,但沒有一個在用戶終止應用程序時產生可靠的通知。用戶終止應用程序(iOS)時的通知

這裏是我的代碼看起來像現在,在我的AppDelegate.m文件:

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter]; 
    [center removeAllDeliveredNotifications]; 
    //Try and alert the user 
    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.alertBody = @"App was terminated unexpectedly. Notification-based logging won't work. Tap to restart App!"; 
    notification.soundName = UILocalNotificationDefaultSoundName; 
    [application scheduleLocalNotification:notification]; 

    // Saves changes in the application's managed object context before the application terminates. 
    [self saveContext]; 
} 

在模擬器的調試模式,這種解決方案總是提供當應用從多任務處理關閉的通知。不幸的是,在我的手機上,我偶爾會在應用程序終止時收到此通知。很多時候,我從多任務處理中殺死了該應用程序,並且沒有通知出現。

我在重複提問,因爲對鏈接帖子的回覆已經過去了幾年,我有理由相信這是可以實現的。 MomentTripLog應用程序都具有我想要的確切行爲。

如果任何人有一個可靠的解決方案,當他們從多任務關閉應用程序時向用戶發送本地通知,那將非常感激。我在Objective C中編寫代碼,因此Objective C中的解決方案將是理想的。

+0

「很多時候我從多任務中殺死了應用程序,並且沒有通知出現」也許你沒有收到通知,因爲該應用程序已被系統在後臺終止,因此不再運行,並且沒有applicationWillTerminate事件。沒有辦法檢測到這一點。的確,這正是http://stackoverflow.com/a/17988326/341994所說的。 – matt

回答

0

沒有辦法確保您的應用在後臺繼續運行。運行時可以隨時在後臺以靜默方式終止它,並且在發生這種情況時無法獲得事件。

似乎成功完成此操作的應用程序實際上可能是正在做某事在後臺,也就是說,例如,他們正在進行核心位置更新或播放聲音。這種專業行爲大大增加了在後臺獲得applicationWillTerminate的機會。

相關問題