LoginSignup
19
19

More than 5 years have passed since last update.

iOS アプリから Wi-Fi 認証画面を制御する

Posted at

認証が必要なアクセスポイントに接続した際に表示される画面を抑制する方法のメモ。

実装

setter しか無いので制御を変更する場合は毎度値を設定する必要がある。

抑制する

example.m
#import <SystemConfiguration/CaptiveNetwork.h>

- (void)enable {
    NSMutableArray *supportedSSIDs = [NSMutableArray new];
    [supportedSSIDs addObject:@"target_ssid"];
    CFArrayRef supportedSSIDsRef = (__bridge CFArrayRef)supportedSSIDs;

    if(CNSetSupportedSSIDs(supportedSSIDsRef)) {
        NSLog(@"Successfully registered supported network SSIDs: %@", supportedSSIDs);
    }
    else {
        NSLog(@"Error: Failed to register supported network SSIDs: %@", supportedSSIDs);
    }

}

抑制を解除する

example.m
#import <SystemConfiguration/CaptiveNetwork.h>

- (void)disable {
    CFArrayRef supportedSSIDsRef = (__bridge CFArrayRef)@[];

    if(CNSetSupportedSSIDs(supportedSSIDsRef)) {
        NSLog(@"Successfully unregistered supported network SSIDs");
    }
    else {
        NSLog(@"Error: Failed to unregister supported network SSIDs");
    }

}

その他挙動

他アプリで同一の SSID が制御された場合

Bundle ID 毎に管理されている模様。
そのため、他アプリで制御されても設定値が影響することはないし影響されることもない。

アプリを削除した場合

アプリを削除しても SSID の抑制状態は元の状態に戻らない。

ネットワーク設定の初期化を行なった場合

抑制状態が解除され、初期状態に戻る。

19
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19