Обновить
61.04

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Программка из десятка строчек обрушает Springboard

Время на прочтение2 мин
Охват и читатели32K
Вот вчера случайно наткнулся на такую уязвимость iOS. Проверено на iPhone 4, 4S и 5 с iOS 6.1.2.

Чтобы воспроизвести баг, который приводит к перезапуску SpringBoard'a (что в свою очередь приводит к прекращению работы всех запущенных пользователем приложений), нужно сделать всего две вещи:
  1. Скрыть все окна (т.е. объекты UIWindow) в приложении.
  2. Выйти из приложения

Читать дальше →

Анимация UIView: перемещение по произвольной траектории на примере окружности

Время на прочтение8 мин
Охват и читатели7.6K
Пожалуй, большинство iOs разработчиков знают, что для реализации различных визуальных эффектов, обычно, достаточно нескольких строчек кода. Фреймворк UIKit, отвечающий за стандартный интерфейс, имеет встроенные средства, позволяющие делать довольно изощрённые виды анимации — от перемещения по прямой, до эффекта переворачивания страницы. Однако, для перемещения наследников UIView по более сложной траектории, приходится спускаться ниже и переходить на уровень фреймворка Core Graphics. При этом, количество примеров в сети снижается и бывает сложно найти необходимое. А если и находится, то качество реализации, зачастую, оставляет желать лучшего. С такой ситуацией я и столкнулся, когда возникла необходимость сделать анимацию интерактивной книги для детей.

Читать дальше →

Мой опыт продаж в App Store. $29K за 15 месяцев

Время на прочтение3 мин
Охват и читатели155K
Хочу поделиться опытом разработки и продаж своего iOS-приложения из категории «Производительность» (Productivity). О приложении рассказывать не буду, чтобы не сочли за рекламу. Просто графики и выводы, которые я сделал.



Читать дальше →

Cyto: наш метод проб и ошибок

Время на прочтение5 мин
Охват и читатели24K


Год назад мы, украинская студия Room 8, начали делать свою первую игру под названием Cyto. Ни у кого в команде практически не было опыта гейм-девелопмента и разработки приложений под iOS, зато у всех были амбиции сделать что-то реально офигенное. Учиться всему пришлось буквально на ходу и иногда мы чувствовали себя слонами в посудной лавке:)

Этой статьей мы хотели бы, по возможности, помочь коллегам-разработчикам почерпнуть из нашего опыта.
Прежде, чем начать рассказ, давайте мы покажем вам, что у нас получилось:



Мы поделимся собранной коллекцией граблей, через которые наша команда прокладывала путь целый год. Итак, кому интересны технические детали разработки – читайте дальше.

Читать дальше →

Принципы организации проекта в iOS для быстрого понимания кода после паузы в разработке и использование совместных классов в iOS и MacOS

Время на прочтение3 мин
Охват и читатели3.1K
По специфике работы мне приходится вести несколько (5-10) проектов одновременно, и часто возвращается к кодированию проекта после значительной паузы, месяц и более. Такая особенность требует организации кода, которая позволит очень быстро вспомнить архитектуру проекта.

Так же для экономии времени и ресурсов я использую общие классы для MacOS и iOS версий моего приложения.
Для тех, кому интересны особенности моего опыта — прошу под кат.

Читать дальше →

Хакатон для мобильных разработчиков в Москве

Время на прочтение1 мин
Охват и читатели3.9K
21 марта в в коворкинг-центре «Клуб Нагатино» в Москве состоится открытие Hackaphone — хакатона для разработчиков мобильных приложений. К участию приглашаются авторы идей, сформировавшиеся команды и независимые специалисты, которые готовы присоединиться к понравившимся проектам. Вход свободный.

Команды, отобранные жюри, отправятся в горнолыжный парк Яхрома, где будут заниматься разработкой своих проектов и смогут принять участие в Mobilefest 2013.



Также, в программе Hackaphone предусмотрены мастер-классы и неформальное общение со специалистами из студий-разработчиков и компаний-издателей. Команда-победитель получит приятные призы от спонсоров, а также возможность реализовать проект на уникальных условиях в рамках академии Farminers.

Зарегистрироваться и получить подробную информацию о мероприятии можно по ссылке.

Программирование звука с низкой задержкой в iOS

