web-dev-qa-db-ja.com

iOS9のObjective CでプログラムでWIFI設定を開く方法

Objective-Cを使用して、アプリケーションからWIFI設定にアクセスしようとしています。しかし、方法を見つけることができません。誰かが私を助けてくれませんか?

すでにテスト済み:

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

IOS 9では機能しません。

これは私のコードです

if (&UIApplicationOpenSettingsURLString != NULL) { 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; 
} 

https://stackoverflow.com/a/31253743/3668465 のようなURLスキームに設定を追加してみてください

これはiOS 10で正常に動作します

ターゲットに移動->(アプリケーション)->情報-> URLタイプ-> +

の中に URL Schemes 書く

設定

その後、呼び出し、

- (void)openWifiSettings
{
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=WIFI"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
    }
}
6
Shuvo Joseph

Appleの新しいレビュー基準に従って、Wi-Fi設定を開くためにこの方法を使用することは想定されていません。私はこれを私のアプリで長い間使用しており、最近Appleが以下のコメントで拒否されました。

アプリは「prefs:root =」非公開URLスキームを使用します。これはプライベートエンティティです。 App Storeで非公開APIを使用することは許可されていません。これらのAPIが変更された場合、ユーザーエクスペリエンスが低下する可能性があるためです。

したがって、UIApplicationOpenSettingsURLStringを使用して、アプリの設定に移動できます。

スウィフトコード:

if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
                    UIApplication.shared.openURL(settingsUrl)
                }
6
Karthick Ramesh

すべての条件:

    NSURL * urlCheck1 = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
    NSURL * urlCheck2 = [NSURL URLWithString:@"prefs:root=WIFI"];
    NSURL * urlCheck3 = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

    if ([[UIApplication sharedApplication] canOpenURL:urlCheck1])
    {
        [[UIApplication sharedApplication] openURL:urlCheck1];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck2])
    {
        [[UIApplication sharedApplication] openURL:urlCheck2];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck3])
    {
        [[UIApplication sharedApplication] openURL:urlCheck3];
    }
    else
    {
        //Unable to open settings app.
    }
3
Vinod Sutar
//Pre iOS 10
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if (![[UIApplication sharedApplication] canOpenURL:url])
{   //iOS 10+
    url = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
}
[[UIApplication sharedApplication] openURL:url];
2
Pierre

Swift 4.2、iOS 12

これは私が私のアプリで現在使用している関数です:

_extension UIApplication {

    ...

    @discardableResult
    static func openAppSetting() -> Bool {
        guard
            let settingsURL = URL(string: UIApplication.openSettingsURLString),
            UIApplication.shared.canOpenURL(settingsURL)
            else {
                return false
        }

        UIApplication.shared.open(settingsURL)
        return true
    }
}
_

使用法:UIApplication.openAppSetting()

また、非公開URLスキームを使用しました:_prefs:root=_など。ただし、アプリが拒否されました。したがって、ディープリンクを使用してより具体的なことを行う場合は、時間を無駄にしないでください。現時点ではできません。

OpenURLでwifi設定に直接アクセスすることはできません。できることは、自分のアプリの設定を開くことだけです。

if (&UIApplicationOpenSettingsURLString != nil) {
   NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
   [[UIApplication sharedApplication] openURL:URL];
} else {
  ...
}
1
Bart