Обновить
37.95

iOS *

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

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

Способы встраивания C++ в Objective-C проекты

Время на прочтение10 мин
Количество просмотров31K
Этот топик — мой перевод статьи про способы встраивания С++ в Objective-C проекты, в которой рассказаны некоторые интересные решения, как удачные, так и неудачные. Оригинал статьи:
www.philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects

Итак,

Способы встраивания C++ в Objective-C проекты


Если вы спешите и хотите сразу перейти к решению проблемы внедрения объектов С++ в классы Objective-C без порчи заголовочных файлов, так, чтоб они могли быть включены из чистого Objective-C, вы можете прокрутить статью до заголовка Pimpl. Это решение можно использовать в ~95% случаев. Остальная часть содержит более глубокий анализ проблемы и дополнительные методы ее решения.
Читать дальше →

Давненько не брал я в руки шашки. Знаем, знаем, как Вы играете

Время на прочтение4 мин
Количество просмотров5K
Ситуация в appStore для casual разработчиков быстро меняется.
2 года назад можно было заработать, выпуская платное приложение одновременно с бесплатным аналогом.
После появления в магазине более 100 000 программ этот трюк стал неэффективен.
Год назад шустрые парни стали выкладывать только бесплатные приложения, но с покупками внутри.
Одновременно число программ в appStore перевалило за 500 000.
В ближайшее время ( судя по финансовым отчетам 2012 года) только реклама внутри приложения принесет быстрые деньги.



До прошлого года я использовал фирменную рекламу от Apple.
Однако родная iAd реклама работает исключительно на территории врага.
Чтобы добрать деньги с игроков, живущих не в США (а это минимум 25%), следует прикрутить рекламу от, скажем, Google, которая будет мелькать там, где не работает iAd.

Под habracut я опишу механизм AdWhirl, реализующий показ баннеров от разных производителей.
Пример кода взят из бессмертной игры нашего прекрасного детства.

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

50 советов для разработки безупречного дизайна iOS приложения

Время на прочтение12 мин
Количество просмотров58K
Привожу перевод статьи Ника Карсона. В статье собраны вместе, как мне кажется, основные правила построения интерфейса для iOS приложений.

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

2. Ориентируйтесь на устройство при создании приложений: учтите не только размер экрана, но и где и когда устройство используется. Больше всего iPad используется для развлечений между 8-11 часами вечера, перед сном, тогда как iPhone — в очереди на автобус или в кофейне. Учтите различные сценарии использования при разработке приложений – включая и то, как далеко устройство расположено от лица пользователя.

3. Рассматривайте ваше приложение поэкранно. Определите, каковы основные задачи, которые достигаются при использовании данного активного экрана, и затем сделайте так, чтобы пользователь мог решить их, используя минимальное количество дополнительных опций, кнопок и других элементов управления. Избегайте слишком большой функциональной нагрузки на активный экран, в особенности на мобильных устройствах.

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

5. При адаптации приложения к экранам различных размеров, помните, что при значительном его изменении – например, от iPhone к iPad – способ использования устройства также изменится. Если размеры ограничены, используйте основные функции приложения, при их увеличении – можно включить любые дополнительные функции, которые не вошли в более сжатую версию, так как у вас появляется возможность обыграть дополнительное пространство.

За остальными 45-ю — добро пожаловать подкат.
Читать дальше →

Сказка о разработке интерактивных книг

Время на прочтение5 мин
Количество просмотров18K


В этой статье мы хотим поделиться нашим впечатлением и опытом о разработке двух интерактивных книг для детей: «История о Мисс Моппет» и «Сказка о Котёнке Томе».

Начнём с того, что отметим: самое важное в книге – это текст. Именно поэтому для книг очень важным является перевод, а применительно к приложениям на App Store: для книг-приложений, очень важна качественная локализация.

Читая книгу-приложение, дети и родители больше всего внимания обращают на интерактивность, на анимацию, на красочность и яркость картинок, и в последнюю очередь на буквы. Однако в отличие от англоязычных детей, для которых стараются разработчики всего мира, русские дети не так избалованы наличием на App Store интерактивных книг на русском языке с озвучкой, то есть книг для самых маленьких, где подсвечивается читаемый текст, и можно послушать каждое слово по отдельности, или даже отдельную букву в слове! Такие книги помогают изучать языки.

Мы решили делать интерактивные книги на русском языке с озвучкой текста.
Читать дальше →

Верёвка как в “Cut the Rope”

