iOS-关于如何知道应用被杀死并做相应处理

Posted qzcodediary

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-关于如何知道应用被杀死并做相应处理相关的知识,希望对你有一定的参考价值。

需求:由于近期项目需求,用户行为不可控,某些用户在执行某些操作之后,强行杀死应用,导致部分统计数据没办法实时上传。所以需要在用户杀死应用的时候,将当前统计的数据上传到服务器(不持久化的数据)。

经过在网上寻找答案,和自己的验证。

在appdelegate中去实现两个api

-(void)applicationDidEnterBackground:(UIApplication *)application {

    NSLog(@"didenterbackgroud");
    [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:^{
        NSLog(@"auto kill app!");
    }];
}

-(void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"kill app !!!!");
}

两个方法配合使用。如果不实现

beginBackgroundTaskWithExpirationHandler

应用先退到后台,再杀应用,则不会调用

applicationWillTerminate

在应用界面的界面唤起直接杀死应用会调用

applicationWillTerminate

如上两个方法和一个block配合使用,则无论应用以什么方式被杀死都会调用

applicationWillTerminate

当应用被用户退到后台,一定时间之后会自动调用

beginBackgroundTaskWithExpirationHandler

以上是关于iOS-关于如何知道应用被杀死并做相应处理的主要内容,如果未能解决你的问题,请参考以下文章

如何知道我的应用程序被杀死的原因

有没有办法知道我的 iOS 应用程序被隐私设置更改杀死了?

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

iOS应用程序被杀死时处理程序不能显示远程通知吗?

即使应用程序在 ios 中被杀死或从后台删除,如何继续更新我的位置?

在 iOS4.x 中如何知道 app 即将被杀?