Небольшое предупреждение об Apple TV

Если вы собрались купить приставку, чтобы начать писать под неё игры и приложения, то будьте готовы вместе с приставкой купить и провод для USB Type C. В комплекте идёт только USB — Lightning для зарядки пульта управления. В продаже у Apple есть только переходник USB C — USB A (female), то есть с ним нельзя подключить приставку обычным USB A проводом, так как нужен провод типа male-male. Таким образом минимум 2000-2500 рублей надо потратить еще и на провод! Есть разные фирменные провода, например, от Belkin (дорого — 2200 рублей) или Xiaomi (600 рублей, но еще плюс доставка). Можно поискать дешевые китайские провода и переходники, и они даже есть в большом количество по умопомрачительно низким ценам, но USB Type C обладает одной особенностью, которая пока не позволяет мне решиться заказать их — это способность пропускать высокие токи. Есть уже некоторое количество сообщений на тематических сайтах, в которых говорится о том, как такие аксессуары испортили довольно дорогую технику. Честно говоря, совсем не хочется экспериментировать с совсем новой приставкой. Даже несмотря на то, что в моем маке USB 2.0 и он не способен дать больше 2 Амперов…

Но в то же время без подключения проводом приставку невозможно начать использовать для разработки приложений: элементарно нельзя получить её UDID, чтобы добавить в свой аккаунт, чтобы сделать соответствующий провижн профайл. И еще нюанс — закинуть ipa на приставку по воздуху тоже нельзя, так как нет никакого браузера. Единственная возможность запустить своё приложение на Apple TV – это публичное бета-тестирование через TestFlight, но не всегда приложение находится на стадии предрелиза.

Если у вас есть ссылка на магазин с недорогими проводами или вы знаете какой-либо способ обойтись без провода (что вряд ли)  – пишите в комментариях!

А по поводу приставки — супер вещь!

Обуздать IB Designables и Xcode

Если у вас стали сыпаться ошибки или предупреждения о том, что в Interface Builder есть проблемы с элементами, которые должны отрисовываться через Live Rendering, например:

или что-то про невозможность назначить по указанному key-path какое-либо значение, то можно воспользоваться этим решением:

  1. Удалить derived data вашего проекта, они находятся в подпапке по пути ~/Library/Developer/Xcode/DerivedData
  2. Очистить текущий билд командой Product > Clean (⌘⇧K)
  3. Собрать проект снова (⌘B)
  4. В сторибоарде или xib перейти в меню Editor и нажать Refresh All Views

После этого ошибки и предупреждения должны уйти.

Советы

Подумал, почему бы не завести рубрику «Советы» или «Опыт». Взял и завёл.
Совет №1:

Не берите на мобильный проект дизайнера из веба. Пусть в своём вебе чалится до скончания времён. Ну, а если взяли, купите ему нормальный телефон, для которого он должен рисовать, и приставьте к нему своего опытного мобильного разработчика. Все, абсолютно все макеты пропускайте через проверку у этого программиста. Если же у вас нет денег на такие вещи — не делайте приложение вообще. Займитесь тем, на что денег хватает.

Ошибка ITMS-90362

Если вы используете CocoaPods в своём проекте с поддержкой iOS 7.x и при отправке в App Store вы столкнулись с ошибкой ITMS-90362, то, скорее всего, в вашем Podfile прописано:

use_frameworks!

что означает использование фреймворков вместо привычных статичных библиотек. Эта опция дает преимущества на iOS 8+, но не поддерживается в iOS 7. Поэтому её придётся выключить. Для этого просто закомментируйте строку. Если после этого возникнут проблемы со сборкой приложения, то можно проверить Build Settings вашего Target на наличие флага -frameworks, если он имеется — удалить его. Так же можно переустановить pods в вашем workspace консольной командой pod install, предварительно удалив в настройках проекта Project>Info>Configurations конфигурационные файлы CocoaPods — заменив Pods.debug/Pods.release/… на None.

Данное решение основано на диалоге в комментариях на GitHub.

Новые правила сетевых подключений в iOS 9 (ATS — App Transport Security)

Правильная конфигурация в Info.plist вашего приложения должна быть такой, если ваш сервер не работает через https:

NSAllowsArbitraryLoads должен быть false,тем самым это запретит все незащищенные сетевые соединения в приложении, а вот список исключений, содержащий ваш домен, наоборот, разрешит подключение только для вашего домена.

PS в официальной документации Apple какая-то ошибка с наименованием ключей для параметров. Использовать нужно ключи, начинающиеся на NSTemporary.

Как решить проблему пустого списка Универсального доступа в настройках OS X

Недавно обновил пару программ, которые требуют особых привилегий по доступу к системе. Эти привелегии настраиваются в разделе Защита и Безопасность в Системных настройках, в подразделе Универсальный доступ:

Универсальный доступ OS X
Универсальный доступ OS X

И когда приложение попросило одобрить его в данном списке, список оказался пуст, а добавить через кнопки +|- программу в список не получалось: список оставался пустым.

Поиск по разным файлам настроек системы ничего не дал. Легкий гуглёж — тоже. При этом все программы просто перестали работать, как надо, то есть, подумал я, права на настройки или сами настройки слетели…

Читать далее Как решить проблему пустого списка Универсального доступа в настройках OS X

Xcode 6.4 и Alcatraz

Вчера вышел в релиз новый Xcode версии 6.4
Как обычно возникли проблемы с плагинами. В этот раз просто исчез из меню и потому перестал работать менеджер плагинов Alcatraz.
Решение уже есть на github в issue проекта — https://github.com/supermarin/Alcatraz/issues/307

Чтобы вернуть работоспособность плагинам и самому Alcatraz, завершите Xcode и выполните в консоли команду:

Запустите Xcode, одобрите работу сторонних bundle (собственно, плагинов)  в появившемся диалоге и всё!

Веселья час с Google Analytics iOS SDK

Одна особенность Google Analytics может сыграть злую шутку.
Когда я читал официальное руководство по встраиванию их SDK в приложение, нигде не встретил упоминания о том, что одной лишь инициализации трекера недостаточно! Чтобы видеть пользователей и хоть какую-нибудь статистику, необходимо сделать хотя бы одно действие по логированию.

Мне GA в целом не требуется, так как для моих нужд достаточно простой Flurry, но поскольку рекламой управляет гугловский же AdMob, то я добавил и их аналитику в новое приложение, на всякий случай. И тут такое недоразумение!

Пришлось в новой версии добавить в код главного экрана простое логирование входа на экран.

Теперь пользователей видно в Google Analytics.

Как пройти ревью, если в приложении реклама?

Сделал я на досуге простенькую игру. И решил, что если она станет популярной, то надо немного денег с неё получить. Для этого я встроил в неё рекламу Google AdMob.

admob_logo_2x
Для управления рекламой на устройстве библиотеке требуется это устройство идентифицировать. Для подобных целей Apple реализовала отдельный идентификатор IDFA. Об использовании данного идентификатора перед каждым релизом надо уведомлять Applе и проставлять галочки в анкете.

Читать далее Как пройти ревью, если в приложении реклама?

Кратко: Как отзывы влияют на загрузки

До последнего обновления у игры был видимый рейтинг в 5 звезд и 6 отзывов. После обновления 21 марта видимый в магазине рейтинг обнулился и отзывы скрылись — необходимо набирать и ждать новых отзывов. Это мгновенно отразилось на загрузках, так как в поиске PixelMixel показывается посетителям App Store без звездочек.
Собственно, картинка:

Оценки, отзывы и загрузки PixelMixel
Как влияет оценка в магазине на популярность игры PixelMixel