Время на прочтение2 мин
Количество просмотров18K
Почитав интервью создателей знаменитого бестселлера “Cut the Rope”, в котором утверждается, что на создание веревки ими было потрачено больше всего времени, я не поверил, что написать «алгоритм движения тяжелой нити» действительно так сложно, и для этого надо чуть ли не самим писать физический движок. Погуглив, готового ответа я не нашел, и решил попробовать сделать самостоятельно нечто подобное на cocos2D + Box2D.
За основу были взяты правила:
  1. Цепь делать лучше с помощью прямоугольных тел, соединенных Revolute Joint’ами;
  2. Чем тяжелее объекты составляющие цепь – тем она стабильнее;
  3. Количество итераций при шаге – чем больше, тем лучше (мне хватило 3-х);
  4. Очень помогает, если каждый кусочек цепи, помимо Revolute Joint’а соединить Distance Joint’ом.

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

Оптимизация работы с SQLite под iOS

Время на прочтение4 мин
Количество просмотров13K


“Think of SQLite not as a replacement for Oracle but as a replacement for fopen()”
— About SQLite


А также, скорее всего, под Android, BlackBerry и в сэнд-боксе браузеров для веб-приложений, но я не проверял.

Почему может быть нужно работать с SQLite напрямую?

Любой опытный iOS девелопер тут же упрекнёт меня за использование SQLite напрямую (вернее не напрямую, а через FmDb, но это почти всё равно что напрямую). Он скажет, что нужно использовать CoreData, т.к. оно много всяких ништяков делает автоматически, типа Undo и Redo. И в нём можно рисовать красивые схемки, которые потом приятно показывать заказчику. А в андроиде, например, есть OrmLite.

И я соглашусь – но до той поры, пока у вас база не перевалила, скажем, за 10 таблиц по 500,000 записей в каждой. А если таблиц 52, и есть особо жирные таблицы по миллиону и больше? И базу нужно синхронизировать с сервером через третий формат, к тому же заказчику критично, будет синхронизация длиться час или пять? Если вы встречали задачи такого объёма, добро пожаловать под кат! Если не встречали – то тоже, ведь никто не застрахован от проектов с большими данными, пускай даже таких мобильных и меньше.
Читать дальше →

Распознавание и синтез речи в любое приложение под iOS за час

Время на прочтение12 мин
Количество просмотров12K
Вводная часть:

Сам инструментарий называется NDEV. Чтоб получить необходимый код (его мало) и документацию (её много), надо зарегиться на сайте в «программе сотрудничества». Сайт:

dragonmobile.nuancemobiledeveloper.com/public/index.php

Это весь «геморрой», если клиентов вашего приложения менее полумиллиона и они пользуются сервисами менее 20 раз в день. Сразу после регистрации вы получите членство «Silver», которое позволит вам бесплатно пользоваться данными сервисами.
Разработчикам предлагается пошаговая инструкция по внедрению в свое приложение на iOS сервисов распознавания и синтеза речи:

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

Как делалось iPhone-приложение для ServerClub

Время на прочтение5 мин
Количество просмотров1.8K
В преддверии осени я завершил разработку iPhone-приложения для хостинга ServerClub.com. Теперь выдалась свободная минутка, и мне хотелось бы воспользоваться ею, чтобы поделиться с Хабрасообществом некоторыми усвоенными в ходе проекта уроками, а также поведать о «граблях», которые встретились на пути.

Итак, началось все с того, что в HQ компании ServerClub.com, предоставляющей в аренду серверы и сопутствующий сервис, родилась идея дополнить веб-сайт мультиплатформенным мобильным клиентом, который предоставлял бы пользователям доступ к их серверам, данным по трафику, датчикам, тикетам, финансам, счетам на оплату, а также позволял бы заказывать серверы прямо из приложения. Вообщем, задумали они повторить весь функционал веб-клиента, переосмыслив и упаковав его в мобильное приложение. Сразу было понятно, что работы предстоит немало, но все же, как это часто бывает, оптимизм переборол разум, и я оценил работу в 1 календарный месяц, по прошествии которого я рассчитывал опубликовать приложение в App Store. Вот только в ходе разработки, согласования и уточнений каждая крупная фича «обросла» еще и мелкими нюансами, на реализацию и полировку которых ушло дополнительное время. Кроме того, неожиданные сюрпризы преподнесли ревьюверы, но обо всем по порядку.
Читать дальше →

О том, как идея побеждает маркетинг, а сельские дети калькулятор. В уме

Время на прочтение6 мин
Количество просмотров5.4K

Вместо предисловия


