Journal des modifications d'iOS 7 bêta 6

  Le lancement "surprise" a iOS bêta 7 6 par Apple est principalement lié à la résolution de problèmes système iTunes dans le nuage, le reste des changements étant mineurs et affectant divers mécanismes du système d'exploitation. Il s'agit du changelog le plus court publié par Apple pour toute version bêta de son système d'exploitation, alors ne vous attendez pas à beaucoup de nouvelles.

Introduction

iOS SDK 7.0 prend en charge le développement d'applications iOS et comprend l'ensemble complet d'outils, de compilateurs et de frameworks Xcode pour créer des applications pour iOS et OS X. Ces outils incluent l'IDE Xcode et l'outil d'analyse Instruments, entre autres.

Avec ce logiciel, vous pouvez développer des applications pour iPhone, iPad ou iPod touch exécutant iOS 7. Vous pouvez également tester vos applications à l'aide du simulateur iOS inclus, qui prend en charge iOS 7. iOS SDK 7.0 nécessite un ordinateur Mac exécutant OS X v10.8.4 ( Mountain Lion) ou plus tard.

Cette version d'iOS est destinée à être installée uniquement sur les appareils enregistrés auprès du programme pour développeurs Apple. Tenter d'installer cette version d'iOS de manière non autorisée pourrait rendre votre appareil inutilisable.

Pour plus d’informations et des ressources d’assistance supplémentaires, visitez http://developer.apple.com/programs/ios/.

Rapport de bogue

