web-dev-qa-db-ja.com

iOS起動設定->制限URLスキーム

最近、素晴らしいiOS5カスタム設定URLスキームを発見しました。これは、この素晴らしい website で詳細に説明できます。

これが機能することがわかり、ユーザーをアプリケーションから設定アプリに誘導します。

[[UIApplication sharedApplication] openURL:
       [NSURL URLWithString:@"prefs:root=General"]];

ただし、pathパラメーターを介してRestrictionsパスに直接ルーティングすることはできません。

[[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];

誰かがこれに関するドキュメントを見つけましたか、これを機能させることができましたか?

どんな洞察も大歓迎です。ユーザーにアプリ内購入を有効にさせようとしていますが、ユーザーが手動で[制限]をクリックしないようにします(あまり明確ではありません)。

86
kturner

AS @ Nix Wang 's ANSWER THIS IS NOT WORK INIOS 10


警告:この方法は、iOS 5.1以降を実行しているデバイスでは機能しません-以下のHlungのコメントを参照してください。

pathコンポーネントの名前は実際のセクションとは異なる可能性がありますが、URLから直接そのセクションにアクセスできない可能性もあります。可能性のあるURLのリストを見つけましたが、制限はありません。おそらくまだ見つかっていないのかもしれません。

設定アプリで現在知られているURLのリスト:

  • prefs:root = General&path = About
  • prefs:root = General&path = ACCESSIBILITY
  • prefs:root = AIRPLANE_MODE
  • prefs:root = General&path = AUTOLOCK
  • prefs:root = General&path = USAGE/CELLULAR_USAGE
  • prefs:root = Brightness
  • prefs:root = General&path = Bluetooth
  • prefs:root = General&path = DATE_AND_TIME
  • prefs:root = FACETIME
  • prefs:root = General
  • prefs:root = General&path = Keyboard
  • prefs:root = CASTLE
  • prefs:root = CASTLE&path = STORAGE_AND_BACKUP
  • prefs:root = General&path = INTERNATIONAL
  • prefs:root = LOCATION_SERVICES
  • prefs:root = ACCOUNT_SETTINGS
  • prefs:root = MUSIC
  • prefs:root = MUSIC&path = EQ
  • prefs:root = MUSIC&path = VolumeLimit
  • prefs:root = General&path = Network
  • prefs:root = NIKE_PLUS_iPod
  • prefs:root = NOTES
  • prefs:root = NOTIFICATIONS_ID
  • prefs:root = Phone
  • prefs:root =写真
  • prefs:root = General&path = ManagedConfigurationList
  • prefs:root = General&path = Reset
  • prefs:root = Sounds&path = Ringtone
  • prefs:root = Safari
  • prefs:root = General&path = Assistant
  • prefs:root =サウンド
  • prefs:root = General&path = SOFTWARE_UPDATE_LINK
  • prefs:root = STORE
  • prefs:root = Twitter
  • prefs:root = General&path = USAGE
  • prefs:root = VIDEO
  • prefs:root = General&path = Network/VPN
  • prefs:root = Wallpaper
  • prefs:root = WIFI
  • prefs:root = INTERNET_TETHERING
140
Henri Normak

IOS8の時点で、組み込みの設定アプリを開くには:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
}

実際のURL文字列は@"app-settings:"です。文字列にさまざまなセクション(「Bluetooth」、「GENERAL」など)を追加しようとしましたが、メインの設定画面へのリンクのみが機能しているようです。そうでない場合は、返信を投稿してください。

47
Jason Moore

Prefs URLスキームをiOSアプリに追加すると、iOS 5で可能なすべてのスキームを使用できるようになります。iOS9でテストしましたが、古いバージョンでも機能すると思います。

42
Pedro Tôrres

更新:

prefs:はiOS 10以降では動作しません。

32
Nix Wang

うん、これ(そしてもっと多く)を見て、テストアプリケーションに実装しさえしました。本当にAppleから決定的なWordを入手する必要がありますが、コミュニティのコンセンサス意見は、それが公に「発見/公開」された後、5.1でApple禁止されたため、それを含むアプリケーションは受け入れられません。

8/01/12更新: WiFi設定ダイアログをプログラムで起動する方法があるかどうか、開発者アカウントにAppleを尋ねました。応答は次のとおりです。

「当社のエンジニアはお客様のリクエストを確認し、現在出荷中のシステム構成を考慮して、目的の機能を実現するサポートされた方法はないと結論付けました。」

22
Dan

iOS 9再び動作します!

[設定]> [全般]> [キーボード]を開くには、次を使用します。

prefs:root=General&path=Keyboard

さらに、キーボードにさらに進むことができます:

prefs:root=General&path=Keyboard/KEYBOARDS
18
Mikhail Gasanov

設定アプリケーションでBluetoothメニューを開きたいのですが、上記のパス(prefs:root = General&path = Bluetooth)が機能しませんでした。結局私のために働いたのは

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)

最初にprefs URLスキームが定義されていることを確認してください。

7
Mahesh

IOS10のソリューション。正常に動作します。

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=Twitter"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];

IOS10の時点で使用できます

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!) 

一般設定を開きます。

特定の設定を開くために、既知のURLを追加することもできます(最も投票された回答に表示されます)。たとえば、次のコードはtouchIDとパスコードを開きます。

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
4
mkeremkeskin

iOS 10

app-prefs:を使用

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Gist を参照してください

2
Alex Hedley

IOS 10(テスト済み)のアプリ通知設定で正常に動作します

if(&UIApplicationOpenSettingsURLString != nil){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
2
Mrsantateam

ここに私が見つけた他のものがあります:

  1. 「prefs」URLスキームを定義した後、"prefs:root = Safari&path = ContentBlockers"はシミュレータで動作しています(iOS 9.1 英語)が、シミュレータでは動作していません- (簡体字中国語)。 Safariにジャンプするだけで、コンテンツブロッカーにはジャンプしません。アプリが国際的なものである場合は、注意してください。
    更新:なぜかわからない。今ではもうContentBlockersに飛び込めない。同じコードでも同じバージョンでも動作しない。 :(

  2. 実際のデバイス(私の場合はiPhone 6SおよびiPad mini 2)では、「Safari」は「SAFARI」である必要があります、「Safari」は実際のデバイスでは動作せず、「SAFARI」はシミュレータで動作しています:

    #if Arch(i386) || Arch(x86_64)
        // Simulator
        let url = NSURL(string: "prefs:root=Safari")!
    #else
        // Device
        let url = NSURL(string: "prefs:root=SAFARI")!
    #endif
    
    if UIApplication.sharedApplication().canOpenURL(url) {
        UIApplication.sharedApplication().openURL(url)
    }
    
  3. これまでのところ、iPhoneとiPadの間に違いは見つかりませんでした。

2
Kaiyuan Xu

ここで1つのニュースを更新しています。 「prefs:」のみを使用することはAppleによって拒否されません。私はそれをテストし、アプリストアに承認されていることを確認しました(2016年8月)。どうも。

0