我有一個應用程序需要在後臺運行,以便執行其後臺進程。我想在用戶關閉多任務應用程序時向用戶發送通知,以便我可以提示他們重新打開應用程序。我已閱讀這裏的討論: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];
}
在模擬器的調試模式,這種解決方案總是提供當應用從多任務處理關閉的通知。不幸的是,在我的手機上,我偶爾會在應用程序終止時收到此通知。很多時候,我從多任務處理中殺死了該應用程序,並且沒有通知出現。
我在重複提問,因爲對鏈接帖子的回覆已經過去了幾年,我有理由相信這是可以實現的。 Moment和TripLog應用程序都具有我想要的確切行爲。
如果任何人有一個可靠的解決方案,當他們從多任務關閉應用程序時向用戶發送本地通知,那將非常感激。我在Objective C中編寫代碼,因此Objective C中的解決方案將是理想的。
「很多時候我從多任務中殺死了應用程序,並且沒有通知出現」也許你沒有收到通知,因爲該應用程序已被系統在後臺終止,因此不再運行,並且沒有applicationWillTerminate事件。沒有辦法檢測到這一點。的確,這正是http://stackoverflow.com/a/17988326/341994所說的。 – matt