Pour signaler tout bug non mentionné dans le Remarques et problèmes connus , utilisez Apple Bug Reporter sur le site Web des développeurs Apple (http://developer.apple.com/bugreporter/). De plus, vous pouvez discuter de ces problèmes et du SDK iOS 7.0 dans les forums des développeurs Apple :http://devforums.apple.com. Pour obtenir plus d'informations sur iCloud pour les développeurs, accédez à http://developer.apple.com/icloud.

Informations importantes sur les bibliothèques musicales et vidéo

Cette mise à jour résout un problème avec iTunes dans le Cloud, où certains achats peuvent télécharger ou lire des éléments inattendus. Si vous possédez des appareils exécutant des versions précédentes d’iOS 7 bêta, vous devez :

  1. Installez iOS 7 bêta 6.
  2. Installez le profil de configuration ResetMusicAndVideosLibraries à partir du centre de développement iOS.
  3. Dans Paramètres > Musique, appuyez sur le bouton Réinitialiser la bibliothèque multimédia.
  4. Redémarrez l'appareil.

Remarques et problèmes connus

Les problèmes suivants concernent l’utilisation du SDK iOS 7.0 pour développer du code.

carnet d'adresses

Notes

  • Les cours dans le AddressBookUI Le framework interdit désormais explicitement le sous-classement. Pour les applications liées au SDK iOS 7, la tentative d'initialisation d'une sous-classe de l'une de ces classes renvoie zéro. Pour les applications liées à des SDK plus anciens, le seul changement de comportement est un avertissement enregistré dans la console.
  • À partir de Seed 4, la prise en charge de la confidentialité pour le AddressBookUI Le framework est réactivé pour les applications liées au SDK iOS 7. Les applications liées à des SDK plus anciens ne sont pas modifiées. Si votre application utilise l’un des contrôleurs d’affichage du Carnet d’adresses, vous devez vérifier qu’elle se comporte toujours comme prévu.

parachutage

Notes

  • AirDrop dans iOS 7 Seed 2 ou version ultérieure n'est pas compatible avec AirDrop dans iOS 7 Seed 1.
  • La prise en charge des contacts uniquement nécessite que :
    • Vous êtes connecté à iCloud.
    • L'expéditeur et le destinataire disposent des adresses e-mail d'identification Apple de l'autre dans les contacts de leurs appareils.

Fondation AV

Notes

AVCaptureSession utilise désormais celui de votre application AVAudioSession par défaut.

Animation de base

Notes

When the UIViewGroupOpacity La clé n'est pas présente, la valeur par défaut est maintenant OUI. La valeur par défaut était auparavant NON.

Cela signifie que les sous-vues d'une vue transparente seront d'abord composées sur cette vue transparente, puis le sous-arbre précomposé sera dessiné dans son ensemble sur l'arrière-plan. Un paramètre NON entraîne une composition moins coûteuse, mais aussi moins précise : chaque vue dans le sous-arbre transparent est composée sur ce qui se trouve en dessous, en fonction de l'opacité du parent, dans l'ordre normal de l'algorithme de peinture.

Échange

Notes

Dans Seed 4 et versions ultérieures, Exchange DeviceIdentifier a été modifié pour revenir au comportement d'iOS 6 où il utilise le numéro de série.

Polices

Notes

De nouvelles hauteurs de ligne de police ont été introduites dans Seed 4. Si vous aviez aligné manuellement votre police dans les graines précédentes, elle peut se déplacer légèrement vers le haut dans les graines ultérieures.

Fondation

Notes

  • An NSMetadataQuery avec une portée omniprésente peut désormais utiliser kMDItemContentTypeTree dans les prédicats. Par exemple:
    • NSPredicate *p = [NSComparisonPredicate predicateWithLeftExpression:[NSExpression expressionForKeyPath:@"kMDItemContentTypeTree"] rightExpression:[NSExpression expressionForConstantValue:@"public.rtf"] modificateur: NSAnyPredicateModifier type:NSLikePredicateOperatorType options:0];
  • Lorsqu'on appelle les résultats renvoyés par des requêtes avec des portées omniprésentes, -[NSMetadataItem valueForAttribute:NSMetadataItemDisplayNameKey] produit maintenant la même valeur que -[NSURL getResourceValue: forKey: NSURLLocalizedNameKey], correspondant à des requêtes non omniprésentes.

iCloud

Notes

  • Si vous utilisez le trousseau iCloud avec récupération, une boîte de dialogue indiquant que la récupération a été désactivée en raison d'un changement de serveur peut s'afficher. C'est intentionnel. Pour réactiver la fonctionnalité, suivez les instructions de la notification. Si vous voyez plusieurs alertes ou observez des problèmes avec la réactivation de la récupération, veuillez déposer un rapport de bogue.
  • Le trousseau iCloud dans iOS 7 Seed 3 ou version ultérieure n'est pas rétrocompatible avec iOS 7 Seed 2 ou OS X Mavericks Seed 2.

    Si vous avez activé iCloud Keychain et/ou Keychain Restore à partir d'iOS 7 Seed 2, les deux fonctionnalités sont désactivées lors de la mise à jour vers iOS 7 Seed 3 ou version ultérieure.

    Après la mise à jour vers iOS 7 Seed 3 ou version ultérieure, accédez à Paramètres > iCloud > Trousseau et réactivez le trousseau iCloud sur vos appareils.

    Consultez les notes de version d'OS X v10.9 pour plus de détails.

  • Le verrouillage d'activation, une nouvelle fonctionnalité de Find My iPhone, est activé automatiquement lorsque Find My iPhone est activé sur n'importe quel appareil exécutant iOS 7. Le verrouillage d'activation nécessite que les utilisateurs saisissent leur identifiant Apple et leur mot de passe pour désactiver Find My iPhone, se déconnecter d'iCloud , effacez l'appareil ou réactivez l'appareil après un effacement. Il est important d'effectuer l'une des opérations suivantes avant de transférer un appareil à un nouvel utilisateur :
    • Déconnectez-vous d'iCloud.
    • Désactivez le verrouillage d'activation dans Paramètres > iCloud > Localiser mon iPhone.

Problèmes connus

Les champs de mot de passe ne sont pas affichés dans les vues d'alerte pour les applications en mode paysage (par exemple, authentification Game Center ou achat intégré). La saisie de texte fonctionne toujours, même si vous ne pouvez pas voir ce que vous tapez.

MAPK

Notes

Si les appels à renderInContext sur la couche supportant un MKMapView sont créés à partir du thread principal, ils doivent être éliminés ou déplacés vers le thread principal. Ne pas le faire peut provoquer un crash de l'application. À la place d'utiliser renderInContext, utilisez le nouveau MKMapSnapshotter Apis.

Médias

Notes

iOS se souvient désormais de la dernière application multimédia utilisée lors des redémarrages et des pannes d'application. Les applications multimédias pouvant recevoir des événements de contrôle à distance doivent être prêtes à être lancées en arrière-plan et potentiellement recevoir un événement de contrôle à distance pour commencer la lecture. De plus, il est important que les applications multimédias surveillent et gèrent l'événement de réinitialisation du serveur multimédia, car l'application multimédia peut recevoir une demande à distance pour reprendre la lecture après une réinitialisation. Les notifications pour surveiller ces événements de serveur multimédia sont disponibles dans AVAudioSession et une manipulation appropriée est décrite dans Recommandations générales pour la gestion de kAudioSessionProperty_ServerDied.

Connectivité multipair

Notes

La MCSession Les API fonctionnent telles qu'elles ont été présentées à la WWDC. Les principaux changements et améliorations comprennent :

  • La nouvelle méthode suivante sur MCSession a été mis en place:
    • - (NSOutputStream *)startStreamWithName:(NSString *)streamName toPeer:(MCPeerID *)erreur peerID :(NSError **)erreur

    Cette méthode déléguée a été implémentée :

    • - (void)session :(MCSession *)session didReceiveStream :(NSInputStream *)stream withName :(NSString *)streamName fromPeer :(MCPeerID *)peerID
  • La nouvelle méthode suivante sur MCSession a été mis en place:
    • - (NSProgress *)sendResourceAtURL:(NSURL *)resourceURL withName:(NSString *)resourceName toPeer:(MCPeerID *)peerID withCompletionHandler:(void(^)(NSError *error))completionHandler

    La méthode déléguée pour commencer à recevoir une ressource d'un pair distant a été implémentée comme :

    • - (void)session :(MCSession *)session didStartReceiveResourceWithName :(NSString *)resourceName fromPeer :(MCPeerID *)peerID withProgress :(NSProgress *)progress

    La méthode déléguée pour terminer la réception d'une ressource d'un pair distant et enregistrer le contenu dans un emplacement temporaire est implémentée comme :

    • - (void)session :(MCSession *)session didFinishReceiveResourceWithName :(NSString *)resourceName fromPeer :(MCPeerID *)peerID atURL :(NSURL *)localURL withError :(NSError *)error

  • MCAdvertiserAssistant est une classe pratique pour implémenter un annonceur, qui gère les invitations et les connexions à un MCSession.
  • MCSession a un nouveau initWithPeer: méthode.
  • sendResource a ajouté "avec" au completionHandler.
  • Le délai d'attente a été supprimé de connectPeer:withNearbyConnectionData.

Pour plus d'informations sur ces API, regardez la vidéo de la WWDC 2013 Session 708, "Nearby Networking with Multipeer Connectivity".

Le multitâche

Notes

  • AVAudioSession ne peut plus être actif par les applications en arrière-plan qui se réveillent en raison d'événements de récupération en arrière-plan, de transferts en arrière-plan et de notification à distance.
  • La stratégie de l'API d'achèvement des tâches a été modifiée pour correspondre au comportement d'iOS 6, mais le délai d'exécution des tâches a diminué de 10 minutes dans iOS 6.

Réseautage

Notes

  • La technologie de secours cellulaire présente dans les graines précédentes a été supprimée à partir de la graine 5.
  • Deux API réseau de bas niveau qui renvoyaient une adresse MAC renvoient désormais la valeur fixe 02:00:00:00:00:00. Les API en question ont sysctl (NET_RT_IFLIST) ainsi que  ioctl (SIOCGIFCONF). Les développeurs utilisant la valeur de l'adresse MAC doivent migrer vers des identifiants tels que -[UIDevice identifierForVendor]. Ce changement affecte toutes les applications exécutées sur iOS 7.

Exécution Objective-C

Notes

En raison de changements dans la façon dont isa le champ est implémenté, *self peut changer au cours de l'énumération (par exemple, si le conteneur est conservé).

Solution de contournement : lors de la mise en œuvre countByEnumeratingWithState, Ne pas fixer state->mutationsPtr = self.

livret bancaire

Notes

  • Depuis iOS 7 Seed 4, Passbook a ajouté la prise en charge des champs majeurs et mineurs pour mieux correspondre au reste de l'écosystème iBeacon. Le nouveau major ainsi que  minor les touches sont indépendamment variables en option à côté proximityUUID (obligatoire) dans chaque dictionnaire du beacons Tableau.
  • Dans les versions précédentes du SDK iOS, Passbook ne validait pas complètement les champs arrière des passes. Les règles de validation n'ont pas changé, mais la validation inclut désormais les champs arrière. Veuillez vérifier le journal de la console pour des journaux supplémentaires.
  • Depuis iOS 7 Seed 3, PKPassLibraryDidCancelAddPasses est un nouveau code d'état dans le PKPassLibraryAddPassesStatus énumération. Cela signifie que l'utilisateur a appuyé sur Annuler dans une alerte d'ajout de passes.

Photos

Notes

Lors de la mise à niveau à partir d'une version antérieure, les miniatures des photos dans l'application Photos n'apparaîtront pas pendant un court instant.

Sécurité

Notes

  • -[UIDevice uniqueIdentifier] n'est plus accepté dans les soumissions sur l'App Store. Dans iOS 7, les applications déjà présentes sur le Store ou sur les appareils des utilisateurs qui appellent cette API supprimée ne recevront plus l'UDID. Plutôt, -[UIDevice uniqueIdentifier] renverra une chaîne de 40 caractères commençant par FFFFFFFF, suivi de la valeur hexadécimale de -[UIDevice identifierForVendor]. Il est important de considérer comment cela affectera les applications existantes. J'envisage de soumettre des mises à jour qui n'accèdent plus à l'UDID.
  • iOS demande désormais le consentement de l'utilisateur pour que les applications utilisent l'entrée audio sur tous les appareils iOS 7. Pour les appareils vendus en Chine, iOS demandera également le consentement de l'utilisateur pour que les applications utilisent le matériel de l'appareil photo. Le système d'exploitation présentera l'alerte de consentement lorsque vous définirez la catégorie du fichier instancié.AVAudioSessionL’ AVAudioSession les catégories qui présenteront l'alerte sont AVAudioSessionCategoryRecord ainsi que  AVAudioSessionCategoryPlayAndRecord.

    Si l'utilisateur n'autorise pas l'accès, les données de la session audio ne seront que des zéros (silence). Pour les appareils où l'accès à la caméra est demandé et refusé par l'utilisateur, la session de capture vidéo est un écran noir.

  • L'API gethostuuid() a été supprimé et ne sera pas accepté pour soumission au magasin, quel que soit le système d'exploitation ciblé. Pour les applications existantes exécutées sur iOS 7, la fonction renverra une représentation uuid_t de l'identifiant du fournisseur (-[UIDevice identifierForVendor]).

Siri

Notes

Cette graine comprend des versions de développement de nouvelles voix masculines et féminines Siri pour l'anglais américain, le français et l'allemand.

Réseaux sociaux

Notes

  • Via iOS 6, lors de l'utilisation TWTweetComposeViewController ainsi que  SLComposeViewController (ce dernier uniquement pour Twitter et Weibo, mais pas pour Facebook), si l'appelant fournit un completionHandler, le fourni completionHandler est responsable du rejet du contrôleur de vue. À partir d'iOS 7, si l'application est liée au SDK iOS 7, le contrôleur de vue se fermera même si l'appelant fournit un completionHandler. Pour éviter cela, l'appelant completionHandler ne devrait pas rejeter le contrôleur de vue.
  • Lorsque vous utilisez le SDK iOS 6.1 sur OS X v10.8 Mountain Lion, si vous utilisez le SDK iOS 5.0 ou iOS 5.1 Legacy dans iOS Simulator, vous ne pourrez pas utiliser les fonctionnalités de Twitter : tentative de connexion à Twitter via le volet Paramètres échouera, et Twitter.framework ne fonctionnera pas correctement. Si vous devez tester les fonctionnalités de Twitter, vous devrez choisir une destination d'exécution du simulateur iOS 6.1 ou iOS 6.0, ou vous pouvez tester avec iOS 5.x sur un appareil.

Tremplin

Notes

  • Les touches actives ne sont plus annulées lorsque l'utilisateur prend une capture d'écran.
  • Le fond d’écran dynamique n’est pas disponible sur iPhone 4.

Kit de sprites

Notes

+[AVPlayer playerWithPlayerItem:] renvoie un AVPlayer objet, mais l'élément actuel retournera nul si le joueur a été créé sur un autre thread.

Magasins

Problèmes connus

Les téléchargements d'applications peuvent rester bloqués à l'état « En attente ».

Solution de contournement : redémarrez votre appareil une ou deux fois pour résoudre le problème et permettre la poursuite des téléchargements ultérieurs.

Uikit

Notes

  • Avant Seed 4, l'API d'instantané (snapshotView ainsi que  resizableSnapshotViewFromRect:withCapInsets:) différerait la prise de l'instantané si la vue n'avait jamais été validée ou avait été ajoutée à la hiérarchie des vues dans la transaction en cours. Ce comportement a changé.

    Les instantanés représentent désormais toujours l'état actuel et validé de la vue. La tentative d'instantané d'une vue qui n'a jamais été validée enregistre un message et renvoie maintenant nil.

  • Les méthodes de capture instantanée ont été mises à jour et prennent désormais un argument : afterUpdates. Lorsqu'il est défini sur OUI, cela demande à l'instantané d'attendre que toutes les modifications en attente dans la hiérarchie aient été validées. Pour conserver le comportement pré-Seed 4, passez NON et l'instantané capturera ce qui est actuellement à l'écran. EEE UIView.h pour plus de détails.
  • Lorsqu'il n'y a pas assez de place dans la disposition de la barre de navigation pour le texte intégral du titre du bouton de retour, la barre de navigation remplacera un court titre de retour générique (en anglais, "Back"). Si même cette chaîne est trop longue, la barre affichera le chevron de l'indicateur arrière sans titre.
  • +[UIPasteboard pasteboardWithName:create:] ainsi que  +[UIPasteboard pasteboardWithUniqueName] désormais unique le nom donné pour permettre uniquement aux applications du même groupe d'applications d'accéder au presse-papiers. Si le développeur tente de créer un presse-papiers avec un nom qui existe déjà et qu'il ne fait pas partie de la même suite d'applications, il obtiendra son propre presse-papiers unique et privé. Notez que cela n’affecte pas les planches de montage, générales et de recherche fournies par le système.
  • À partir de Seed 2, les applications utilisent par défaut le nouveau système de gestion de la barre d'état basé sur le contrôleur de vue. Pour vous désinscrire, ajoutez la valeur NON pour le UIViewControllerBasedStatusBarAppearance clé de votre Info.plist.
  • Lorsque vous utilisez la mise en page automatique pour positionner un UIButton, si vous définissez la résistance à la compression du contenu ou la priorité de maintien du contenu au minimum, le bouton aura une disposition ambiguë.

    Solution de contournement : n'utilisez pas une résistance à la compression de contenu ou une priorité d'hébergement de contenu inférieure à 2 pour UIButton.

  • UIScreenEdgePanGestureRecognizer vous permet d'effectuer des actions en réponse à des glissements sur le bord de l'écran en utilisant la même heuristique que celle que le système utilise pour ses propres gestes. Utilisez-le si vous disposez de votre propre navigation sémantique qui n'utilise pas UINavigationControllermais devrait inclure ce geste (par exemple, Safari).

    Ce dispositif de reconnaissance de gestes possède une propriété qui décrit les bords sur lesquels il est actif. UIRectEdge est un nouveau type d'énumération que cette propriété et -[UIViewController edgesForExtendedLayout] peut partager. UIRectEdge remplace UIExtendedEdge, qui sera supprimé. Les membres des deux ont les mêmes valeurs. Utilisez Xcode pour remplacer toutes les instances de « UIExtendedEdge » dans votre projet par « UIRectEdge ».

  • UIButtonTypeInfoLightUIButtonTypeInfoDarket UIButtonTypeDetailDisclosure les boutons se ressemblent tous.
  • Les calques flous ne sont pas disponibles sur iPhone 4.
  • La parallaxe n'est pas disponible sur iPhone 4.
  • Le texte typographique n’est pas disponible sur iPhone 4.

Problèmes connus

Les champs de mot de passe ne sont pas affichés dans les vues d'alerte pour les applications en mode paysage (par exemple, authentification Game Center ou achat intégré). La saisie de texte fonctionne toujours, même si vous ne pouvez pas voir ce que vous tapez.

Météo

Notes

Les conditions météorologiques ne sont pas animées sur l'iPhone 4.

WebKit

Notes

  • Auparavant, lorsque les paramètres de la fenêtre étaient modifiés, les anciens paramètres n'étaient jamais supprimés. Cela a entraîné l'addition des paramètres de la fenêtre.

    Par exemple, si vous avez commencé avec width=device-width et que vous l'avez ensuite modifié en initial-scale=1.0, vous vous êtes retrouvé avec une fenêtre calculée de width=device-width, initial-scale=1.0.

    Dans iOS 7, ce problème a été résolu. Vous vous retrouvez maintenant avec une fenêtre calculée de initial-scale=1.0.

  • Auparavant, lors de l'utilisation , l'échelle pourrait être incorrecte après la rotation.

    Désormais, si un utilisateur n'a pas redimensionné explicitement la page, la page est restaurée à son échelle initiale. De plus, l'échelle actuelle est désormais correctement restreinte au sein de la min-scalemax-scale bornes.

  • Certaines images des appareils à écran Retina apparaissent deux fois plus grandes qu'elles ne le devraient au lieu d'être réduites de 50 %. Ce problème peut également survenir avec toute image à mettre à l'échelle qui est plus grande que son conteneur et qui utilise soit le background-size propriété ou le -webkit-background-sizepropriété. Ce problème affecte à la fois les applications natives qui affichent du contenu Web et les pages Web consultées dans Safari pour iPhone.

    La background La propriété CSS raccourcie réinitialise désormais la valeur du background-size propriété à auto lorsque la taille de l'arrière-plan n'est pas spécifiée. Ce nouveau comportement est conforme à la spécification CSS et l'ancien comportement n'est disponible que pour les applications liées à un SDK antérieur à iOS 7.0 lorsqu'elles sont exécutées sur iOS 7 ou version ultérieure.

    Solution de contournement : spécifiez le background-size propriété ou le -webkit-background-size propriété après la background propriété raccourcie dans la feuille de style CSS pour le contenu Web affiché.

  • Les applications Web et les clips Web créés avant Seed 4 ne resteront pas dans les dossiers lors du redémarrage.

    Solution de contournement : supprimez l'ancienne application Web ou le clip Web et recréez-le dans cette graine en chargeant le contenu dans Safari, en appuyant sur le bouton Action, puis sur "Ajouter à l'écran d'accueil".

Wi-Fi

Notes

Seed 4 et versions ultérieures incluent des modifications apportées à AWDL, de sorte que les technologies qui l'utilisent, telles que AirDrop et les API MultiPeerConnectivity, ne fonctionneront pas correctement avec les anciennes graines.