iOS 应用程序不在后台运行 = YES - 我如何检查用户何时退出应用程序

Posted

技术标签:

【中文标题】iOS 应用程序不在后台运行 = YES - 我如何检查用户何时退出应用程序【英文标题】:iOS Application Does Not Run In Background = YES - how do I check when the user exits app 【发布时间】:2013-02-28 19:03:41 【问题描述】:

在我的 info.plist 文件中,我的应用程序不会在后台运行 = 是。这是一个企业应用程序,我正在尝试在用户退出(点击主页按钮)时记录。但是在 AppDelegate 中,我登录到控制台以查看将调用什么方法,但它们都不是(applicationWillResignActive、applicationDidEnterBackground、applicationWillTerminate)。有没有办法确定用户何时使用我拥有的 plist 设置退出>?

谢谢

这里是 willTerminate 方法,开箱即用:

- (void)applicationWillTerminate:(UIApplication *)application

    NSLog(@"goodbye");
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.




我已更改 plist 设置,现在可以从 applicationDidEnterBackground 登录。

【问题讨论】:

applicationWillTerminate when is it called and when not的可能重复 【参考方案1】:

所以您不希望应用程序在后台运行,但您想知道应用程序何时终止?这样做

UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(applicationWillTerminate:)
                                             name:UIApplicationWillTerminateNotification
                                            object:app];

然后填写你自己的applicationWillTerminate方法。你不会有太多时间做事。

【讨论】:

不需要这个。应用程序委托已经有它的 applicationWillTerminate 方法,在这种情况下会被调用。【参考方案2】:

如果您已将 ApplicationDoesNotRunInBackgound 设置为 YES,那么这必须有效,

将此方法放入您的 appDelegate.m

-(void)applicationWillTerminate:(UIApplication *)application

    NSLog(@"user exits app");

在我的应用中,使用相同的 plist 设置,此方法会触发

【讨论】:

willTerminate 在那里,但没有任何记录。 你能把你的 willTerminate 方法贴在这里吗??是在 AppDeleate.m 文件中吗?

以上是关于iOS 应用程序不在后台运行 = YES - 我如何检查用户何时退出应用程序的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序不在后台运行,如何让 iOS 应用程序执行一些代码?

React-Native IOS:Background-Timer 不在后台运行

iOS swift流媒体应用程序不在后台模式下播放音乐

更新位置,而后台应用程序在模拟器上工作但不在设备上(iOS 9)

IOS:后台同时运行应用程序音频和手机音乐音频

在ios中编写后台服务