Время на прочтение6 мин
Охват и читатели15K
В статье будут рассмотрены особенности работы низкоуровневого API для работы со звуком в iOS, с которыми пришлось столкнуться при разработке Viber. Речь пойдет о выборе размера аппаратного буфера и поведении AudioUnit при изменений частоты дискретизации.

Для программной работы со звуком в iOS Apple предоставляет 4 группы API, каждая из которых предназначена для решения определенного класса задач:
  • AVFoundation позволяет проигрывать и записывать файлы и буферы в памяти с возможностью использовать предоставляемые платформой аппаратные или программные реализации некоторых аудио-кодеков. Рекомендуется использовать, когда нет жестких требований к низкой задержке проигрывания и воспроизведения.
  • OpenAL API предназначено для рендеринга и воспроизведения трехмерного звука а так же использования звуковых эффектов. Применяется, в основном, в играх. Обеспечивает низкую задержку воспроизведения, но не предоставляет возможности записывать звук.
  • AudioQueue базовое API для записи и воспроизведения аудиопотоков с возможностью использования кодеков, предоставляемых платформой. Используя это API, не получится получить минимальную задержку, но пользоваться им крайне просто.
  • И наконец AudioUnit, мощное и богатое API, для работы со звуковыми потоками. По сравнению с Mac OS X на iOS программисту доступно не полностью, но для записи и воспроизведения звука как можно ближе к «железу» подходит лучше всего.

Поговорим про AudioUnit и iOS

Где зарыт iPhone или насколько точен GPS?

Время на прочтение4 мин
Охват и читатели83K
Нормальная точность Мы планировали создать приложение для поисковых игр — игр, в которых нужно находить места в реальном мире.
Первое, что нам потребовалось — точный инструмент для сбора точек и создания маршрутов. Простое указание их на карте не подходило, т.к. погрешность геометок достигает 200 метров — человек мог прийти по координатам в поисках небольшой вещи, а оказывалось, что до места еще сотни шагов. Чтобы не заставлять пользователей бродить, было решено разработать систему снятия координат телефонами прямо на месте.
Имея опыт разработки такой системы под Android и помучившись с ее сервисами геолокации, мы предположили, что сделать это на iOS будет проще (айфоны вроде бы очень похожи) и точнее (в идеале мы должны не бояться бросить айфон в лесу, чтобы потом найти его по компасу).
Для проверки этих предположений мы написали прототип, который приводил пользователя стрелкой к месту снятия координат, а заодно сделали интересные выводы о точности встроенного компаса и GPS.
Читать дальше →

Инструменты студии мобильной разработки

Время на прочтение4 мин
Охват и читатели39K


Для разработчиков мобильных приложений существует много сервисов и веб-инструментов. Продвинутые компании и разработчики-одиночки знакомы со всеми этими сервисами не понаслышке. А вот новичок может запутаться и сделать неправильный выбор. Перейти на другой сервис можно без проблем, но ведь классно с самого начала пользоваться лучшим и удобным.

В нашей компании используется много подобных сервисов и инструментов, поэтому я решил рассказать вам кратко о лучших из них. О базовых вещах на подобии Basecamp, GitHub и т.п. речи не будет, т.к. это не сугубо специфические вещи для мобильной разработки.

Пройдемся по дизайну, серверным решениям, тестированию и аналитике.
Читать дальше →

Intel приобретает набор HTML5 инструментов для разработчиков мобильных приложений

Время на прочтение1 мин
Охват и читатели13K

Компания Intel сообщает о приобретении инструментария разработчиков приложений для мобильных устройств, разработанного командой стартапа AppMobi. Список программ и компонентов, переходящих к Intel, имеет следующий вид:
  • XDK (Сross platform development kit) IDE – первая основанная на HTML5 среда разработки мобильных приложений. Включает в себя инструменты для создания, отладки и сборки ПО, а также эмулятор устройств на iOS и Android;
  • PhoneGap XDK – среда разработки с полной поддержкой open source фреймворка PhoneGap;
  • GameDev XDK – среда разработки игровых приложений на HTML5. В качестве примера AppMobi уже выпустила HTML5 игру под названием Boom Town;
  • jqMobi и jqUI, теперь называемые вместе Intel App Framework – фреймворк для реализации JQuery на мобильных устройствах;
  • directCanvas – технология ускорения приложений на HTML5 и SDK к ней;
  • Mobius – «Web браузер», позволяющий запускать Web приложения на HTML5 как установленные в ОС.

