This question already has answers here:
iPhone active network type (2G, 3G, WiFi)

(3个答案)


7年前关闭。




我如何知道设备是否更改了网络?例如,用例:
  • 用户连接到Wi-FiA。
  • 用户启动了我的应用。
  • 用户连接到Wi-FiB。(甚至3G)
  • 用户还原应用程序。

  • 无论如何,有没有通知应用程序设备已从Wi-Fi A更改为Wi-Fi B的信息?

    最佳答案

    苹果已经足够好为我们创建一个完整的示例。这称为可达性(Apple link)。这是要点:

    在.h文件中:

    // declare Reachability, you no longer have a singleton but manage instances
    Reachability* reachability;
    

    在.m文件中:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
    reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];
    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
    if(remoteHostStatus == NotReachable)
    {
        NSLog(@"no");
    }
    else if (remoteHostStatus == ReachableViaWiFiNetwork)
    {
        NSLog(@"wifi");
    }
    else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
    {
        NSLog(@"cell");
    }
    .....
    
    - (void) handleNetworkChange:(NSNotification *)notice
    {
        NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
        if(remoteHostStatus == NotReachable)
        {
            NSLog(@"no");
        }
        else if (remoteHostStatus == ReachableViaWiFiNetwork)
        {
            NSLog(@"wifi");
        }
        else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
        {
            NSLog(@"cell");
        }
    }
    

    关于iphone - 检测网络是否已更改? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15379083/

    10-11 20:10