iOS 8.1.1 został wydany około dwie godziny temu przez firmę Apple dla twórców aplikacji dla iPhone'a, iPada i iPoda Touchi mówiłem, że poprawa wydajności iPada 2 i iPhone'a 4S jest jego główną „atrakcyjną” częścią. W przypadku tej aktualizacji Apple udostępniło także dziennik zmian, w którym wyszczególnia wszystkie mniej widoczne zmiany, czyli te wszystkie, które zapewniają nam szybszy system operacyjny ze znacznie mniejszą liczbą problemów.
iOS 8.1.1 jest obecnie dostępny do pobrania wyłącznie ze strony internetowej dewelopera aplikacji i nie wiadomo, czy będzie można go zainstalować na swoich terminalach bez posiadania identyfikatora UDID zarejestrowanego na koncie programisty aplikacji.
Dziennik zmian iOS 8.1.1 – WSZYSTKO nowe
Uwagi i znane problemy
Poniższe problemy dotyczą używania zestawu SDK systemu iOS 8.1.1 do tworzenia kodu.
AVCapture
Znana kwestia
Użycie nowej stałej,
AVCaptureISOCurrent
, spowoduje niespójne wartości ISO (jak zaobserwowano we właściwości ISO), jeślisetExposureModeCustomWithDuration:ISO:completionHandler:
jest wywoływany wielokrotnie.CloudKit
Note
Pojedynczy
CKAsset
instancji nie można już ustawić jako wartości w wielu rekordach CKRecords.Kontakt
Note
Selektor osób w interfejsie książki adresowej został zmieniony w systemie iOS 8. Dodano nowy tryb z nowym interfejsem API, w którym aplikacja nie potrzebuje dostępu do kontaktów użytkownika, a użytkownik nie będzie monitowany o dostęp. Tymczasowa kopia wybranej osoby zostaje zwrócona do aplikacji. EOG
ABPeoplePickerNavigationController.h
by uzyskać więcej szczegółów.Zobacz nowy przykładowy projekt PeoplePicker: Picking a Person or Property demonstrujący użycie nowego trybu.
Dostawcy dokumentów
Uwagi
Twoja aplikacja wymaga uprawnień iCloud, aby mogła być używana jako dostawca dokumentów.
Wymagane jest uprawnienie com.apple.developer.icloud-container-identifiers.
Znane problemy
Po obróceniu selektora dokumentów do pozycji poziomej pasek stanu jest ukryty.
Po wywołaniu selektora dokumentów w orientacji poziomej widok zawierający dokument może zostać przesunięty pod pasek nawigacyjny.
Rozszerzenia
Uwagi
Rozszerzenia wymagają segmentu arm64, aby działać na urządzeniach 64-bitowych. Jeśli spróbujesz uruchomić plasterek armv7 na urządzeniu 64-bitowym, nie zadziała.
Aplikacje muszą mieć wycinek arm64, jeśli pakiet zawiera platformę, z którą łączy się zarówno aplikacja, jak i rozszerzenie aplikacji.
System plików
Note
Układ systemu plików kontenerów aplikacji został zmieniony na dysku. Zamiast polegać na zakodowanej na stałe strukturze katalogów, użyj metody
NSSearchPathForDirectoriesInDomains
funkcja lubURLForDirectory:inDomain:appropriateForURL:create:error:
metodaNSFileManager
klasa. Widzieć Dostęp do plików i katalogów in Przewodnik programowania systemu plików.Czcionki
Note
Aby poprawić czytelność, zwiększono rozmiar tajskiej czcionki systemowej. Jeśli nie podejmiesz odpowiednich działań, spowoduje to przycięcie w wielu miejscach interfejsu użytkownika:
Zastosowanie
UILabel
tak dużo jak to możliwe. Jeżeli korzystasz z Konstruktora interfejsów, upewnij się, że opcja Podglądy klipów nie jest zaznaczona. UIKit powiększy region przycinania, jeśli to konieczne, aby nie przycinać tekstu.Użyj typu dynamicznego. Dzięki temu w etykietach wielowierszowych lub polach tekstowych nie będzie nakładających się glifów.
Jeśli nie możesz wykonać 1 i 2, ponieważ implementujesz własne widoki, musisz wdrożyć środki, aby nie przycinać. Możesz użyć CoreText, aby znaleźć odpowiedni region przycinania dla linii tekstu, wywołując:
CTLineGetBoundsWithOptions(lineRef, kCTLineBoundsIncludeLanguageExtents);Aby uniknąć nakładania się glifów w elementach tekstu wielowierszowego, dostosuj wysokość linii. Zalecane jest dodatkowe 30%.
Dzięki temu działaniu Twoja aplikacja będzie działać lepiej w innych językach, w tym w języku arabskim, hindi i wietnamskim.
HealthKit
Note
Kod próbujący odczytać informacje o treningu w HealthKit może nie być w stanie wykonać kolejnych zapytań do HealthKit.
Jeśli korzystasz z HKWorkouts, powinieneś unikać czytania treningów podczas uruchamiania na wersjach iOS wcześniejszych niż 8.1 z:
NSOperatingSystemVersion ios8_1_0 = (NSOperatingSystemVersion){8, 1, 0}; if ([[NSProcessInfo ProcessInfo] isOperatingSystemAtLeastVersion:ios8_1_0]) { // Odczytywanie i zapisywanie informacji o treningu w HealthKit. } Else { // Zapisz informacje o treningu w HealthKit }Znana kwestia
Dane dotyczące poziomu glukozy we krwi nie są obecnie wyświetlane w aplikacji Zdrowie. Nie ma to wpływu na dostęp stron trzecich ani interfejsy API. Kontrolą dostępu do poziomu glukozy we krwi i wszystkich innych danych dotyczących zdrowia można nadal zarządzać w aplikacji Zdrowie oraz w Ustawieniach > Prywatność > Zdrowie.
Aby uzyskać więcej informacji, zobacz https://support.apple.com/kb/HT6533.
iCloud
Note
Przekazywanie poczty i funkcja AirDrop mogą przestać działać po zmianie hasła do usługi iCloud na stronie appleid.apple.com.
Obejście: Wyloguj się i wróć do iCloud na urządzeniu.
iCloud Napęd
Note
URLForUbiquityContainerIdentifier:
może wrócićnil
podczas uruchamiania aplikacji w Xcode. Jeśli tak, otwórz Preferencje systemowe, przejdź do iCloud > iCloud Drive i włącz Xcode.klawiatury
Znana kwestia
Dodatkowe klawiatury, w tym klawiatury innych firm, mogą nie pojawiać się w przeglądarce Safari, Mapach lub aplikacjach innych firm w Symulatorze.
Obejście: Klawiatury powinny umożliwiać testowanie w Kalendarzu, Spotlight, Kontaktach i Zdjęciach.
Centrum powiadomień
Note
Harmonogram i przeznaczenie
widgetPerformUpdateWithCompletionHandler:
ma służyć jako wygodne miejsce dla całej logiki aktualizacji danych/modeli. Jeśli zostanie wdrożony, system będzie w odpowiednich momentach wywoływał widget w celu aktualizacji swojego stanu, zarówno gdy widoczne jest Centrum Powiadomień, jak i w tle. Aby umożliwić aktualizacje w tle, wymagana jest implementacja. Oczekuje się, że widżet będzie w miarę możliwości aktualizował asynchronicznie i poza głównym wątkiem. Widżety powinny wywołać blok argumentów po zakończeniu pracy, przekazując odpowiedniNCUpdateResult
. Widżety NIE powinny blokować powrotu zviewWillAppear:
o wynikach tej operacji. Zamiast tego widżety powinny ładować stan pamięci podręcznejviewWillAppear:
w celu dopasowania stanu widoku z ostatniegoviewWillDisappear:
, a następnie płynnie przechodź do nowych danych, gdy tylko zostaną dostarczone.Sesja NSURLS
Note
Połączenia
NSURLSessionTask
class udostępnia nową właściwość „priorytetową” z trzema powiązanymi stałymi:NSURLSessionTaskPriorityDefault
,NSURLSessionTaskPriorityLow
,NSURLSessionTaskPriorityHigh
.NSURLSessionTask
priorytetów można użyć do określenia priorytetu wielu żądań i odpowiedzi kierowanych do tego samego hosta. Należy pamiętać, że priorytet jest wskazówką, a nie ścisłą gwarancjąNSURLSessionTask
wydajność.Aby uzyskać szczegółowe informacje na temat użytkowania
NSURLSessionTask
priorytety, patrzNSURLSession.h
nagłówkowy, który jest dostarczany przez framework Foundation.Telefon
Uwagi
Aby aktywować funkcję połączeń Wi-Fi w T-Mobile (tylko w USA), wykonaj następujące kroki:
Wybierz Ustawienia > Telefon > Połączenia Wi-Fi.
Przełącz przełącznik Połączenia Wi-Fi w położenie WŁ.
Jeżeli operator nie posiada zarejestrowanego adresu alarmowego użytkownika, zostaniesz poproszony o jego dodanie przed aktywacją tej funkcji.
ZDJĘCIA
Uwagi
Przed włączeniem i podczas korzystania z biblioteki zdjęć iCloud w wersji beta utwórz kopię zapasową swojej biblioteki zdjęć, wykonując następujące czynności:
Importowanie na komputer Mac przy użyciu iPhoto
Importowanie na komputer Mac za pomocą programu Image Capture
Biblioteka zdjęć iCloud w wersji beta nie będzie pobierać zdjęć i filmów z iTunes zsynchronizowanych z Twoim urządzeniem. Wszelkie zdjęcia i filmy zsynchronizowane z Twoim urządzeniem z iTunes zostaną usunięte, gdy włączysz bibliotekę zdjęć iCloud w wersji beta.
iPhoto dla iOS nie zostanie uruchomione w wersji beta systemu iOS 8. Uruchomienie aplikacji Photos.app spowoduje migrację zmian wprowadzonych w iPhoto do biblioteki zdjęć systemu iOS 8. Upewnij się, że dane iPhoto dla iOS znajdują się w kopii zapasowej urządzenia.
Możliwość automatycznej optymalizacji miejsca na urządzeniu jest włączona dla wszystkich kont większych niż 5 GB.
Podczas korzystania z Udostępniania rodzinnego iCloud włączone są zarówno Udostępnianie zdjęć w iCloud, jak i Mój strumień zdjęć.
Profile udostępniania
Znana kwestia
Jeśli zaktualizowałeś wersję beta systemu iOS 8.1.1 do wersji 8, możesz zauważyć awarie aplikacji z powodu problemów z profilem udostępniania.
Obejście:
Podłącz urządzenie przez USB do komputera Mac
Uruchom Xcode
Wybierz Okno -> Urządzenia
Kliknij prawym przyciskiem myszy urządzenie w lewej kolumnie i wybierz „Pokaż profile udostępniania”
Kliknij odpowiedni profil udostępniania
Naciśnij przycisk
Kontynuuj usuwanie wszystkich profili, których to dotyczy.
Zainstaluj ponownie aplikację
UIKit
Uwagi
UILabel
ma domyślną wartość TAK dlaclipsToBounds
. To różni się od normalnegoUIView
domyślnie NIE.Połączenia
leftLayoutGuide
irightLayoutGuide
Interfejsy API zostały usunięte. Proszę skorzystać zlayoutMargins
zamiast tego nieruchomość.WebKit
Uwagi
Interfejs API nawigacji czasowej został wyłączony tylko w systemie iOS ze względu na problemy z wydajnością.
Połączenia Wi-Fi (tylko T-Mobile w USA)
Note
Nazwa operatora na pasku stanu będzie wyświetlać „T-Mobile Wi-Fi”, gdy urządzenie będzie mogło wykonywać i odbierać połączenia Wi-Fi.