Ios 应用商店因相同问题拒绝了我的应用2次

Ios 应用商店因相同问题拒绝了我的应用2次,ios,networking,app-store,Ios,Networking,App Store,我完成了我的第一个应用并尝试提交,但应用商店拒绝了它2次,原因与他们发送给我的原因相同: 在iPhone上查看时,我们发现你的应用程序中有一个或多个bug 在Wi-Fi上运行iOS 9.3.2。-在审查期间,我们无法签字 在接下来的步骤中,由于出现网络错误而进入应用程序 请在设备上运行应用程序以确定问题,然后进行修订 并重新提交应用程序以供审阅 在IPv6网络上审查应用程序。请确保您的应用程序 支持IPv6网络,因为需要IPv6兼容性 但是我在我的设备上测试了wifi、蜂窝网络和各种网络,它工作

我完成了我的第一个应用并尝试提交,但应用商店拒绝了它2次,原因与他们发送给我的原因相同:

在iPhone上查看时,我们发现你的应用程序中有一个或多个bug 在Wi-Fi上运行iOS 9.3.2。-在审查期间,我们无法签字 在接下来的步骤中,由于出现网络错误而进入应用程序

请在设备上运行应用程序以确定问题,然后进行修订 并重新提交应用程序以供审阅

在IPv6网络上审查应用程序。请确保您的应用程序 支持IPv6网络,因为需要IPv6兼容性


但是我在我的设备上测试了wifi、蜂窝网络和各种网络,它工作正常,现在我不明白我需要解决的问题是什么。

苹果公司从今年6月开始强制实施IPv6。但该库目前不支持IPv6。因此,您需要做的是复制主捆绑包中的库,并在
NetworkReachabilityManager.swift
文件中更改以下内容

public convenience init?() {
    var address = sockaddr_in()
    address.sin_len = UInt8(sizeofValue(address))
    address.sin_family = sa_family_t(AF_INET6) // Change this from AF_INET to AF_INET6

    guard let reachability = withUnsafePointer(&address, {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }) else { return nil }

    self.init(reachability: reachability)
}
如果在项目中使用Pod,则需要解锁文件以进行更改。但是,当您要更新POD时,请记住将
AF\u INET更改为AF\u INET6

选中此处并选择文件,如图所示

AF_INET
更改为
AF_INET6
,然后您将收到解锁文件并保存文件的警报

测试应用程序的IPv6地址


礼节:

自今年6月以来,苹果已强制实施IPv6。但该库目前不支持IPv6。因此,您需要做的是复制主捆绑包中的库,并在
NetworkReachabilityManager.swift
文件中更改以下内容

public convenience init?() {
    var address = sockaddr_in()
    address.sin_len = UInt8(sizeofValue(address))
    address.sin_family = sa_family_t(AF_INET6) // Change this from AF_INET to AF_INET6

    guard let reachability = withUnsafePointer(&address, {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }) else { return nil }

    self.init(reachability: reachability)
}
如果在项目中使用Pod,则需要解锁文件以进行更改。但是,当您要更新POD时,请记住将
AF\u INET更改为AF\u INET6

选中此处并选择文件,如图所示

AF_INET
更改为
AF_INET6
,然后您将收到解锁文件并保存文件的警报

测试应用程序的IPv6地址


礼节:

请参见
AFNetworking
如何在其实例中处理IPv6。IPv6中有一个名为
sockaddr\u的类。在库
Alamofire
提供新的更新之前,您可能也需要处理这个问题

它使用IPv6检查9.0及以上版本,使用IPv4检查以下版本。您的应用程序可能在低于iOS9.0版本的设备上崩溃

+ (instancetype)manager
{
    #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
        struct sockaddr_in6 address;
        bzero(&address, sizeof(address));
        address.sin6_len = sizeof(address);
        address.sin6_family = AF_INET6;
    #else
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET;
    #endif

    return [self managerForAddress:&address];
}

请参见
AFNetworking
如何在其实例中处理IPv6。IPv6中有一个名为
sockaddr\u的类。在库
Alamofire
提供新的更新之前,您可能也需要处理这个问题

它使用IPv6检查9.0及以上版本,使用IPv4检查以下版本。您的应用程序可能在低于iOS9.0版本的设备上崩溃

+ (instancetype)manager
{
    #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
        struct sockaddr_in6 address;
        bzero(&address, sizeof(address));
        address.sin6_len = sizeof(address);
        address.sin6_family = AF_INET6;
    #else
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET;
    #endif

    return [self managerForAddress:&address];
}

如果您使用的是AFNetworking,请替换reachability.m中的方法

+(Reachability *)reachabilityForInternetConnection
{

#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
    struct sockaddr_in6 address;
    bzero(&address, sizeof(address));
    address.sin6_len = sizeof(address);
    address.sin6_family = AF_INET6;
#else
    struct sockaddr_in address;
    bzero(&address, sizeof(address));
    address.sin_len = sizeof(address);
    address.sin_family = AF_INET;
#endif
    return [self reachabilityWithAddress:&address];

}

