Här är allt som nya iOS 5 GM ger

     iOS 5 GM släpptes för en timme sedan av Apple för iOS-applikationsutvecklare och Dev Team tillkännagav redan som dessa kan jailbreakas med redsn0w. Hittills har jag sett några av nyheterna implementerade av Apple på Apple-konferensen, men säkert i iOS 5 kommer det att finnas många fler nyheter som jag kommer att presentera för dig under de följande dagarna efter att jag har möjlighet att leka lite med nytt operativsystem. Tills dess, nedan har du ändringsloggen för det nya operativsystemet, så allt som Apple har implementerat nytt.

ANMÄRKNINGAR OCH KÄNDA FRÅGOR

Följande problem gäller att använda 5 SDK för att utveckla kod.

konton

  • När du skapar ett iCloud-konto kan du använda vilket Apple-ID som helst så länge det är en fullständig e-postadress och inte ett MobileMe-konto. Om du har ett MobileMe-konto kan du flytta det kontot till iCloud. Du kan hitta mer information på: http://me.com/move

AirPlay

  • Från och med iOS 5 är AirPlay aktiverat som standard för videoinnehåll i applikationer och webbplatser.
  • I iOS 5 lägger AV Foundation till stöd för videouppspelning via AirPlay.

API: er

  • Smakämnen NSNetService class och CFNetService API:er inkluderar inte P2P-gränssnitt som standard. För att bläddra, registrera eller lösa tjänster över P2P-gränssnitt måste en applikation använda Bonjour DNSService*() API:er som anges nedan.
  • Ställa in interfaceIndex parametern till kDNSServiceInterfaceIndexAny i följande API kommer inte att inkludera P2P-gränssnitt som standard. För att inkludera P2P-gränssnitt måste du nu ställa inkDNSServiceFlagsIncludeP2P flagga vid användning kDNSServiceInterfaceIndexAny eller ställ in interfaceIndex till kDNSServiceInterfaceIndexP2P. De berörda API:erna har:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

API-validering

  • I iOS 5-utvecklingsverktygen är det möjligt att extrahera API:er som används av en applikation och få dem kontrollerade för användning av privata API:er. Det här alternativet erbjuds när du validerar din ansökan för appinlämning.

Apple TV

  • Apple TV-programvaran gör det möjligt för användare att spegla innehållet i en iPad 2 till en Apple TV (andra generationen) med AirPlay. Den här programvaran aktiverar även Photo Stream på Apple TV så att användare kan komma åt foton lagrade i iCloud. Apple TV Software beta tillhandahålls för att testa den senaste AirPlay-funktionaliteten med dina iOS 2-appar och webbplatser. Om du vill installera Apple TV Software beta på din enhet måste du först registrera enhetens UDID i iOS Developer Program Portal.

Automatisk referensräkning

  • I Xcode, om konfigurationen är inställd på Enhet och det finns ett utrymme i sökvägen till en av källfilerna (vanligare är projektet i en katalog med mellanslag), steget "Konvertera till automatisk referensräkning" (efter förkontroll ) kommer att misslyckas med fel: Error in format of file: <path>.Om det uppstår bör användaren byta till Simulator och försöka migreringen igen.

Binär kompatibilitet

  • På appar som är länkade mot iOS 5 SDK kommer rullningsvyns innehållsförskjutningar inte längre att avrundas till integrerade pixlar under en nypningsgest.

GameKit

  • Matchdata för turbaserade matcher är begränsad till 4 KB.
  • FAST: Automatisk matchning med den turbaserade vykontrollen fungerar inte. Inbjudningar eller API för direkt automatisk matchning kan användas som en lösning.

icloud säkerhetskopiering

  • Säkerhetskopieringar gjorda före den 22 september är inte längre tillgängliga. Vi rekommenderar starkt att du uppgraderar till den här versionen av iOS 5 för att kunna fortsätta säkerhetskopiera dina enheter

