我完成了我的第一个应用并尝试提交并且应用商店拒绝了它2次,原因与他们发送给我的一样:
我们在iPhone上查看了您的应用中的一个或多个错误 在Wi-Fi上运行iOS 9.3.2。 - 审核期间我们无法签名 进入应用程序时发生网络错误后续步骤
请在设备上运行您的应用以确定问题,然后进行修改 并重新提交您的应用以供审核。
在IPv6网络上审核应用。请确保您的应用 支持IPv6网络,因为需要IPv6兼容性。
但是我在我的设备中使用wifi进行了测试,蜂窝网在各种类型的网络上运行良好,现在我没有得到什么问题我需要一个解决方案。
答案 0 :(得分:3)
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并选择如图所示的文件
将AF_INET
更改为AF_INET6
,然后您会收到解锁文件并保存文件的提醒
测试您的应用的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];
}