web-dev-qa-db-fra.com

"Cette application n'est pas autorisée à interroger le schéma cydia" Erreur IOS9

J'ai une application où je frappe une requête HTTP

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

Maintenant, chaque fois que la demande ci-dessus est faite, j'obtiens l'erreur suivante et aucune donnée n'est reçue dans la réponse. Après 60 secondes, je reçois "Time Out error ". Il fonctionne très bien sur IOS8 et inférieur mais ne fonctionne pas sur gin IOS9. Quelqu'un pourrait-il me dire ce que j'ai à faire avec ce problème. J'ai également effectué les modifications suivantes concernant ATS pour iOS9 dans info.plist , mais toujours confronté au problème. Veuillez me faire savoir comment résoudre ce problème? Merci d'avance.

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>

Erreur

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
20
Rahul Singh

Ce problème se produit uniquement dans iOS 9 depuis Apple a apporté quelques modifications ayant un impact sur les schémas d'URL.

Je pense que l'une de vos bibliothèques vérifie si vous utilisez un appareil jailbreaké en vérifiant s'il peut ouvrir l'URL cydia: // ...

"Jusqu'à iOS 9, les applications ont pu appeler ces méthodes sur n'importe quelle URL arbitraire. À partir d'iOS 9, les applications devront déclarer les schémas d'URL qu'elles souhaitent pouvoir vérifier et ouvrir dans les fichiers de configuration de l'application. tel qu'il est soumis à Apple "

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

10
Javier Flores Font

Première solution: - ajoutez simplement le code ci-dessous dans votre info.plist

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

Deuxième solution: -

Toute application créée avec SDK 9 doit fournir une entrée LSApplicationQueriesSchemes dans son fichier plist, déclarant les schémas qu'elle tente d'interroger.

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

En supposant deux applications TestA et TestB. TestB veut demander si TestA est installé. "TestA" définit le schéma d'URL suivant dans son fichier info.plist:

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

La deuxième application "TestB" essaie de savoir si "TestA" est installé en appelant:

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

Mais cela renvoie normalement NON dans iOS9 car "TestA" doit être ajouté à l'entrée LSApplicationQueriesSchemes dans le fichier info.plist de TestB. Cela se fait en ajoutant le code suivant au fichier info.plist de TestB:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>TestA</string>
</array>
22
Mitul Marsoniya