Гуляем в субботу с друзьями на одной московской площади. Вокруг празднично, много народу. Хороший приятель с исключительно гуманитарным образованием, работающий в продажах, неожиданно поворачивается и говорит: «Слушай, забыл сказать: вы своим приложением спасли меня от скуки. Мозг кипит, очень здорово! Особенно неметрическая система радует».

Воскресенье, вечер. Раздается звонок на мобильный: «Алло, Антон? Слушай, тут в задаче 925 нет подсказки с переводом вершков в аршины. Не забудь поправить в обновлении!» И это человек, который в пятницу жаловался, что считать в уме тяжело, выдержки не хватает.

Понедельник. Сижу рядом с домом в кофейне, дописываю код версии 1.1. Заходит мужчина лет тридцати. Хорошее пальто, костюм. Берет кофе, достает iPad и открывает новости. Через 15 минут вижу знакомый экран. Говорю: «Я — разработчик!» Он: «Врешь?» Показал паспорт, пообщались.
Читать дальше →

Навигация как в Google+

Время на прочтение7 мин
Количество просмотров2K
Недавно установил приложение google+ на iPad, и встретил что-то свеженькое из навигационного меню. В принципе обновление ленты через paging на ScrollView не представляет сильно новых технологий, но в сочетании с верхним текстовым баром (на котором, между прочем, интересно меняется шрифт) и цикличным поведением выглядит вполне очень даже удобно и интересно. Для людей, кто совсем не представляет, как выглядит это в google+ iphone-клиенте можно попробовать представить это по рисунку ниже:



Поэтому решил потратить несколько часов, чтобы сделать такой же удобный контрол, в дальнейшем думаю много раз еще пригодится. Реализация оказалось не такой простой лично как я рассчитывал, поэтому решил поделиться методом создания такого контрола, думаю он может понадобится многим разработчикам, да или хотя бы нормально работающий цикличный scrollView тоже предоставит интерес. К слову говоря, первым делом естественно занялся поиском подобных движков на stackoverflow и прочих кодовых ресурсов, но найти не удалось. На дизайнерскую часть особого упора не делал, все будет примитивно, но в тоже время и универсально.
Читать дальше →

Обратная совместимость в iOS SDK

Время на прочтение5 мин
Количество просмотров5.4K

Apple никогда официально не заявляла о несовместимостях между разными версиями своих OS. И всё же каждый крупный релиз они что-то меняют в ядре операционки — фиксят баги и привносят новые. И иногда именно фикс багов, с которыми все привыкли жить, добавляет новых трудностей – в iOS 3 ты не задумываясь добавлял 20 пикселей там, где iOS 4 добавляет их сама, и в итоге твоя модальная вьюшка уезжает на 20 лишних пикселей вверх.

Но это не самая страшная разновидность несовместимостей – их можно продебажить, пофиксить и выпустить новый билд. Также легко устраняется, например, ставшее уже традиционным изменение стандартного контрола для проигрывания видео – в каждой новой iOS Apple что-то добавляет, модифицирует, причём полностью забивая на старый интерфейс без всяких там deprecated за пару версий до выпиливания – так, например, в iOS 3 он был обычной вьюшкой от UIView, а в iOS 4 стал резко вью-контроллером, а старая MPMoviePlayerView исчезла.

Но это тоже подвластно дебагеру, на форумах можно за 10 секунд найти готовый гибридный код фикса такой, что код будет работать везде.

Но относительно новая iOS 5 принесла ещё больше неожиданностей. Об этом свидетельствует хотя бы тот факт, что в последних релизах популярных айфон-приложений обязательно присутствует строчка “Fixed iOS 5 issues” – средний пользователь айпада находит примерно по 10 апдейтов приложений каждый день. Ниже я расскажу о неочевидной проблеме обратной совместимости iOS 4 и iOS 5, с которой мне пришлось столкнуться на своей шкуре и сполна хлебнуть горя.
Читать дальше →

Бета-тестирование iPhone-приложений

Время на прочтение3 мин
Количество просмотров22K
logo В этой статье я хотел бы рассказать читателям про бета-тестирование приложений, сложностях, которые возникают на этом пути, а также о максимальной выгоде, получаемой из этого.

Ни для кого не секрет, что бета-тестирование на смартфонах — довольно трудоемкий процесс, а уж на iPhone — и подавно. Все дело в его многоступенчатости: сперва пользователю нужно найти UDID своего устройства, затем отправить его разработчикам. Только после этих действий со стороны юзера его аппарат вносится в список зарегистрированных девайсов, а уж потом собирается рабочая версия и отсылается ему на почту письмо с просьбой об установке.
Читать дальше →

Coin Keeper. iPhone приложение на C#

Время на прочтение5 мин
Количество просмотров22K