icloud Förvaring

  • I iCloud-nyckelvärdesarkivet har det maximala antalet nycklar höjts till 256.
  • Alla nygenererade provisioneringsprofiler är nu automatiskt aktiverade för iCloud. Om du använder en Xcode-hanterad Team Provisioning-profil klickar du på uppdatera i Xcode Organizer för att få en ny iCloud-aktiverad profil. För att aktivera alla andra provisioneringsprofiler för iCloud, återskapa helt enkelt dina profiler i iOS Provisioning Portal.
  • Om din applikation använder NSMetadataQuery klass måste du sätta ett predikat och predikatet är nu hedrat. Men predikatet är en NSPredicate-stilspredikat, inte ett Spotlight-predikat. Ett exempel på skillnaden är att du måste använda LIKE istället för = för jokerteckenmatchning. Skillnaderna definieras mer i detalj på:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1.
  • Smakämnen setSortDescriptors: metod av NSMetadataQuery stöds inte.
  • För att aktivera iCloud-lagring i dina appar i iOS 5, klicka på kryssrutan Aktivera rättigheter i panelen Sammanfattning av ditt projekt. Xcode skapar en anpassad behörighetsfil för ditt projekt som automatiskt inkluderar ditt Team ID. Du kan lägga till ytterligare iCloud Container-värden som krävs av din applikation. (Observera att du måste återskapa dina befintliga provisioneringsprofiler, antingen med Xcode eller i iOS Provisioning Portal, för att använda iCloud-lagring.)
  • Behållaridentifieringssträngen du skickar till URLForUbiquityContainerIdentifier: metod av NSFileManager måste inkludera team-ID i början av strängen. Som en bekvämlighet kan du passera nil för att hämta det första dokumentbehållarens ID som anges i appens rättigheter.
  • I iOS 5 kan filer som är skyddade via dataskydd inte användas med iCloud Storage API:er.
  • Filpresentatörer—objekt som använder NSFilePresenter protokoll – ta inte emot några av de meddelanden som de ska ta emot, inklusive:

    Som en omgång, implementera relinquishPresentedItemToWriter: metod och kontrollera om författaren faktiskt skrev när din filpresentatör återskaffade filen.

  • Om du rapporterar en bugg relaterad till iCloud-lagringsgränssnitten, inkludera loggarna som samlades in under din felsökningssession. För att generera dessa loggar måste du installera en speciell felsökningsprofil på din enhet. Felsökningsprofilen kan erhållas från http://connect.apple.com. Den här profilen möjliggör generering av felsökningsloggar som behövs för att diagnostisera eventuella problem med iCloud-lagring. Instruktionerna för att samla in loggarna är:
    1. Installera profilen. (Det enklaste sättet att göra detta är att skicka det till dig själv och öppna bilagan på din enhet.)
    2. Återskapa felet.
    3. Synkronisera med iTunes för att ta bort loggarna från din enhet.
    4. Bifoga loggarna till din felrapport. Du hittar inloggningarna ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.

    Dessa loggar kan växa sig stora mycket snabbt, så du bör ta bort profilen efter att du har återskapat problemet och dragit loggarna på din enhet.

  • Filnamn är skiftlägesokänsliga i Mac OS X men skiftlägeskänsliga i iOS. Detta kan leda till problem när du delar filer mellan de två med iCloud. Du bör vidta åtgärder på iOS för att undvika att skapa filer vars namn endast skiljer sig från fall till fall.

iTunes

  • Den version av iTunes som följer med GM-versionen kan inte synkronisera enheter som har beta 7-programvaran installerad. För att undvika detta problem, gör följande:
    1. Synkronisera alla enheter som har beta 7 installerat till den version av iTunes som följde med beta 7.
    2. Uppgradera iTunes till versionen som följer med GM-versionen.
    3. Anslut enheten och installera GM-programvaran. (Förstå att du kan se ett fel vid synkronisering när du ansluter enheten första gången.)
    4. När du har installerat GM-programvaran, återställ från din säkerhetskopia som du gjorde i steg 1.

