認証が必要なアクセスポイントに接続した際に表示される画面を抑制する方法のメモ。
実装
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 の抑制状態は元の状態に戻らない。
ネットワーク設定の初期化を行なった場合
抑制状態が解除され、初期状態に戻る。