用户终止应用程序时通知(iOS)

时间:2017-03-02 00:35:52

标签: ios objective-c iphone notifications

我有一个应用程序需要在后台运行才能执行其后台进程。我想在用户从多任务处理关闭应用程序时向用户发送通知,以便我可以提示他们重新打开应用程序。我在这里阅读了讨论:Local notification on application termination,并尝试了这些解决方案,但没有一个在用户终止应用时产生可靠的通知。

以下是我的代码现在的样子,在我的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中的解决方案将是理想的。

1 个答案:

答案 0 :(得分:0)

无法确保您的应用在后台继续运行。允许运行时随时在后台静默终止它,并且当发生这种情况时你无法获得事件。

似乎成功执行此操作的应用程序可能实际上是在后台执行某些操作,例如,他们正在进行核心位置更新或播放声音。这种专门行为极大地增加了在后台获得applicationWillTerminate的机会。