22

我有一个应用程序,我在其中点击了 HTTP 请求

<NSURLConnection: 0x12d755110> { request: <NSMutableURLRequest: 0x12d754e10> { URL: http://XX.XX.XX.XXX/webService/dataService.svc/SearchLocation } }

现在,每当发出上述请求时,我都会收到以下错误,并且响应中没有收到任何数据。60 秒后,我得到“ Time Out error”。它在 IOS8 及以下版本上运行良好,但在 gin IOS9 上运行良好。谁能让我知道我与这个问题还有什么关系。此外,我在 info.plist 中对 iOS9 的 ATS 进行了以下更改,但仍然面临问题。请让我知道如何解决这个问题?提前致谢。

信息列表

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>

错误

2015-09-22 22:19:58.333 App[751:139449] regionDidChangeAnimated>>>>>>>>>>>>>>>>>: = 40.844278,-74.130561
2015-09-22 22:19:58.344 App[751:139449] Reachability Flag Status: -R ------- networkStatusForFlags
2015-09-22 22:19:58.350 App[751:139449] request:< SearchLocation ><DeviceKeyUDID>My Device UDID</DeviceKeyUDID><SecretKey>SecretKey/SecretKey><ListingType>LOCATION</ListingType><PageIndex>1</PageIndex><MaxNoOfRecords>20</MaxNoOfRecords><Latitude>40.844276</Latitude><Longitude>-74.130562</Longitude><Distance>25</Distance><Address></Address><SearchText></SearchText></SearchLocation >
2015-09-22 22:19:58.357 App[751:139449] -canOpenURL: failed for URL: "cydia://package/com.fake.package" - error: "This app is not allowed to query for scheme cydia"
2015-09-22 22:19:58.945 App[751:139449] theXML contains:
2015-09-22 22:19:58.959 App[751:139449] refreshLocationList maxRecordsSelected:::::::::::::20
2015-09-22 22:19:58.960 App[751:139449] refreshLocationList maxNumOfRecords:::::::::::::20
2015-09-22 22:19:58.960 App[751:139449] refreshLocationList LocationCount::::::::::::::0
2015-09-22 22:19:58.960 App[751:139449] isTempleMaxRecordChanged :::::::::::::0
4

3 回答 3

24

第一个解决方案:- 只需在 info.plist 中添加波纹管代码

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

第二种解决方案: -

任何使用 SDK 9 构建的应用程序都需要在其 plist 文件中提供一个 LSApplicationQueriesSchemes 条目,声明它尝试查询哪些方案。

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>urlscheme</string>
 <string>urlscheme2</string>
 <string>urlscheme3</string>
 <string>urlscheme4</string>
</array> 

假设有两个应用 TestA 和 TestB。TestB 想查询是否安装了 TestA。“TestA”在其 info.plist 文件中定义了以下 URL 方案:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>testA</string>
        </array>
    </dict>
</array>

第二个应用程序“TestB”试图通过调用来确定是否安装了“TestA”:

[[UIApplication sharedApplication]
                    canOpenURL:[NSURL URLWithString:@"TestA://"]];

但这通常会在 iOS9 中返回 NO,因为需要将“TestA”添加到 TestB 的 info.plist 文件中的 LSApplicationQueriesSchemes 条目中。这是通过将以下代码添加到 TestB 的 info.plist 文件来完成的:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>
于 2015-10-27T09:32:57.467 回答
12

这个问题只发生在 iOS 9 中,因为 Apple 做了一些影响 URL 方案的更改。

我认为您的一个库正在检查您是否在越狱设备上运行,方法是检查它是否可以打开 cydia://URL...

“在 iOS 9 之前,应用程序能够在任意 URL 上调用这些方法。从 iOS 9 开始,应用程序必须声明它们希望能够检查并在应用程序的配置文件中打开的 URL 方案因为它已提交给 Apple”

链接:http ://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes

于 2015-09-30T17:00:15.147 回答
-1

如果您在项目中添加了 Splunk Mint 框架,请删除它,因为 Xcode 7 不支持该框架。

还要将此密钥添加到您的 .plist :

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
于 2017-01-23T15:17:35.180 回答