2015-10-28 2 views

答えて

16

UPDATE

の下記の画面のいずれかに直接行くことができる別のアプリケーションからプログラムのiOSの設定アプリの画面他のユーザーが指摘しているように、このソリューションはiOS10ではもう機能しません。誰かがiOS10で動作させる方法を知っていれば、私たちに知らせてください。 iOSの< 10用

ソリューション:

設定を開くには(自分のアプリの)あなたがUIApplicationOpenSettingsURLString定数を使用することができます。

if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

することができますので、これは、iOSの8で導入されましたiOS8以降を実行する端末で使用します。しかし、これは自分のアプリの設定を開くだけです。キーボードの設定ではありません。あなたのアプリが独自の設定をしていない場合は、メインページの設定アプリだけが開きます。あなたが設定URLを開いて、直接設定アプリのほぼすべてのサブページに行くことができます(iOSの5.1の前に)昔

。 AppleはiOS 5.1でこの機能を削除しました。私はわからない、これはどのように信頼性があるものの

は、しかし、iOSの8と9それは正式にアップル社によって文書化されていませんが、動作しているように、再び動作するようです。 iOS 9.1 iPhoneでは動作しますが、Simulatorでは動作しません。

ので、注意して、あなたは、キーボードの設定を開くには、これを試すことができます。

if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard") { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

するか、行くより深い:

if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard/KEYBOARDS") { 
    UIApplication.sharedApplication().openURL(settingsURL) 
} 

編集: iHulkはコメントで述べたように、あなたこの作業を行うために、プロジェクトのInfo.plistファイル内のURLスキームにprefsを追加する必要があります。

+0

FleksyがiOSの8ならびにiOSの9 – iHulk

+0

にあなたはiOS8上でそれを試してみましたことを行うようにiOSの8でそれを行うには?私は手元にiOS8デバイスをテストしていません。多分これもiOS 8 – joern

+0

okでも動作します。私はそれをシミュレートしようとしていた、それは動作していなかった、ちょうどiOS 9デバイスでテストされ、それは動作しています。私はiOS 8デバイスでそれを確認し、それが動作しているかどうかをお知らせします。ありがとう.. – iHulk

1

最新のメッセージAppleの査読者から: あなたのアプリは拡張機能をホストしていますが、App Extension Programming Guideに準拠していません。

具体的には、あなたのアプリケーションではなく、アプリの特定の設定ページにユーザーを取るよりも、キーボードの設定ページに直接ユーザーをもたらします。あなたのアプリは、ユーザーをあなたのアプリ設定ページに導くだけであることを確認してください。

私はにリダイレクトされた:環境設定:iOSの10のよう=キーボード/ KEYBOARDS

+0

ohh ..彼らはこのハッキングをブロックし始めたようです。 – iHulk

+0

@mamba、ダークリリースのようなことは何もしませんでしたか? – kelin

+0

Fleskyのキーボードでこれが可能なのでこれは奇妙です – Roymunson

9

ルート=一般&パス "のApp-環境設定:ルートは" ではなく ":ルートのprefs" よりも使用する必要があります。下記の目的コードを参照してください。これをテストしたところ、コードは正常に動作しますが、Appleはこれによりアプリを拒否するかもしれません。とにかく

NSString *settingsUrl= @"App-Prefs:root=General&path=Keyboard"; 

if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) { 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:settingsUrl] options:@{} completionHandler:^(BOOL success) { 
    NSLog(@"URL opened"); 
    }]; 
} 
+1

これはiOS 11では動作しなくなりました – Joey