Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

実装

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 の抑制状態は元の状態に戻らない。

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away