You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Multiplatform iOS端如何实现应用关闭功能?

Kotlin Multiplatform iOS端实现应用关闭/最小化方案

在iOS平台,Apple的App Store审核规范禁止应用主动强制退出,因此不能直接使用类似Android的System.exit()逻辑。以下是符合iOS规范的实现方案:

方案1:让应用进入后台(推荐)

通过调用UIKit的API让应用进入后台状态,模拟"最小化"效果,这是Apple允许且符合设计理念的做法:

import platform.UIKit.UIApplication
import platform.objc.selector

actual fun closeapp() {
    UIApplication.sharedApplication.performSelector(Selector("suspend"))
}

针对iOS 13及以上的Scene架构,也可以通过Scene会话管理实现:

import platform.UIKit.UIApplication
import platform.UIKit.UIScene

actual fun closeapp() {
    UIApplication.sharedApplication.connectedScenes.firstOrNull()?.let { scene ->
        (scene as? UIScene)?.session?.let { session ->
            UIApplication.sharedApplication.requestSceneSessionDestruction(session, options = null)
        }
    }
}

方案2:引导用户手动关闭

如果需要明确告知用户操作,可以弹出提示框引导用户通过系统方式关闭应用:

import platform.UIKit.UIAlertController
import platform.UIKit.UIAlertAction
import platform.UIKit.UIApplication

actual fun closeapp() {
    val rootVC = UIApplication.sharedApplication.keyWindow?.rootViewController ?: return
    val alert = UIAlertController.alertControllerWithTitle(
        "提示",
        "请通过应用切换器手动关闭应用",
        preferredStyle = UIAlertControllerStyleAlert
    )
    alert.addAction(UIAlertAction.actionWithTitle("知道了", style = UIAlertActionStyleDefault) {
        // 可选:同时让应用进入后台
        UIApplication.sharedApplication.performSelector(Selector("suspend"))
    })
    rootVC.presentViewController(alert, animated = true, completion = null)
}

重要注意事项

  • 不要使用exit(0)或类似的强制退出方法,这类操作会触发App Store审核拒绝。
  • 优先选择方案1,既满足需求又符合iOS平台的设计规范。

内容的提问来源于stack exchange,提问作者Hilmar Spohr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:34:57