我们在开发环境中有一个使用我们的 HTTPS 服务器的 ios 应用程序(使用 cordova 构建) 我们收到 SSL 错误,因此我们尝试了下面的步骤 1),它起作用了。
解决方法
1) 添加了在 iOS 中绕过 SSLError 的逻辑:~ AppDelegate.m
@implementation NSURLRequest(DataController)
+(BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host{
return YES;
}
@end
2) 现在我们想在应用商店中提交应用,我们在各种论坛上看到我们需要删除 在提交应用程序之前高于步骤 1),否则将被拒绝。
我们通过从代码中删除步骤 1) 来尝试在我们的开发环境中的 MYAPP-Info.plist 中使用以下代码 - A 和 B,但它没有用。
代码 A)
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
代码 B)
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>OUR_HTTPS_URL</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
现在的问题是~
A) 如果我们只删除第 1) 步,应用程序提交会成功还是会失败。?
B) 如果通过删除步骤 1) 应用提交失败,解决此问题的解决方案是什么,以便应用成功提交到应用商店。
谢谢,
最佳答案
我有 2 个应用程序使用 info.plist 绕过了这个。让他们获得批准没有问题。我在我的开发设置中使用这些,在生产中我使用 HTTPS 连接。这是我的 info.plist 中的条目。请注意,我有 2 个有异常(exception)的域。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>YOUR FIRST DOMAIN GOES HERE</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>YOUR SECOND DOMAIN GOES HERE</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
所以我可以肯定地说,您可以有域异常(exception)并仍然获得批准。
关于ios - 如何使用 HTTPS 主机修复 IOS 应用程序中的 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930358/