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"]];
}
}
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)
}
すべての条件:
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.
}
//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];
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 {
...
}