如何使用Swift编程在iOS 8中退出应用程序并返回主屏幕

时间:2014-10-22 15:18:48

标签: iphone swift ios8

我尝试使用Swift以编程方式返回iOS8 App中的主屏幕。我想继续在后台运行应用程序。关于如何做到这一点的任何想法?

提前感谢您的帮助。

6 个答案:

答案 0 :(得分:31)

启动应用程序时,系统调用UIApplicationMain函数;在其他任务中,此函数创建单个UIApplication对象。此后,您可以通过调用sharedApplication类方法来访问该对象。

要正常退出(iOS开发人员库明确警告您不要使用exit(0),因为这会记录为崩溃),您可以使用:

UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)

例如,当用户摇动设备时,我的应用会退出。所以,在ViewController.swift中:

override func motionEnded(motion: UIEventSubtype,
    withEvent event: UIEvent?) {

        if motion == .MotionShake{

            //Comment: to terminate app, do not use exit(0) bc that is logged as a crash.

            UIControl().sendAction(Selector("suspend"), to: UIApplication.sharedApplication(), forEvent: nil)
        }}

答案 1 :(得分:20)

斯威夫特4:

UIControl().sendAction(#selector(NSXPCConnection.suspend),
                       to: UIApplication.shared, for: nil)

答案 2 :(得分:7)

为此你应该使用以下代码

import Darwin
exit(0)

答案 3 :(得分:2)

要强制将您的应用投放到后台,您可以合法地通过网址将其他应用(例如Safari)启动到前台。

请参阅:how to open an URL in Swift3

UIApplication.shared.open()(以及较旧的openURL)是一个记录在案的公共API。

如果您设置了退出暂停plist键,则通过URL打开另一个应用也会终止您的应用。此密钥的使用是对app plist密钥的合法使用,可用于任何应用程序,以及合法的#34;使用

此外,如果您的应用由于某些不礼貌的原因,继续在后台分配和弄脏大量内存,而不响应内存警告,则操作系统很可能会将其删除。

答案 4 :(得分:0)

除了崩溃,退出程序或调用非官方API之外,无法“以编程方式返回主屏幕”。 Apple也不欢迎。此外,人机界面指南也涵盖了这一点。

答案 5 :(得分:0)

如何设置info.plist?

您可以使用编辑器在info.plist中将“应用程序无法在后台运行”设置为true。

或使用代码编辑器添加此行。

    <key>UIApplicationExitsOnSuspend</key>
    <true/>