Apple выпускает OTA-обновление iOS 6.0 Beta 2 для разработчиков (Обновление: видео с вращающимися шестеренками и список изменений)

Пока недоступное на сайте для разработчиков Apple, разработчики сообщают нам, что обновление размером 299 МБ для iPhone 4S / 322 МБ для iPhone 4 доступно для iOS 6 через OTA-обновление.

«ВАУ, когда вы скачиваете и устанавливаете 6.0 Beta 2 OTA, значок настроек анимируется!»

[youtube=http://www.youtube.com/watch?v=OuaDOtjil30]

Apple также обновила Xcode 4.5 developer preview 2, Apple TV beta 2.

Мы поищем интересные изменения, но не стесняйтесь сообщать нам (tips@9to5mac.com), если вы найдете что-то интересное.

Обновление: OTA получило более официальный скриншот, и список изменений был опубликован в центре для разработчиков (ниже):

[tweet https://twitter.com/markgurman/status/217312366608646146]

.

Заметки и известные проблемы

Следующие проблемы связаны с использованием iOS SDK 6.0 для разработки кода.

Адресная книга

  • Когда приложение находится в новом состоянии конфиденциальности и пытается представить ABNewPersonViewController, пользователь не может должным образом закрыть этот контроллер представления, даже если он разрешает доступ к контактам. Пользователю приходится принудительно завершать работу приложения и перезапускать его.

Apple TV

  • В некоторых случаях на экране может отображаться неправильное разрешение. Перезапустите Apple TV, чтобы вернуть правильное разрешение.
  • Видео Netflix могут не возобновляться с того места, где вы остановились.
  • ИСПРАВЛЕНО: Некоторые видео могут не возобновляться после перемотки вперед или назад. Нажмите кнопку «Меню» на пульте дистанционного управления, чтобы выйти и воспроизвести видео снова.
  • ИСПРАВЛЕНО: Кнопка «Воспроизвести/Пауза» может не ставить на паузу музыку, которая играет в фоновом режиме. Перейдите на экран «Сейчас играет», чтобы поставить музыку на паузу.
  • Список истории в приложении YouTube очищается при выходе и повторном входе в приложение.
  • Apple TV может медленно реагировать во время загрузки в фоновом режиме.
  • Apple TV может перезагружаться при использовании приложения Remote.

Bonjour

  • Класс NSNetService и API CFNetService по умолчанию не включают P2P-интерфейсы. Для просмотра, регистрации или разрешения служб через P2P-интерфейсы приложение должно использовать API Bonjour DNSService*(), указанные ниже.
  • Установка параметра interfaceIndex в значение kDNSServiceInterfaceIndexAny в следующих API по умолчанию не включает P2P-интерфейсы. Чтобы включить P2P-интерфейсы, теперь необходимо установить флаг kDNSServiceFlagsIncludeP2P при использовании kDNSServiceInterfaceIndexAny или установить interfaceIndex в kDNSServiceInterfaceIndexP2P. Затронутые API:
    • DNSServiceBrowse
    • DNSServiceRegister
    • DNSServiceResolve
    • DNSServiceRegisterRecord
    • DNSServiceQueryRecord

Game Center

  • ИСПРАВЛЕНО: Одноранговое соединение не будет работать при определенных сетевых условиях, включая устройства, находящиеся за пределами двойных NAT-топологий, подключенные между сетями AT&T и Verizon, или подключенные через международного оператора.
  • ИСПРАВЛЕНО: Пользовательский интерфейс запросов в друзья Game Center может зависать до 10 секунд и становиться неотзывчивым. Выход из приложения и повторный запуск решат эту проблему.
  • ИСПРАВЛЕНО: Просмотр приглашений в игры или пользовательского интерфейса автоматических матчей в вашем приложении может привести к его сбою, если оно не находится в песочнице Game Center. Игры, использующие песочницу, не будут затронуты.
  • ИСПРАВЛЕНО: Тайм-ауты ходов в пошаговых играх будут составлять 1/1000 от указанного при вызове метода endTurnWithNextParticipants:turnTimeout:matchData:completionHandler: класса GKTurnBasedMatch. Это будет исправлено в следующем выпуске.
  • ИСПРАВЛЕНО: При запуске приложений с поддержкой Game Center в iOS Simulator разработчики, входящие в Game Center, взаимодействуют с реальным производственным сервером и данными.
    • Чтобы обойти эту проблему, разработчики, работающие над новыми проектами, а также над проектами, требующими метаданных iTunesConnect, должны работать на реальных устройствах, а не на симуляторе. Разработчики, которые уже опубликовали приложения в App Store и хотят разрабатывать с использованием симулятора, могут использовать новые функции iOS 6; однако они должны осознавать, что взаимодействуют с реальными игроками, рекордами и достижениями.
  • При создании новой учетной записи Game Center внутри приложения на iPad появляется всплывающее окно для выбора месяца даты рождения без возможности выбора.
  • Метод authenticate класса GKLocalPlayer был удален. Аутентификация начнется автоматически при установке обработчика завершения.

iCloud

  • При создании учетной записи iCloud вы можете использовать любой Apple ID, если он является полным адресом электронной почты, а не учетной записью MobileMe. Если у вас есть учетная запись MobileMe, вы должны перенести эту учетную запись в iCloud. Хотя MobileMe будет доступен до 30 июня 2012 года, вход в систему с учетной записью MobileMe не поддерживается в iOS 6. Дополнительную информацию можно найти по адресу: http://me.com/move
  • Профили подготовки должны быть включены для iCloud на портале подготовки iOS. Чтобы включить профиль подготовки для iCloud, перейдите в раздел App ID на портале подготовки iOS и настройте свой App ID для iCloud. После включения App ID для iCloud перегенерируйте свои профили подготовки, чтобы включить их для iCloud.
  • Метод setSortDescriptors: класса NSMetadataQuery не поддерживается.
  • В iOS 6 файлы, защищенные Data Protection, не могут использоваться с API iCloud Storage.
  • Имена файлов не чувствительны к регистру в OS X, но чувствительны к регистру в iOS. Это может привести к проблемам при обмене файлами между двумя платформами с использованием iCloud. Вам следует предпринять шаги в iOS, чтобы избежать создания файлов, имена которых отличаются только регистром.
  • ИСПРАВЛЕНО: Ассистент настройки вылетит, если новая учетная запись будет создана во время первоначальной настройки. Учетная запись будет фактически создана, и пользователь сможет войти и использовать ее впоследствии. Сбой не происходит с существующими учетными записями.

iMessage & FaceTime

  • Кнопки «Ответить» и «Отклонить» отсутствуют при получении вызовов в ландшафтной ориентации.
  • ИСПРАВЛЕНО: Если вы выполните стирание и восстановление вашего устройства, вам нужно будет перезагрузить устройство, чтобы отправлять вложения через iMessage.
  • ИСПРАВЛЕНО: Если вы измените пароль для iMessage или FaceTime, вам нужно будет отключить и снова включить эти службы в настройках.
    • Для iMessage переключите переключатель Настройки > Сообщения > iMessage.
    • Для FaceTime переключите переключатель Настройки > FaceTime > FaceTime.

IOKit

  • ИСПРАВЛЕНО: SpringBoard/BackBoard может аварийно завершить работу во время телефонного звонка, если экран гаснет при использовании громкой связи или наушников.

iTunes

  • Для iOS SDK 6.0 требуется iTunes 10.6.3.
  • ИСПРАВЛЕНО: Синхронизация по Wi-Fi с iOS 6 и iTunes 10.6.3 не работает, когда устройство заблокировано и не подключено к питанию. Иногда она может не работать, даже если подключено к питанию. В этом случае перезагрузка устройства может решить проблему.
  • При восстановлении из резервной копии iTunes устройство периодически отображается как новое устройство после перезагрузки. Если это произойдет, настройте устройство как «новое устройство» при предложении восстановить во второй раз. Все данные должны быть успешно восстановлены, но настройки синхронизации, включая расположение приложений в iTunes, будут потеряны.

Карты

  • В iOS 6 и более поздних версиях Map Kit построен на новой инфраструктуре, размещенной Apple. Более ранние версии iOS продолжат использовать службу Google.
    • Совместимость API будет сохранена (см. известные проблемы ниже).
    • Карты теперь поддерживаются в Симуляторе.
    • Картографические данные будут продолжать развиваться — в настоящее время доступно только ограниченное количество изображений со спутника высокого разрешения.
  • Если Карты не работают в фоновом режиме, при запуске из стороннего приложения отображается ошибка «Карты не могут подключиться к Интернету».
  • Если Карты еще не были запущены, текущее местоположение не отображается при запуске из стороннего приложения.
  • Приложения для построения маршрутов, которые не указывают файл покрытия во время разработки, всегда будут отображаться в результатах поиска маршрутов Карт.
  • Тестирование и отладка файлов покрытия для приложений построения маршрутов поддерживаются только во время разработки через рабочий процесс «Выполнить» Xcode. (Вы можете указать файл покрытия для заданной схемы выполнения, используя панель «Параметры» раздела «Выполнить» редактора схем.) Приложения, которые архивируются и распространяются (вне App Store) на устройства, не будут иметь доступа к файлам покрытия приложения.
  • Карты не масштабируются до текущего местоположения при запуске из стороннего приложения.

Movie Player

  • ИСПРАВЛЕНО: После восстановления видео из резервной копии iCloud миниатюры всех видео отображают одно и то же изображение обложки (полученное из одного из заголовков в списке), а не свои собственные изображения обложек.

Напоминания

  • Есть проблемы с добавлением и редактированием напоминаний в приложении «Напоминания» на устройствах iPhone:
    • Кнопка «Готово» отсутствует при добавлении нового напоминания.
    • Приложение вылетает при нажатии кнопки «Редактировать» для редактирования напоминания.

Безопасность

  • В iOS 5 подписание сертификата с использованием подписи MD5 не поддерживается. Убедитесь, что сертификаты используют алгоритмы подписи на основе SHA1 или SHA2.
  • В iOS 6 система теперь защищает календари, напоминания, контакты и фотографии в рамках инициативы Apple по обеспечению конфиденциальности данных.
    • Пользователи будут видеть диалоговые окна доступа, когда приложение пытается получить доступ к любому из этих типов данных. Пользователь может включать и выключать доступ в Настройки > Конфиденциальность.
    • Разработчики могут установить строку «цель» для каждого класса изолированных данных. iOS отображает эту строку пользователям, чтобы помочь им понять, почему запрашиваются их данные. Эти строки можно добавить с помощью редактора проекта Xcode на вкладке «Информация». Соответствующие имена ключей начинаются со строки «Privacy -».
    • Внесены изменения во фреймворки Event Kit и Address Book, чтобы помочь разработчикам с этой функцией.

Симулятор

  • ИСПРАВЛЕНО: Кнопка «Назад» для контроллеров навигации в Retina iOS-симуляторах отображается некорректно.
  • Панель подтверждения удаления приложения появляется с задержкой в iOS Simulator.
  • Нажатие кнопки «Купить» в представлении объекта SKStoreProductViewController в iOS Simulator приводит к сбою приложения.
  • В iOS Simulator не отображаются оповещения о конфиденциальности для приложений, которые получают доступ к фотографиям, контактам, календарю и напоминаниям.
  • Загрузка контента для покупок внутри приложений в iOS Simulator не поддерживается.
  • При попытке воспроизвести звук MP3 в Симуляторе вы услышите щелчок вместо звука.
  • Использование SDK iOS 5.1 с профилем iPad (Retina) приведет к сбою SpringBoard. SDK iOS 5.1 работает со всеми другими профилями, а SDK iPad (Retina) работает с SDK iOS 6.0.
  • Реклама типа ADAdTypeMediumRectangle не отображается в iPad Simulator.

Общий фотопоток

  • Пользователь должен перейти в Настройки > iCloud, чтобы убедиться, что он получает уведомления Общего фотопотока.
  • Чтобы поделиться фотопотоком с бета-версией iOS 6, вы должны пригласить кого-то, используя его адрес электронной почты iCloud, иначе он не получит приглашение.
  • Обновление с iOS 6 beta 1 до beta 2 приведет к повторной загрузке всех ваших Общих фотопотоков на устройство.
  • Функция Общего фотопотока будет установлена в ВЫКЛ при обновлении с iOS 6 beta 1 до более позднего выпуска. Настройка по умолчанию должна быть ВКЛ.

Социальные сети

  • Weibo отображается в приложении «Настройки» только в том случае, если включена китайская клавиатура.
  • Метод requestAccessToAccountsWithType:withCompletionHandler: класса ACAccountStore теперь устарел. Для доступа к учетным записям пользователей используйте метод requestAccessToAccountsWithType:options:completion:.
    В параметре options этого нового метода передайте nil для доступа к учетным записям Twitter и Weibo. Чтобы получить доступ к учетным записям Facebook, передайте словарь со следующими ключами (которые описаны в ACAccountStore.h):
    • ACFacebookAppIdKey
    • ACFacebookPermissionsKey
    • ACFacebookPermissionGroupKey
    Вам больше не следует добавлять этот словарь в файл Info.plist вашего приложения, как это требовалось в бета-версии 1.

SpringBoard

  • После восстановления устройства в iTunes или выполнения «Стереть все содержимое и настройки» текущие обои могут не отображаться до первой перезагрузки устройства.

Passbook

  • Значок самолета появляется между пунктом отправления и назначения для всех типов транзита.
  • ИСПРАВЛЕНО: SpringBoard иногда приостанавливает ShoeboxUIService при обработке пропусков. Обходное решение — повторить попытку обработки пропуска.
  • Поле «Описание» теперь является обязательным полем для пропуска. Все пропуска, созданные без него, не пройдут проверку и не будут обработаны.
  • База данных Passbook была сброшена. Вам нужно будет добавить свои пропуска снова.

UIKit

  • В версии 5.1 класс UISplitViewController использует стиль презентации со скольжением при отображении левого представления (ранее встречался только в Mail). Этот стиль используется, когда презентация инициируется либо существующим элементом панели навигации, предоставляемым методами делегата, либо жестом свайпа внутри правого представления. Дополнительное использование API не требуется для получения такого поведения, и все существующие API, включая API экземпляра UIPopoverController, предоставляемого делегатом, будут работать как и прежде. Если жест будет неприемлем в вашем приложении, установка свойства presentsWithGesture вашего контроллера разделения в NO отключает жест. Однако отключение жеста не рекомендуется, так как его использование сохраняет единообразный пользовательский опыт во всех приложениях.
  • ИСПРАВЛЕНО: В iOS 6 были внесены изменения, благодаря которым вам больше не нужно устанавливать делегат и реализовывать метод для распознавателей жестов одиночного пальца и одиночного касания, чтобы они хорошо работали с объектами UIControl.
  • В iOS 6 и более поздних версиях класс UIWebView асинхронно отрисовывает свое содержимое.
  • Разработчики, пробующие Auto Layout с объектами UIScrollView, могут заметить дрожание индикаторов прокрутки на устройствах с Retina-дисплеями.
  • Автоповорот изменяется в iOS 6. В iOS 6 метод shouldAutorotateToInterfaceOrientation: класса UIViewController устарел. Вместо него следует использовать методы supportedInterfaceOrientations и shouldAutorotate.
    • Больше ответственности переносится на приложение и его делегат. Теперь контейнеры iOS (такие как UINavigationController) не обращаются к своим дочерним элементам, чтобы определить, должны ли они автоматически поворачиваться. По умолчанию поддерживаемые ориентации интерфейса приложения и контроллера представления установлены в UIInterfaceOrientationMaskAll для iPad и UIInterfaceOrientationMaskAllButUpsideDown для iPhone.
    • Поддерживаемые ориентации интерфейса контроллера представления могут меняться со временем. Даже поддерживаемые ориентации интерфейса приложения могут меняться со временем. Система запрашивает поддерживаемые ориентации у самого верхнего полноэкранного контроллера представления (обычно корневого контроллера представления) всякий раз, когда устройство поворачивается или когда контроллер представления отображается с полноэкранным модальным стилем презентации. Более того, поддерживаемые ориентации извлекаются только в том случае, если этот контроллер представления возвращает YES из своего метода shouldAutorotate. Система пересекает поддерживаемые ориентации контроллера представления с поддерживаемыми ориентациями приложения (как определено файлом Info.plist или методом делегата приложения application:supportedInterfaceOrientationsForWindow:), чтобы определить, следует ли поворачивать.
    • Система определяет, поддерживается ли ориентация, путем пересечения значения, возвращаемого методом supportedInterfaceOrientationsForWindow: приложения, со значением, возвращаемым методом supportedInterfaceOrientations самого верхнего полноэкранного контроллера.
    • Метод setStatusBarOrientation:animated: не устарел полностью. Однако теперь он работает только в том случае, если метод supportedInterfaceOrientations самого верхнего полноэкранного контроллера представления возвращает 0. Это возлагает ответственность за обеспечение согласованности ориентации строки состояния на вызывающую сторону.
    • Для совместимости контроллеры представления, которые по-прежнему реализуют метод shouldAutorotateToInterfaceOrientation:, не получают новых поведенческих реакций на автоповорот. (Другими словами, они не обращаются к приложению, делегату приложения или файлу Info.plist для определения поддерживаемых ориентаций.) Вместо этого метод shouldAutorotateToInterfaceOrientation: используется для синтеза информации, которая была бы возвращена методом supportedInterfaceOrientations.
  • В некоторых ситуациях система Auto Layout может автоматически не включаться для представления. Чтобы обойти эту проблему, переопределите метод класса requiresConstraintBasedLayout в вашем представлении и возвращайте YES из вашей реализации.
  • Методы willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration: и didRotateFromInterfaceOrientation: больше не вызываются для любого контроллера представления, который выполняет полноэкранную презентацию поверх себя — например, путем вызова presentViewController:animated:completion:.
    • Убедитесь, что ваши приложения не используют эти методы для управления компоновкой любых подпредставлений. Вместо этого они должны использовать метод viewWillLayoutSubviews контроллера представления и настраивать компоновку, используя прямоугольник границ представления.
  • В iOS 6 методы viewWillUnload и viewDidUnload класса UIViewController теперь устарели. Если вы использовали эти методы для освобождения данных, используйте вместо них метод didReceiveMemoryWarning. Вы также можете использовать этот метод для освобождения ссылок на представление контроллера представления, если оно не используется. Вам потребуется проверить, что представление не находится в окне, прежде чем делать это.
  • ИСПРАВЛЕНО: Вызов любого из методов рисования NSString без указания значения для атрибута NSFontAttributeName, скорее всего, приведет к исключению. Обходное решение — установить значение для ключа NSFontAttributeName перед рисованием или изменением размера объекта NSAttributedString.
  • Установка значений для свойств shadowOffset или shadowColor объекта UILabel, свойство attributedText которого содержит допустимую строку с атрибутами, не поддерживается. Вместо этого используйте атрибут NSShadowAttributeName строки с атрибутами для установки тени.
  • Значение NSTextAlignmentNatural не поддерживается и приведет к исключению при использовании со свойством textAlignment класса UILabel или при передаче в качестве параметра выравнивания в метод drawInRect:withFont:lineBreakMode:alignment: класса NSString.
  • Метод setContentStretch: класса UIView устарел в этом бета-выпуске. Чтобы добиться того же эффекта, используйте API resizableImageWithCapInsets: класса UIImage и отображайте изображение с помощью UIImageView.
  • Метод resizableImageWithCapInsets: класса UIImage фактически изменяет размер изображений путем мозаичного наложения. В качестве оптимизации производительности он использует растяжение, а не мозаичное наложение, когда пользователь не сможет отличить разницу, например, при растяжении одной строки или столбца. Но в определенных обстоятельствах можно захотеть фактически растянуть некоторую область изображения. В iOS 6 метод resizableImageWithCapInsets:resizingMode: позволяет вызывающему объекту указывать режим изменения размера мозаичного наложения или растяжения.
  • Существует известная проблема со словарями при попытке определения слова на любом языке, кроме английского или японского. Когда отображается справочная библиотека, пользователю предлагается загрузить словарь, но эта загрузка может не начаться. Пользователь может нажать за пределами всплывающего окна на iPad или нажать кнопку «Готово» на iPhone или iPod touch, чтобы отменить запрос на загрузку.

Safari & WebKit

  • WebKit в iOS теперь поддерживает методы requestAnimationFrame и cancelAnimationFrame в JavaScript, как описано здесь http://www.w3.org/TR/animation-timing/.
    • Обратите внимание, что поскольку спецификация все еще находится на стадии рабочего черновика, эти методы имеют префикс webkit, поэтому они являются window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.
  • Квота кэша приложений по умолчанию увеличена с 5 МБ до 25 МБ.
  • Порог субдискретизации JPEG был увеличен с 2 МП (мегапикселей) до 5 МП на всем поддерживаемом оборудовании, кроме iPhone 3GS и iPod touch (4-го поколения).
  • Добавлена поддержка тегов в веб-формах. Пользователи могут загружать существующие фотографии и видео из своей фотобиблиотеки или делать снимки или записывать видео с помощью камеры. Ранее этот элемент управления формой всегда был отключен.
  • С Safari 6.0 на OS X разработчики теперь могут использовать Web Inspector (инструмент веб-разработки) с подключенными устройствами iOS и iOS Simulator. Разработчики могут использовать Web Inspector для отладки Safari и класса UIWebView в своих собственных приложениях, созданных и запущенных из Xcode. Это заменяет баннер Console Debug в Safari.
  • В iOS 6 и более поздних версиях веб-данные (SQL Web Storage и LocalStorage) из объекта UIWebView могут храниться в каталоге, который будет резервироваться. Чтобы включить резервное копирование этих данных, установите ключ WebKitStoreWebDataForBackup в YES в пользовательских настройках вашего приложения. Это следует делать только в том случае, если ваше приложение полагается на данные веб-контента, которые не могут быть перезагружены. Если ваш объект UIWebView открывает ссылки на произвольный веб-контент, этот ключ должен быть установлен в NO. Изменение значения этого ключа не сохранит существующие данные веб-представления.
  • В iOS 6 и более поздних версиях Safari больше не регистрируется для общего RSS/ATOM-схемы feed:. Приложениям, которые могут просматривать такие типы лент, рекомендуется зарегистрироваться для этой схемы URL.
  • ИСПРАВЛЕНО: В iOS 6 beta 1 Smart App Banners в Safari отображают информацию из App Store о приложении над веб-контентом. В этом выпуске часть интерфейса запуска приложения и функциональность Smart App Banners недоступны.
  • Webkit больше не всегда создает аппаратные ускоренные слои для элементов с опцией -webkit-transform: preserve-3d. Авторам следует перестать использовать эту опцию как способ получения аппаратного ускорения.

Пользовательский опыт

  • ИСПРАВЛЕНО: Пользователи могут заметить, что звуки нажатия клавиш пропускаются во время быстрой печати.
  • ИСПРАВЛЕНО: Отображение клавиатуры в ландшафтной ориентации, а затем поворот устройства в портретную ориентацию приводит к неправильному расположению клавиатуры. Закрытие клавиатуры и ее повторное отображение в портретном режиме должно решить проблему. Проблема затрагивает только iOS 6 beta 1 и будет исправлена в последующих выпусках.