2015-07-21 12 views
17

Nowy ATS zaangażowany przez iOS 9 powoduje, że wiele funkcji związanych z http przestaje działać. Muszę dodać cały URL żądania http do białej listy lub po prostu wyłączyć ATS, ustawiając NSAllowsArbitraryLoads na YES.Czy App Store odrzuca przesyłanie, jeśli NSAllowsArbitraryLoads ustawiono na TAK?

Czy ktoś wie, czy App Store odrzuci zgłoszenie, jeśli NSAllowsArbitraryLoads ustawiono na YES?

+0

Nie ma oczywistych powodów odrzucenia, ponieważ NSAllowsArbitraryLoads jest częścią publicznego interfejsu API i jest udokumentowany. Jeśli możesz wyświetlić listę wszystkich hostów, z których korzysta twoja aplikacja, prawdopodobnie lepiej jest dodać je do pliku plist zamiast używać wyjątku z symbolem wieloznacznym. Zauważ też, że w takim przypadku lista hostów będzie łatwo dostępna dla każdego, kto potrafi czytać zwykły tekst :) – Vladimir

+0

Domyślam się, że w przyszłości spowoduje to przerażającą wiadomość dla użytkowników po instalacji aplikacji. – funkybro

+0

Ktoś wie, czy dotyczy to również aplikacji macOS? –

Odpowiedz

14

UPDATE: Apple odrzuca aplikacje nie zgodny z ATS po koniec grudnia 2016.

Source

Jednakże, jeśli trzeba załadować http:// zasobu tylko w internecie (UIWebView/WKWebView/SafariViewController) powinny wystarczyć następujące polecenia.

UWAGA: Ten przycisk jest dostępny tylko z iOS 10.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
</dict> 
+0

To duży wpływ. Czy to ma wpływ tylko na interfejsy API sieci iOS. A co z bibliotekami firm trzecich, takimi jak curl? – jayatubi

+0

Sądzę, że istnieją wyjątki dla już zaszyfrowanych danych masowych, takich jak przesyłanie strumieniowe multimediów. Nie jestem pewien co do curl. –

+0

@ Vijayts proszę również wspomnieć, że ten klucz jest obsługiwany tylko w iOS 10.0+ –

2

Wszystkie połączenia korzystające z interfejsów NSURLConnection, CFURL lub NSURLSession korzystają z domyślnego zachowania aplikacji App Transport Security w aplikacjach zbudowanych dla systemów iOS 9.0 lub nowszych oraz OS X 10.11 lub nowszych. Połączenia, które nie spełniają wymagań, zawiodą.

Można jednak określić wyjątki od domyślnego zachowania w pliku Info.plist w aplikacji lub rozszerzeniu. Użyj kluczy na liście właściwości dla określonych wyjątków lub, aby wyłączyć aplikację App Transport Security. Tabela 1-1 pokazuje klucze i ich typy oraz wykorzystuje wcięcia do wskazania struktury.

Oto link źródło: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

18

Dzięki za każdy odpowiedź.

Dobrą wiadomością jest Apple Accepted moja aplikacja z NSAllowsArbitraryLoads ustawiona na YES. tylko // zasób:

UPDATE (Dzięki @Vijayts): Apple odrzuca aplikacje niespełniającego ATS po koniec grudnia 2016.

Source

Jednakże, jeśli trzeba załadować http w sieci (UIWebView/WKWebView/SafariViewController) wystarczą poniższe polecenia.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoadsInWebContent</key> 
    <true/> 
</dict> 
+1

Czy ustawienie NSAllowsArbitraryLoads na YES nie będzie działać po grudniu 2016? Czy to nie jest część specyfikacji ATS? – Henning

+1

@Henning wydaje się być prawdą. –

+0

Czy nie lepiej zmienić zaakceptowaną odpowiedź na @ Vijayts? –

3

Ostatnio słyszeliśmy o NSAllowsArbitraryLoads z Apple było w grudniu 2016 r. https://developer.apple.com/news/?id=12212016b

Apple wciąż przyjmuje nowe aplikacje i aktualizacje. Moja nowa aplikacja została zatwierdzona w kwietniu 2017 roku pod numerem NSAllowsArbitraryLoads ustawionym na YES. Niedawno przesłałem również aktualizacje, bez żadnych problemów.

+0

dzięki za odpowiedź. Mam nadzieję, że moja aplikacja przejdzie ... – sajaz

0

Mam aplikację, która umożliwia użytkownikom określenie adresu URL wyświetlanego w widoku internetowym podczas wykonywania. Ten adres URL może być adresem URL HTTP. Z tego powodu włączam NSAllowsArbitraryLoads ustawioną na yes.

Przesłałem aktualizację tej aplikacji po grudniu 2016 r. I nie miałem żadnych problemów.

Mój plist określa również NSAllowsArbitraryLoadsInWebContent, a ja określam wyjątki, które aktywują protokół TLS dla znanych usług internetowych, z których korzysta moja aplikacja, w których obsługiwany jest protokół TLS.

po prostu zawarte notatkę opinię, że wyjaśnił, że NSAllowsArbitraryLoadsInWebContent nie jest wystarczające, ponieważ moja aplikacja jest obsługiwana w iOS 9.

nigdy nie miał nawet pytanie z aplikacjami recenzję o tym.