Music Player

  • FAST: När du tar bort en låt eller video från musik/videor på enheten kraschar Music Player-appen.

Säkerhet

  • I iOS 5 stöds inte signering av certifikat med MD5-signaturer. Se till att certifikat använder signaturalgoritmer baserade på SHA1 eller SHA2.

Språng

  • Push- och lokala aviseringar för appar visas i det nya meddelandecentret i iOS 5. Aviseringscenter visar meddelanden som anses vara "olästa". För att tillgodose push- och lokala aviseringar som inte har någon oläst status, ställ in applikationens märkesantal till 0 för att ta bort appens aviseringar från meddelandecentret.

UI-automatisering

  • När du använder performTaskWithPathArgumentsTimeout metod av UIAHost i ett UI Automation-skript där API:et matar ut för mycket (t.ex. tusentals rader text) till standardout eller standardfel, kan uppgiften låsa sig tills timeouten uppnås, då den kommer att skapa ett JavaScript-undantag.
  • Smakämnen lock() och unlock() funktioner av UIATarget har ersatts med lockForDuration() funktion.
  • I iOS 5 kan du nu utlösa exekveringen av ett UI Automation-skript på en iOS-enhet från värdterminalen genom att använda instrumentverktyget. Kommandot är:
    • instruments -w <device id> -t <template> <application>
  • När du använder cli-instrumenten för UI-automatisering kan du nu rikta in dig på standardautomationsmallen och skicka skriptet och resultatsökvägen till verktyget som alternativ för miljövariabler. Till exempel:
    • instruments -w <device id> -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <application> -e UIASCRIPT <script> -e UIARESULTSPATH <results path>

UIKit

  • Rotationsåterrop i iOS 5 tillämpas inte för att visa kontroller som visas över en helskärm. Vad detta betyder är att om din kod presenterar en vykontroller över en annan vykontroller, och sedan användaren sedan roterar enheten till en annan orientering, kommer den underliggande kontrollenheten (dvs. presenterande kontrollenhet) inte att ta emot några rotationsåteruppringningar. Observera dock att den presenterande styrenheten kommer att få en viewWillLayoutSubviews ring när den visas igen, och interfaceOrientation egenskapen kan efterfrågas från denna metod och användas för att lägga ut styrenheten korrekt.
  • I iOS 5 är UIPickerView klass skickar inte sin pickerView:didSelectRow:inComponent: delegera meddelande som svar på det programmatiska valet av ett objekt.
  • Återvänder nil från tableView:viewForHeaderInSection: metod (eller dess sidfotsekvivalent) räcker inte längre för att dölja ett sidhuvud. Du måste åsidosätta tableView:heightForHeaderInSection: och återvänd0.0 för att dölja en rubrik.
  • I iOS 5 är UITableView klass har två metoder för att flytta en cell från en rad till en annan med definierade parametrar. Dessa API:er har:
  • Använda UIWebView klass i Interface Builder, är det möjligt att ställa in en transparent bakgrundsfärg i iOS 5. Utvecklare som kompilerar mot den nya SDK:n kan kontrollera sin XIB för UIWebView transparenta inställningar.
  • I iOS 5 är UINavigationBarUIToolbaroch UITabBar implementeringar har ändrats så att drawRect: metod anropas inte om den inte är implementerad i en underklass. Appar som har implementerats på nyttdrawRect: i en kategori på någon av dessa klasser kommer att finna att drawRect: metoden kallas inte. UIKit gör länkkontroll för att förhindra att metoden anropas i appar som är länkade före iOS 5 men stöder inte denna design på iOS 5 eller senare. Appar kan antingen:
    • Använd anpassnings-API:et för barer i iOS 5 och senare, vilket är det föredragna sättet.
    • Underklass UINavigationBar (eller de andra barklasserna) och åsidosätt drawRect: i underklassen.
  • Smakämnen indexPathForRow:inSection:sectionoch row metoder för NSIndexPath nu använda NSInteger istället för NSUInteger, så att dessa typer matchar med metoder definierade på UITableView.
  • Uppförandet av UITableView klass scrollToRowAtIndexPath:atScrollPosition:animated: metoden har ändrats. Om en rullningsposition på UITableViewScrollPositionTop orUITableViewScrollPositionBottom är specificerad, justerar metoden nu för de övre och nedre delarna av contentInset fast egendom.
  • I utgåvor före iOS 5, UIPopoverController klass skulle ovillkorligen ställa in autostorleksmaskerna för visningskontroller som tillhandahåller innehållet för popover-kontrollern. Det skulle också ovillkorligen ställa in autostorleksmaskerna för vyerna för visningskontroller som trycks på till en UINavigationController objekt som var kontrollenheten för innehållsvyn för popover-kontrollern UIPopoverController class gör inte längre detta för applikationer länkade mot iOS 5 eller senare. Utvecklare bör se till att maskerna för automatisk storleksändring av vyer är korrekt inställda för att tillåta godtyckliga storleksändringar inom vilken behållare som helst, inte bara popovers. En mask av (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) är rimligt.
  • Kompletteringshanteraren för saveToURL:forSaveOperation:completionHandler: anropas utanför det koordinerade skrivblocket.
  • Smakämnen autosaveWithCompletionHandler: metod kallas nu bara för periodbaserat sparande när det är säkert att återvända utan att spara. Dokument måste dock sparas omsaveToURL:forSaveOperation:completionHandler: metoden åberopas.

