我试图访问本地IP地址,以便我可以更改/更新本地覆盆子pi上的信息。即使用以下内容:
https://github.com/Jopyth/MMM-Remote-Control
我已将我的plist更新为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>http://192.168.0.40</key> // need to add your domain name of webservice
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
但是在加载SIM卡或设备时,我仍然会看到一个空白的,尽管是黑暗的页面。
我正在制作最基本的应用程序,以便我的兄弟可以访问他的魔镜,当他回家更新它但我似乎无法看到本地IP地址。任何帮助都会很棒。
答案 0 :(得分:1)
实际上,真正的问题是ATS异常域不适用于IP地址。它仅适用于域名。
选项:
选项1 - 禁用ATS
如果您将应用程序提交到应用程序商店,那么完全关闭ATS并不是一个好主意 - 如果您希望在Apple开始执行该规则时提交到应用商店,这样做会使您证明该决定是正确的。通常我不推荐这个作为SO的选项。但是,考虑到你在那里放置了一个硬编码的IP地址,我怀疑这是一个针对特定用例创建的单一用途应用程序,你不需要提交给Apple审查(你可能会直接在设备上安装)使用开发配置文件)。如果是这种情况,我将完全使用Info.plist中的NSAllowsArbitraryLoads
键禁用ATS。
这将禁用所有ATS保护,但如果您的应用仅通过HTTPS与本地网络实体通信,则App Transport Security无论如何都不会保护任何内容。
选项2 - 使用NSAllowsLocalNetworking
如果您将NSAllowsArbitraryLoads
和NSAllowsLocalNetworking
放在Info.plist中,在iOS 9中,您将完全禁用ATS,但在iOS 10中(支持NSAllowsLocalNetworking
的第一个版本设置),iOS将忽略NSAllowsArbitraryLoads
并仅在本地网络呼叫上禁用ATS。这样会更安全,但如果您只进行本地网络呼叫,我只会禁用ATS(选项1)。
选项3 - xip.io
如果您想要启用ATS,其他人已经成功使用xip.io服务将本地IP地址“转换”为域名。因此,您需要将xip.io添加到Exception域,将NSIncludesSubdomains的子值设置为true。然后,当您连接到您的域,而不是连接到192.168.0.40,您将连接到192.168.0.40.xip.io