Подтвердить что ты не робот

"Это приложение не разрешено запрашивать для схемы cydia" Ошибка IOS9

У меня есть приложение, в котором я попал в HTTP-запрос

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

Теперь, всякий раз, когда выполняется вышеуказанный запрос, я получаю следующую ошибку и данные не получаются в ответе. Через 60 секунд я получаю "Time Out error". Он отлично работает на IOS8 и ниже, но не работает gin IOS9. Может кто-нибудь дать мне знать, что еще я должен сделать с этой проблемой. Кроме того, я сделал следующие изменения в отношении ATS для iOS9 в info.plist, но все еще сталкивается с этой проблемой. Пожалуйста, дайте мне знать, как это исправить? Спасибо заранее.

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

Ответ 1

Эта проблема возникает только в 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

Ответ 2

Первое решение: - просто добавьте следующий код в свой info.plist

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

Второе решение:

Любое приложение, построенное с помощью SDK 9, должно предоставить запись LSApplicationQueriesSchemes в своем файле plist, объявив, какие схемы он пытается запросить.

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

Предполагая два приложения TestA и TestB. TestB хочет запросить, установлен ли TestA. "TestA" определяет следующую схему URL в файле info.plist:

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

Второе приложение "TestB" пытается выяснить, установлен ли "TestA" , вызывая:

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

Но это нормально будет возвращать NO в iOS9, потому что "TestA" необходимо добавить в запись LSApplicationQueriesSchemes в файле test.plist. Это делается путем добавления следующего кода в файл TestB info.plist:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>

Ответ 3

Удалите фреймворк Splunk Mint, если вы добавили его в проект, потому что Xcode 7 не поддерживает фреймворк.

Также добавьте этот ключ в свой .plist:

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