Читать дальше →

Анонимные классы в Objective-C

Время на прочтение6 мин
Охват и читатели6.6K
Даная статья является продолжением «Переопределение реализации метода. Вдохновленный Java'ой». В предыдущей заметке было предложено слишком уж кривое решение, оставлять в таком виде не хотелось и было принято волевое решение довести свое начинание до логического завершения и сделать все «как надо». Хотя вопрос нужности такого функционала в Objective-C до сих пор открыт.
Объяснение
Статья была опубликована вчера, но я нашел способ сделать еще более правильную реализацию, ага, поэтому и скрыл ее на время


Итак, продолжаем быть похожими на Java

Читать дальше →

Разработка под iOS в среде Visual Studio

Время на прочтение1 мин
Охват и читатели36K
Сегодня, 21 февраля 2013 года, компания Xamarin объявила о выходе Xamarin 2.0. Xamarin — компания, созданная разработчиками Mono, MonoTouch и Mono for Android, кросс-платформенной реализации платформы .NET.



На данный момент стоимость разработки под iOS в Visual Studio оценивается в 999 U.S$

Существует возможность скачать Starter Edition, которая позволяет писать не более 32к скомпилированных(?) строк кода, которые, по их мнению, будут достаточными для всех мини-приложений. Поддержка отсутствует. Купить/скачать — store.xamarin.com

via TechCrunch

NASA объявили конкурс на лучшее iPad-приложение для космонавтов

Время на прочтение1 мин
Охват и читатели4.5K

Астронавты и космонавты ежедневно сталкиваются с огромными трудностями, выполняя научные эксперименты. Одним из ключевых аспектов эффективности их работы, является понимание того, как микрогравитация затрагивает их тела, и как их сохранять здоровыми. Важную роль в здоровье космонавтов играет режим питания. Cотрудники пищевой биохимической лаборатории NASA считают, что специальное приложение для iPad, окажется полезным и нужным членам космической команды для того, чтобы они могли следить за своим рационом питания. Мобильная программа будет подсказывать космонавтам, достаточно ли они употребляют калорий, находясь в космосе.

NASA объявили конкурс «Food Intake Tracker» (FIT) на разработку такого приложения. Призовой фонд составляет 30 000 долларов. Задача приложения идентифицировать пользователей, отслеживать потребление пищи и обеспечивать лучшие диетические рекомендации, что в целом позволит снизить отрицательные физиологические эффекты космического полета.



Источник: TopCoder

Ближайшие события

iTunes In-App Purchases со стороны сервера

Время на прочтение13 мин
Охват и читатели37K
Платежи через iTunes фактические лидеры по монетизации контента, предоставляемого мобильными приложениями. В одном из известных мне приложений доход от них в 3 раза превышает доход от Google Play пользователей при том, что посещаемость последних в 1.5 раза выше. Таким образом, с одного пользователя iTunes можно получить вплоть до 5 раз больше денег, чем с одного пользователя Google Play. Данный аргумент достаточен для интеграции платежей iTunes в мобильные приложения.

В данной статье описываются некоторые особенности верификации платежей iTunes (в т.ч. и подписок) с серверной стороны, которые, как мне показалось, не достаточно освещены в существующих статьях.

Читать дальше →

Возможности отладчика в Xcode 4.5

Время на прочтение16 мин
Охват и читатели35K
Единственной постоянной в разработке програмного обеспечения являются баги. Давайте посмотрим правде в глаза, нам никогда не удавалось сделать все правильно с первого раза. Из-за небрежности или неправильных предположений, разработка программного обеспечения становится похожа на приготовление пирога в мотеле, кишащим тараканами, за исключением того, что в нашем случае мы сами создаем жуков. К счастью Xcode дает нам множество инструментов для того, чтобы держать насекомых в ужасе. Очевидно что для этой цели существует отладчик, который мы знаем и любим, но есть еще многое что он умеет помимо просмотра переменных и построчной отладки. Это туториал для начинающих и продвинутых iOS разработчиков, где вы сможете получить практический опыт работы с некоторыми менее известными но черезвычайно полезными методами отладки, таких как:
— как избавится от NSLog в пользу логирования брейкпоинтов;
— как избавится от списка TODO в пользу генерации предупреждений компилятора;
— остановка на условиях с выражениями;
— динамическое изменение данных с помощью LLDB и многое другое.
Как вы можете заметить, целью для меня является быть ленивым разработчиком. К счастью LLDB позволяет сохранить мое время на мартини. Он предоставляет мне отличные инструменты для того, чтобы я не был приклеен к моему компьютеру в течении дня и ночи. Устраивайтесь поудобнее в кресле и открывайте свой любимый напиток. Время становиться ленивым!
Замечу что данный туториал подразумевает что вы уже знакомы с основами отладки в Xcode. Если вы новичек, рекомендую пройти сначала этот туториал.
Читать дальше →

