22

HTTP リクエストをヒットするアプリがあります

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

さて、上記のリクエストが行われるたびに、次のエラーが発生し、レスポンスでデータが受信されません。60 秒後に " Time Out error" が表示されます。IOS8 以下では問題なく動作しますが、iOS9 では動作しません。この問題に他に何をしなければならないか、誰か教えてください。また、info.plist で iOS9 の ATS に関して次の変更を行いましたが、まだ問題に直面しています。これを修正する方法を教えてください。前もって感謝します。

Info.plist

<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>

2番目の解決策:-

SDK 9 で構築されたすべてのアプリは、その plist ファイルに LSApplicationQueriesSchemes エントリを提供し、クエリを試行するスキームを宣言する必要があります。

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

TestA と TestB の 2 つのアプリを想定しています。TestB は、TestA がインストールされているかどうかを照会したいと考えています。「TestA」は、その info.plist ファイルで次の URL スキームを定義します。

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

2 番目のアプリ「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

この問題は、Apple が URL スキームに影響を与えるいくつかの変更を加えたため、iOS 9 でのみ発生します。

あなたのライブラリの 1 つが、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 に答える