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