2016-11-28 70 views
0

每当用户杀死我的应用程序时,我的应用程序都会收到通知(不会将其移至背景,但通过双击主屏幕按钮并向上滑动屏幕截图实际完全退出),这一点非常重要。我知道applicationWillTerminate()几乎没有被调用,所以我想知道什么最安全的方式是当用户将杀死应用程序通知。 Apple似乎不太可能为此提供任何形式的解决方案,因为许多iOS用户在完成使用它的应用程序后会自行杀死应用程序,所以如果它真的会真的真的很奇怪不可能赶上这个事件。我需要做的唯一事情就是发送一个URLRequest发送一些更新指令到我的web服务。当应用程序被杀时向Web服务发送请求? (Swift 3)

+0

您可以尝试拦截SIG_KILL或SIG_TERM信号,这两个信号中的一个会在被杀死时发送给应用程序。然而,不知道你的应用是否能够在当前生命周期中做很多事情(接近其结束时) – Cristik

+0

@Cristik我想是值得一试的。我怎么做? –

回答

0

当我添加一个观察者来处理UIApplicationWillTerminateNotification时,我获得了更多的一致性。当用户双击主页按钮并轻扫应用程序以杀死它时,它会被调用。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(AppDelegate.onAppWillTerminate(_:)), name:UIApplicationWillTerminateNotification, object:nil) 
    return true 
} 


func onAppWillTerminate(notification:NSNotification) 
{ 
    print("onAppWillTerminate") 
} 
+1

哇,它的工作!我不明白。如果'NSNotification'有一个应用程序终止通知,那么applicationWillTerminate()几乎不会被调用(主要是永远不会)? Apple为什么不在AppDelegate中实现委托方法而不是使用此通知?无论如何,非常感谢!当我读到你的答案时,我并不十分有信心它会奏效,因为每个人都告诉我很久以后,赶上'应用程序关闭'事件是不可能的。你的回答证明了很多人的错误。令人惊喜的是,这有一个解决方法。再次感谢! –

+0

不客气!乐于帮助! :) –

相关问题