"Это приложение не разрешено запрашивать для схемы 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
Ответы
Ответ 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>