由于您知道6月1日之后,iOS中的应用程序应仅支持-IPV6 . 我找到了一种可以将ipv4 ip地址改为ipv6 ip地址的方法 . 但是,我无法判断网络环境只有-IPV6 . 我已经通过我的MACBOOK打开了NAT64 WIFI,也使用了飞行模式来确保它是唯一的IPV6 . 我刚开始发现有一个ipv6的ip地址 . 然后再次使用代码,我将获得ipv4和ipv6地址 . 我不知道 . 任何人都有任何想法?

有我的代码获取IP地址:

- (NSMutableDictionary *)localIPAddressFetcher {
    NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
    struct ifaddrs *myaddrs, *temp_addr;
    struct sockaddr_in *s4;
    struct sockaddr_in6 *s6;
    int status = 0;
    char buf[64];
    status = getifaddrs(&myaddrs);
    if (status == 0) {
        for (temp_addr = myaddrs; temp_addr != NULL; temp_addr = temp_addr->ifa_next) {
            if (temp_addr->ifa_addr == NULL) continue;
            if ((temp_addr->ifa_flags & IFF_UP) == 0) continue;
            if (temp_addr->ifa_flags & IFF_LOOPBACK) continue;
            if (temp_addr->ifa_addr->sa_family == AF_INET) {
                s4 = (struct sockaddr_in *)(temp_addr->ifa_addr);
                if (inet_ntop(temp_addr->ifa_addr->sa_family, (void *)&(s4->sin_addr), buf, sizeof(buf)) != NULL) {
                    if (![[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"lo0"]) {
                        NSString *address = [NSString stringWithUTF8String:buf];
                        if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
                            [addressDic setObject:address forKey:@"ipv4_wifi"];
                        } else {
                            [addressDic setObject:address forKey:[NSString stringWithUTF8String:temp_addr->ifa_name]];
                        }
                    }
                }
            } else if (temp_addr->ifa_addr->sa_family == AF_INET6) {
                s6 = (struct sockaddr_in6 *)(temp_addr->ifa_addr);
                if (inet_ntop(temp_addr->ifa_addr->sa_family, (void *)&(s6->sin6_addr), buf, sizeof(buf)) != NULL) {
                    if (![[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"lo0"]) {
                        NSString *address = [NSString stringWithUTF8String:buf];
                        if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
                            [addressDic setObject:address forKey:@"ipv6_wifi"];
                        } else {
                            [addressDic setObject:address forKey:[NSString stringWithUTF8String:temp_addr->ifa_name]];
                        }
                    }
                }
            }
        }
    }
    freeifaddrs(myaddrs); 

return addressDic;}