如何检测用户何时退出越狱设备上的ios应用程序

如何检测用户何时退出越狱设备上的ios应用程序,ios,jailbreak,exit,detect,Ios,Jailbreak,Exit,Detect,不知什么原因,当我在“最近”菜单中关闭我的应用程序并尝试再次启动它时,我所在的最后一个屏幕再次出现,设备被冻结。我要做的是一个硬重启,然后,再次启动应用程序工作 或者,如果我想在最近的杀戮之后重新启动我的应用程序而不重新启动,我必须在移动终端中键入此命令 killall myapp 在此之后,如果我尝试从主屏幕启动我的应用程序,我的应用程序工作正常 我想知道的是,我如何检测用户何时使用home按钮退出应用程序,从而启动发送killall命令的NSTask?我知道苹果不允许NSTask,但这是一

不知什么原因,当我在“最近”菜单中关闭我的应用程序并尝试再次启动它时,我所在的最后一个屏幕再次出现,设备被冻结。我要做的是一个硬重启,然后,再次启动应用程序工作

或者,如果我想在最近的杀戮之后重新启动我的应用程序而不重新启动,我必须在移动终端中键入此命令

killall myapp
在此之后,如果我尝试从主屏幕启动我的应用程序,我的应用程序工作正常

我想知道的是,我如何检测用户何时使用home按钮退出应用程序,从而启动发送killall命令的NSTask?我知道苹果不允许NSTask,但这是一款越狱应用,不打算在苹果商店发布

而且这个虫子真的让我厌烦。。。在viewDidLoad中,我有几个NSTask和方法来检查目录是否存在。你认为这些事情会阻止应用程序在最近的一次杀戮后重新启动并冻结设备吗?或者这是因为应用程序以root用户身份运行,并且有一些事情要做,特别是允许设备在这种情况下重新启动应用程序


提前感谢您的帮助

我找到的第一个问题是:我在didEnterBackground(AppDelegate类)中放置了一个NSTask方法,当用户退出应用程序时,该方法会终止应用程序


第二个问题我真的不知道。。。我已经删除了放在viewDidLoad中的方法,以查看这是否是问题的原因,但什么都没有,只要我在最近一次中关闭应用程序并尝试重新启动它,设备就会冻结。。因为viewDidLoad方法中没有任何内容,所以我认为问题是由根权限引起的。。。DidEnterBackroung中的NStask解决了这个问题。首先,我想指出,使用
NStask
并不总是解决问题的方法。您可以使用
NSFileManager
。要管理文件和目录,您可以使用
exit(0)
终止进程

就您的实际问题而言,您的应用程序是否以root用户身份运行?当iOS通知应用程序关闭时,SpringBoard会向它们发送一个
SIGSTOP
信号。由于SpringBoard作为移动设备运行,这些信号由移动用户发送,这意味着根应用程序将不会接收这些信号。这意味着,无论何时通知根应用程序退出,它都会忽略该请求并继续执行。要解决此问题,您可以更改Info.plist中的一个键


继续,在Info.plist中将
UIApplicationExitsOnSuspend
设置为布尔值
true
,看看这是否解决了您的问题。

是的,这肯定是错误代码。但谁知道,没有看到任何?是的,我知道,但这只是一些基本的NSTask和Obj-C方法来检查现有的目录,这就是为什么我没有发布任何代码示例。我将尝试删除这部分代码,看看这是否是问题的根源。对于第一个问题,您知道如何检测应用程序的退出吗?使用
NSTask
检查目录是否存在是您的第一个错误。有一些API方法是为这些事情提供的。我错插了^^我用Obj-c方法检查现有目录,并用NSTask和mkdir创建目录(如果不存在)。现在,我已经将目录的创建放在preinst脚本中,因此不再需要将mkdir放到viewdidload中,我必须删除这部分代码,以便。。。