web-dev-qa-db-ja.com

iOS 12でアプリをプログラムで終了する方法

IPhone 6をiOS 12ベータ1に置くと問題が発生します。これは、ポップアップボタンを押したときにアプリケーションのメソッドがiOS 12では機能せず、iOS 11.4.1では機能するためです。

それが私が使った方法です:

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

IOS 11ではアプリが適切に終了し、iOS 12ではポップアップボタンを押してもアプリは何もせず終了しません。

私はこれがSwift 4.2であることを知っています。ニュースや変更に乗ったとき、アプリを正しく閉じるための新しいメソッドとのリンクのようなものを見たことはありません。

これは、ユーザーが利用規約に同意しない場合にアプリを閉じるために使用するためです。

7
Louis Legout

exitメソッドを呼び出すことができます

exit(-1)

または、NSXPCConnection.suspendを使用できます

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

Appleはアプリを強制終了することを推奨していません。どのように行うかは問題ではありません。

チェック this 投稿。

10
U. Benlice

このコードを試してください:

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
    UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
      exit(0)
     }
}

これは1秒待機し、アプリが閉じるまで0.5秒かかります。このコードスニペットの前に表示を暗くできます。

6
ishwardgret