Один из способов обойти основные проблемы при поиске инвестора для iOS-приложения

Время на прочтение4 мин
Охват и читатели8.9K


Проблем может три:
  • Инвестор хочет полный контроль над приложением или компанией;
  • Профильный инвестор ограничивает свободу творчества (например, в игре);
  • Непрофильный инвестор зачастую не даёт крупную сумму и не обеспечивает разные плюшки, которые есть у профильных.

Плюс большой сложностью бывает просто поверить в проект: многим инвесторам нужны вещи, которые повторяют истории каких-то других проектов, но с небольшими изменениями. В действительно необычные новые приложения чаще всего инвестировать планируется после доказательства продаж, когда инвестор-то уже и не очень нужен.

На сегодня уже есть команда iOS-разработчиков делающая своего рода римейк The Lost Vikings, которая решила попробовать краудинвестинг и обратилась к нам в Смартмаркет. И вот почему они это сделали.
Читать дальше →

Маленький отважный арканоид (часть 4)

Время на прочтение7 мин
Охват и читатели9.6K
После небольшого перерыва, продолжим нашу разработку. Сегодня мы добавим в проект небольшой звуковой эффект, проигрываемый при соударении шарика с чем либо на игровом поле. О работе с SoundEngine (которой мы сегодня воспользуемся) я уже писал ранее. По этой причине, сегодня я расскажу не столько о ней, сколько о том, как ее использование отразится на разрабатываемом нами проекте.
Читать дальше →

Переопределение реализации метода. Вдохновленный Java'ой

Время на прочтение10 мин
Охват и читатели11K
Продолжение можно почитать тут habrahabr.ru/post/170265

Вступление


Изучая основы разработки под Android мне пришлось познакомится с таким замечательным языком, как Java. Читая очередной раздел гугловского GetStarted я наткнулся на такую конструкцию:

Button.OnClickListener mTakePicSOnClickListener = 
		new Button.OnClickListener() {
		@Override
		public void onClick(View v) {
			
		}
	};

Объявление представителя OnClickListener и переопределения у него метода onClick (поправьте меня Java программисты). Хм, подумал я, а круто бы эту фичу поиметь в Objective-C, а именно возможность переопределять реализацию метода у объекта(конкретного объекта, а не реализацию метода для всех объектов класса) да еще и через блоки в runtime (!) и забыл о этом всем… пока не оказался в полупустом автобусе в дождливую погоду. Времени было много и я решил поразмыслить над тем, что же тут можно сделать.
Зачем это нужно было? Изначально хотелось уметь делать так:

tableView1.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]
tableView2.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]

Обратите внимание, что предполагается изменение именно делегата и добавление/предопределение методов у него. А tableView остается оригинальным, без каких либо изменений.

Тем самым местом я чувствовал, что это вполне реализуемо благодаря богатому внутреннему миру Objective-C Runtime.
И да, то самое место меня не подвело.
Читать дальше →

Маленькие гении: тестируем приложения вместе с детьми

Время на прочтение2 мин
Охват и читатели21K
В тестировании приложений от Little Beetle всегда участвуют дети – конечные потребители нашей продукции. Перед выходом обновлённой версии приложения «Маленький гений 2.0» мы в очередной раз пригласили юных тестеров в свой офис.



Что из этого получилось – смотрите далее.
Читать дальше →

CodenameOne или Java vs HTML5

Время на прочтение1 мин
Охват и читатели6.9K
Доброе время суток уважаемые разработчики!
Многие успели разбогатеть продавая игрушки и программы для Android и IOS устройств, и еще больше людей день и ночь думают — «что бы такое написать чтобы продавалось?». Кроме этого уже существует достаточно развитый рынок где требуются простые приложения — аналоги сайтов.
Читать дальше →