Этому приложению не разрешено запрашивать схему ошибки cydia IOS9

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

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

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

Информация.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

person Rahul Singh    schedule 22.09.2015    source источник
comment
У меня эта проблема только при запуске приложения на эмуляторе. Вы решили это?   -  person Konstantin.Efimenko    schedule 05.10.2015


Ответы (3)


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

person Javier Flores Font    schedule 30.09.2015
comment
Будет ли Apple отклонять заявку, если Cydia будет добавлена ​​в белый список в plist приложения? - person frankish; 19.10.2015
comment
@frankish — Apple отклонит заявку, если Cydia будет добавлена ​​в белый список в plist приложения? - person V V; 23.10.2017

Первое решение: просто добавьте приведенный ниже код в свой 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 в файле info.plist TestB. Это делается путем добавления следующего кода в файл info.plist TestB:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>
person Mitul Marsoniya    schedule 27.10.2015

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

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

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
person Hiren Dhamecha    schedule 23.01.2017