Safari och WebKit

  • I iOS 5, en ny ärvd CSS-egenskap, -webkit-overflow-scrolling, är tillgänglig. Värdet touch gör det möjligt för webbutvecklaren att välja att rulla i inbyggd stil i en overflow:scroll element. Standardvärdet för den här egenskapen är auto, som tillåter rullning med ett finger utan fart.
  • WebKit-ramverket har uppdaterats till en version som nära matchar motorn som används av Safari 5.1 på skrivbordet. Det finns några områden att vara medveten om med det nya WebKit-ramverket på iOS 5. Specifikt för webbplatser och inbyggda appar som använder UIWebView:
    • Det finns en ny HTML5-kompatibel parser.
    • Textlayoutens bredd kan ändras något eftersom ordavrundningsbeteendet nu har flyttalsbaserad precision.
    • Det finns förbättrad validering av <input type=number> formulärfält, vilket inkluderar att ta bort inledande nollor och sifferformatering.
    • Touch-händelser stöds nu i inmatningsfält.
    • <input type=range> stöds nu.
    • window.onerror stöds nu.
    • Det finns en ny användaragent som inte har lokalinformation i User Agent-strängen.
    • Webbadresser kanoniseras nu genom att göra schemat endast med små bokstäver. Om en falsk URL används för att skicka information från en UIWebView tillbaka till ursprunglig kod, se till att schemat alltid är gemener, eller att den ursprungliga koden jämför schemat på ett skiftlägesokänsligt sätt.

Wi-Fi-synkronisering

  • Stöd för trådlös synkronisering kräver Mac OS X 10.6.8 eller Lion. Du kommer att se ett alternativ för att aktivera trådlös synkronisering när du ansluter din enhet till iTunes med USB-kabeln. Det rekommenderas att du utför din första synkronisering med en kabel efter att du har återställt enheten.
    • Trådlös synkronisering utlöses automatiskt när enheten är ansluten till ström och på samma nätverk som den ihopparade datorn. Eller så kan du manuellt utlösa en synkronisering från iTunes eller från Inställningar > Allmänt > iTunes Sync (samma nätverk som en parad dator krävs).
    • Om du hittar problem med appar, media och/eller foton som synkroniseras till din enhet kan du återställa och sedan synkronisera om. Från Inställningar > Allmänt > Återställ, välj Radera allt innehåll och inställningar. Anslut sedan till iTunes igen och synkronisera igen.

Xcode-verktyg

För information om ändringar av Xcode, Interface Builder, Instruments och iOS Simulator, se Xcode Release Notes.