App store拒绝了我的应用2次同样的问题

时间:2016-07-13 04:46:25

标签: ios networking app-store

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

  

我们在iPhone上查看了您的应用中的一个或多个错误   在Wi-Fi上运行iOS 9.3.2。 - 审核期间我们无法签名   进入应用程序时发生网络错误后续步骤

     

请在设备上运行您的应用以确定问题,然后进行修改   并重新提交您的应用以供审核。

     

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

但是我在我的设备中使用wifi进行了测试,蜂窝网在各种类型的网络上运行良好,现在我没有得到什么问题我需要一个解决方案。

3 个答案:

答案 0 :(得分:3)

自今年6月以来,Apple一直强制推行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_INET to AF_INET6

在此处检查您的Pod并选择如图所示的文件

enter image description here

AF_INET更改为AF_INET6 ,然后您会收到解锁文件并保存文件的提醒

enter image description here

测试您的应用的IPv6地址 follow

礼貌:SO Answer

答案 1 :(得分:2)

请参见此处AFNetworking如何在其实例中处理IPv6。 IPv6中有一个名为sockaddr_in6的类。在库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];
}

答案 2 :(得分:0)

如果您使用的是AFNetworking,请替换Reachablity.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];
}