Вчера разработанное нами приложение Coin Keeper заняло третье место в топе платных приложений русского AppStore.

Интересно то, что мы разрабатывали его не на привычном Objective C, а на C#, используя фреймворки Monotouch и Monodroid.

Внутри я бы хотел рассказать про архитектуру приложения, хитрости и удачные моменты. Кроме того я раздам 5 промокодов, тому кто сможет дать ценные комментарии по проекту.

технические подробности проекта...

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

Автоматическое увеличение номера сборки в Xcode

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

Это можно сделать
Читать дальше →

OpenGL iBooks-like анимация перелистывания

Время на прочтение6 мин
Количество просмотров9.6K
Помню, когда я в первый раз взял в руки iPad, более всего меня поразило приложение iBooks c его натуралистичным перелистыванием страниц. Все остальные «фишки» как-то не особо впечатляли, но это… это показалось воплощением полной интерактивности. По сравнению с обычными графическими интерфейсами, использующими стандартные элементы GUI, интерфейсы с использованием анимации OpenGL это новый шаг в развитии пользовательских интерфейсов.
Читать дальше →

Как я заработал $200K на рынке образовательных приложений iOS

Время на прочтение12 мин
Количество просмотров23K
Данную статью хочу приурочить к одновременно выходу второй версии моего приложения Word Wizard и взятию новой отметки в $200 000 в Apple AppStore. Далее я постараюсь поделиться своим опытом и мыслями об образовательном рынке, а также рассказать свою историю успеха. Надеюсь что эта информация будет полезна многим независимым разработчикам. Для тех же кто создает образовательные продукты на платформе iOS моя статья даст возможность оценить рынок приложений в этой сфере.



Собственно начну с продаж и рейтинга, а затем расскажу подробнее про мой личный опыт.
Итак, поехали ...

Codify: нативная среда разработки для iPad

Время на прочтение1 мин
Количество просмотров3.8K
В App Store появился редактор Codify — первая среда разработки под iPad, с нативным интерфейсом и поддержкой тачскрина. Очень удобно: нажимаете пальцем на характеристики объекта — и видите всплывающее окно со списком вариантов. Но самое главное, что в любой момент написанный код можно запустить, чтобы на ходу проверить работу акселерометра и мультитача. Никаких больше мучений с эмуляторами!



Codify построен на языке Lua, это простой и элегантный язык программирования, который хорошо подходит для создания игр под iPad.
Читать дальше →

AppCode — Новая IDE для Objective-С от JetBrains

Время на прочтение1 мин
Количество просмотров11K
Только что был анонсирован выпуск JetBrains AppCode, новой интегрированной среды разработки для Objective-C.

Как присуще всем IDE компании JetBrains наиболее сильные стороны AppCode: редактор кода с умным автодополнением, анализом кода проекта и подсказками по его улучшению, широкий спектр надежных рефакторингов, удобный отладчик с возможностью запуска кода на устройствах (iPhone или iPad), и удобная интеграция с системами контроля версий (SVN, Git, Mercurial, Perforce, и т.д.)

image

Конечно же присутствует интеграция с Xcode. Можно просто открыть проект Xcode, создать новый Xcode проект и пр. AppCode позволяет в любой момент переключаться в Xcode и обратно с сохранением всей структуры проекта. Для редактирования некоторых типов файлов, например xib, storyboard, автоматически используются инструменты Xcode. Более полный список функциональности можно посмотреть тут.

Продукт коммерческий, бесплатно можно пользоваться в течение 30 дней. Также можно получить бесплатную лицензию, если вы работаете над open-source проектом.

Фидбэк приветствуется!

Использование Storyboard

Время на прочтение4 мин
Количество просмотров60K

Вступление


В недавно вышедшем iOS 5 появился удобный механизм разработки интерфейса программы — Storyboard. Этот механизм позволяет заметно уменьшить количество кода связанного с переходами между экранами, показами Popover'a и даже с настрокой ячеек в таблице.

Задача: По нажатию на кнопку показать следующий экран поместив его в текущий NavigationController.
Решение без Storyboard:

DDetailViewController* nextController = [DDetailViewController new];
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];

Решение с использованием Storyboard:


Вот и все! Никакого кода!

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

Обзор нововведений в Xcode 4.2 для iOS-разработчика

Время на прочтение4 мин
Количество просмотров4.5K
Одновременно с релизом iOS5 разработчики получили в свое распоряжение обновленный Xcode 4.2, в котором ожидаемо обнаружились некоторые новые «фичи». Под катом кратко рассмотрим основные нововведения, представленные в XCode 4.2.
Читать дальше →