私たちは、ボタンを押すことでデバイスの設定アプリを開くiOSアプリを作成しています。私は、メソッドがiOS 10とSwift 3で若干変更されていることを確認しました。したがって、コードを実行する前にユーザーがどのiOSバージョンを使用しているかを確認する条件を使用しています。iOS 10設定を開くクラッシュ
if let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) {
if #available(iOS 10.0, *) {
// iOS 10.0.
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
} else {
// Fallback on earlier versions.
UIApplication.shared.openURL(settingsUrl)
}
}
これはiOS 9デバイスでは問題なく動作しますが、iOS 10では正常に動作しません。問題は、アプリがiOS 10の設定アプリにユーザーを送信している間、クラッシュログなしで直ちにクラッシュすることです。この同じ方法を使ってGoogleのようなウェブサイトを開くと、iOS 9と10の両方で完全に正常に動作します。私は多くの研究を行い、URLスキームでいくつか変更したようですが、修正プログラム/回避策。
私は独立してアプリをテストしています。 Xcodeを実行していないときはデバイス上で何を意味するのでしょうか?私はまだ同じ振る舞いをします。 – BenSDConway
これはカスタムキーボード拡張用ですので、コンテナアプリ内では、ボタンをクリックするだけで設定アプリに直接送信されます。ユーザーが設定アプリで何かをする機会を得る前にクラッシュします。これは主にUXのものですが、私たちが信じることは非常に重要です。 – BenSDConway
あなたのアプリがまだiOS 9をサポートしている場合、iOSのバージョンに関係なく、古い「openURL」メソッドを使用してみませんか?それは完全に有効で安全です。 – rmaddy