+(Reachability*)reachabilityForLocalWiFi
{
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)

    struct sockaddr_in localWifiAddress;
    bzero(&localWifiAddress, sizeof(localWifiAddress));
    localWifiAddress.sin6_len            = sizeof(localWifiAddress);
    localWifiAddress.sin6_family         = AF_INET6;
    // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
    localWifiAddress.sin_addr.s_addr    = htonl(IN_LINKLOCALNETNUM);

#else
    struct sockaddr_in localWifiAddress;
    bzero(&localWifiAddress, sizeof(localWifiAddress));
    localWifiAddress.sin_len            = sizeof(localWifiAddress);
    localWifiAddress.sin_family         = AF_INET;
    // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
    localWifiAddress.sin_addr.s_addr    = htonl(IN_LINKLOCALNETNUM);
#endif
    return [self reachabilityWithAddress:&localWifiAddress];
}
+(可达性*)Internet连接的可达性
{
#如果(已定义(需要IPHONE操作系统版本)和&IPHONE操作系统版本(需要>=90000);(已定义(需要MAC操作系统版本)和&MAC操作系统版本(需要>=101100)
6地址中的结构sockaddr_;
bzero(&address,sizeof(address));
address.sin6_len=sizeof(地址);
address.sin6_family=AF_INET6;
#否则
地址中的结构sockaddr_;
bzero(&address,sizeof(address));
address.sin_len=sizeof(地址);
address.sin_family=AF_INET;
#恩迪夫
返回[带地址的自可达性:&地址];
}
+(可达性*)本地的可达性
{
#如果(已定义(需要IPHONE操作系统版本)和&IPHONE操作系统版本(需要>=90000);(已定义(需要MAC操作系统版本)和&MAC操作系统版本(需要>=101100)
localWifiAddress中的结构sockaddr_;
bzero(&localWifiAddress,sizeof(localWifiAddress));
localWifiAddress.sin6_len=sizeof(localWifiAddress);
localWifiAddress.sin6_family=AF_INET6;
//IN_LINKLOCALNETNUM在as 169.254.0.0中定义
localWifiAddress.sin\u addr.s\u addr=htonl(IN\u LINKLOCALNETNUM);
#否则
localWifiAddress中的结构sockaddr_;
bzero(&localWifiAddress,sizeof(localWifiAddress));
localWifiAddress.sin_len=sizeof(localWifiAddress);
localWifiAddress.sin_family=AF_INET;
//IN_LINKLOCALNETNUM在as 169.254.0.0中定义
localWifiAddress.sin\u addr.s\u addr=htonl(IN\u LINKLOCALNETNUM);
#恩迪夫
返回[self-reachabilityWithAddress:&localWifiAddress];
}

如果您使用的是AFNetworking,请替换reachability.m中的方法

+(Reachability *)reachabilityForInternetConnection
{

#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
    struct sockaddr_in6 address;
    bzero(&address, sizeof(address));
    address.sin6_len = sizeof(address);
    address.sin6_family = AF_INET6;
#else
    struct sockaddr_in address;
    bzero(&address, sizeof(address));
    address.sin_len = sizeof(address);
    address.sin_family = AF_INET;
#endif
    return [self reachabilityWithAddress:&address];

}

+(Reachability*)reachabilityForLocalWiFi
{
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)

    struct sockaddr_in localWifiAddress;
    bzero(&localWifiAddress, sizeof(localWifiAddress));
    localWifiAddress.sin6_len            = sizeof(localWifiAddress);
    localWifiAddress.sin6_family         = AF_INET6;
    // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
    localWifiAddress.sin_addr.s_addr    = htonl(IN_LINKLOCALNETNUM);

#else
    struct sockaddr_in localWifiAddress;
    bzero(&localWifiAddress, sizeof(localWifiAddress));
    localWifiAddress.sin_len            = sizeof(localWifiAddress);
    localWifiAddress.sin_family         = AF_INET;
    // IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
    localWifiAddress.sin_addr.s_addr    = htonl(IN_LINKLOCALNETNUM);
#endif
    return [self reachabilityWithAddress:&localWifiAddress];
}
+(可达性*)Internet连接的可达性
{
#如果(已定义(需要IPHONE操作系统版本)和&IPHONE操作系统版本(需要>=90000);(已定义(需要MAC操作系统版本)和&MAC操作系统版本(需要>=101100)
6地址中的结构sockaddr_;
bzero(&address,sizeof(address));
address.sin6_len=sizeof(地址);
address.sin6_family=AF_INET6;
#否则
地址中的结构sockaddr_;
bzero(&address,sizeof(address));
address.sin_len=sizeof(地址);
address.sin_family=AF_INET;
#恩迪夫
返回[带地址的自可达性:&地址];
}
+(可达性*)本地的可达性
{
#如果(已定义(需要IPHONE操作系统版本)和&IPHONE操作系统版本(需要>=90000);(已定义(需要MAC操作系统版本)和&MAC操作系统版本(需要>=101100)
localWifiAddress中的结构sockaddr_;
bzero(&localWifiAddress,sizeof(localWifiAddress));
localWifiAddress.sin6_len=sizeof(localWifiAddress);
localWifiAddress.sin6_family=AF_INET6;
//IN_LINKLOCALNETNUM在as 169.254.0.0中定义
localWifiAddress.sin\u addr.s\u addr=htonl(IN\u LINKLOCALNETNUM);
#否则
localWifiAddress中的结构sockaddr_;