Компания Touch Instinct временно не ведёт блог на Хабре
Тест-анализ в мобильной разработке
Меня зовут Лена, я руководитель отдела тестирования Touch Instinct.
У нас в компании делаются очень разные приложения, поэтому и требования к качеству могут сильно отличаться от проекта к проекту. Так что набор тестовых активностей, необходимых для обеспечения требуемого уровня качества, может сильно меняться. Но невозможно эффективно протестировать приложение, не изучив его.
Расскажу, какие аналитические задачи встают перед тестированием в Touch Instinct и как мы их решаем.
Штаб-квартира Touch Instinct. Экскурсия по петербургскому офису
Упрощение локализации в iOS
Всем доброго времени суток! Меня зовут Николай, я iOS-Lead в компании Touch Instinct. В процессе разработки часто приходится иметь дело с проектами, которые должны работать на нескольких языках. Расскажу, к какому подходу мы пришли при работе с локализацией.
Минусы базовых подходов
Есть несколько основных подходов для локализации iOS-приложения. Сперва стоит определиться, разрабатывается приложение с использованием storyboards или нет.
С использованием storyboards
Можно локализовывать строки напрямую в storyboard. Однако, при таком подходе есть ряд минусов:
- в случае наличия большого количества storyboards, локализованные строки разбросаны по проекту;
- невозможность использования атрибутных строк, а также строк, которые состоят из нескольких составных частей;
- вам всё равно придется часть строк локализовывать в коде. Это ведет к еще большему разбросу в приложении;
- фактически отсутствует возможность что-то проверить другому разработчику при проведении code review.
Без storyboards
В этом случае локализуем всё в коде. Однако и тут есть ряд минусов. Дело в том, что файлы со строками локализации localizable.strings — магические. При изменении таких файлов очень велика вероятность возникновения ошибки из-за человеческого фактора. Изменения нельзя отследить, пока ошибка не будет найдена в процессе тестирования.
Таким образом, хотя для локализации уже есть готовые механизмы в iOS SDK, они имеют существенные минусы. Более подробно смотрите здесь.
Работа с ConstraintLayout через XML-разметку
Привет! Меня зовут Гавриил, я Android-лид Touch Instinct.
В марте Google выкатил релизное обновление ConstraintLayout. Презентовали его еще на прошлом Google I/O. С того момента прошел почти год, ConstraintLayout стал лучше, быстрее и оброс новыми возможностями. Например, приятно, что появилась возможность объединения элементов в цепи — это позволяет использовать ConstraintLayout вместо LinearLayout.
О всех новых и старых возможностях ConstraintLayout я и постараюсь рассказать в этой статье. Предупрежу сразу — статья будет длинная и других семи частей не будет. Про визуальный редактор ConstraintLayout в статье не будет ни слова — только XML-разметка (по старинке) и немного кода.
6 концепций функционального программирования. Польза и примеры использования
Функциональное программирование — это парадигма программирования, которая акцентируется на вычислении через функции в математическом стиле, неизменяемость, выразительность и уменьшение использования переменных и состояний (ссылка).
Существует 6 основных концепций:
- концепция первого класса и функций высшего порядка
- концепция чистых функций
- концепция неизменяемого состояния
- концепция опциональности и сопоставления с образом
- концепция ленивости и бесконечных структур данных
- концепция лямбда-исчислений
айСоветы
Делиться своим опытом через блог на Хабре это здорово. Но посты освещают слишком общие темы. Мы подумали, что у тех кто сталкивается с созданием мобильных приложений возникает много конкретных вопросов, на которые мы могли бы ответить. Поэтому мы запускаем айСоветы.
Наш CEO Андрей Басков отвечает на вопросы про управление проектами и мобильной студией, продажник Дима Костин про отношения с клиентами, тест-лид Полина Тревогина про тестирование, я про продвижение и стратегию, арт-директор Александр Юдин про дизайн и проектирование.
Мы разбираемся в бизнес приложениях. Про игры не спрашивайте, технические вопросы (как подружить Xamarin с Unity) мы тоже решили исключить.
Подписывайтесь через RSS или Twitter.
Под катом, для примера, ответ на вопрос «Как дешево разработать мобильное приложение».
Multipeer connectivity framework в iOS7
Фреймворк позволяет взаимодействовать устройствам из разных сетей, например у смартфона №2 включен только WiFi, а у №3 только Bluetooth. Если в радиусе доступности этих устройств будет третий смартфон с включенным Wifi и Bluetooth, смартфоны №2 и №3 смогут прозрачно обмениваться
данными.
Live Mobile через неделю в Москве
В мероприятии примут участие: App Annie, Flurry, ChartBoost, AviaSales, Game Insight и еще 20 других.
Под катом я расскажу почему стоит посетить конференцию и как попасть на нее бесплатно.
Синтезатор речи в iOS7
За синтез речи отвечает класс AVSpeechSynthesizer Достаточно передать ему текст обернутый в класс AVSpeechUtterance и текст будет прочитан смартфоном.
Голос зависит от локали, в том числе поддерживается русский. Речь звучит четко и приятно.
var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
new AVSpeechUtterance ("Shall we play a game?");
speechSynthesizer.SpeakUtterance (speechUtterance);
Continuous Integration в XCode5
XCode Service умеет все тоже что и любой Continuous Integration сервер, возможно чуть меньше. Огромный плюс — полная интеграция с XCode и свойственная Apple «работа из коробки». Я запустил авто-сборку проекта за полчаса, хотя раньше ни разу не настраивал CI сервер. И не нужно курить мануалы как правильно собирать приложение из командной строки, как включить эмулятор или запустить тесты на устройстве.
Позиционирование мобильных студий
Представьте себя на месте заказчика. Куда он должен обратиться? Все десять студий работают примерно в одном ценовом диапазоне и наработали «сильные» портфолио. Кто лучше справится с задачей? Студии должны сами ответить на этот вопрос. Осознать, что и как получается делать лучше всего и рассказать чем они отличаются от других. Тогда заказчик сопоставит специализацию студии со своей задачей и обратится в правильное место.
Подробнее про позиционирование читайте в презентации Андрея Терехова (Terekhov).
А я расскажу про позиционирование трех мобильный студий: ГАЛС Cофт, е-Легион и Touch Instinct.
RevealApp — Firebug для iOS приложений
Возможные применения:
— отладка UI, визуальный поиск непонятных багов в layout и тд;
— знакомство с приложением, написанным другим разработчиком, открываете Reveal и быстро анализируете структуру экранов (отображаются в том числе элементы созданные в runtime);
— дизайнеры (или разработчики под их присмотром) могут тестировать дизайн без перекомпиляции приложения (а давайте подвинем иконку выхода на три пикселя влево).
Reveal используют Flipboard, Artsy, Xamarin и другие.
Реджекты приложений в AppStore
Apple Review Guidelines достаточно подробны, но приложения проверяют живые люди и часто трактуют правила по разному.
Предлагаю в комментариях рассказать о ваших реджектах приложений и как вы их решили.
Под катом несколько примеров.
Ближайшие события
Процесс тестирования мобильных приложений
Стоимость ошибки в релизе мобильного приложения высока. Приложения попадают в Google Play в течении нескольких часов, в Appstore несколько недель. Неизвестно сколько времени будут обновляться пользователи. Ошибки вызывают бурную негативную реакцию, пользователи оставляют низкие оценки и истерические отзывы. Новые пользователи, видя это, не устанавливают приложение.
Мобильное тестирование сложный процесс: десятки различных разрешений экрана, аппаратные отличия, несколько версий операционных систем, разные типы подключения к интернету, внезапные обрывы связи.
Поэтому в отделе тестирования у нас работает 8 человек (0,5 тестировщика на программиста), за его развитием и процессами следит выделенный тест-лид.
Под катом я расскажу как мы тестируем мобильные приложения.
Apple разрешила устанавливать старые версии приложений
Если вы не уверены, что старые версии приложений будут работать корректно эту функцию можно отключить.
Разработка мобильных приложений с Dropbox Datastore API
- Drop-ins два простых UI компонента: Chooser для выбора файла из Dropbox-директорий пользователя и Saver для сохранения файлов в Dropbox. Никакой настройки, аутентификации. Вызываете компонент, взамен получаете ссылку на файл. Под iOS и Android доступен только Chooser, Saver появится позже.
- Core API самый низкоуровневый API. Он позволяет читать и записывать файлы и директории на сервере Dropbox. Авторы называют API — RESTish. То есть он использует HTTP, читаемые URL, JSON ответы, но не следует REST принципам досконально. Для аутентификации используется OAuth 2.0.
- Sync API работает поверх Core API и выглядит как доступ к файловой системе. Директории и файлы доступны даже без доступа к интернету и синхронизируются автоматически с серверами Dropbox. Самое удобное API для разработки мобильных приложений.
Sync API хорош, но по статистике, многие мобильные разработчики используют его для хранения структурированных данных. Сериализуют их в JSON, сохраняют в файлы, синхронизируют с облаком. Это работает до тех пор, пока не происходит одновременного изменения данных с разных устройств. Даже если вы поменяете не конфликтующие по смыслу данные, на уровне файла это будет конфликт и Dropbox не сможет его решить.
Поэтому мы выпустили Datastore API. Он синхронизируем не файлы, а данные, чем-то похож на удаленную NoSQL базу данных с кешированием.
Indoor навигация с iBeacon в iOS7
— Почему iBeacon может быть самой важной функцией iOS7.
— iBeacon откроет новую эру локационных приложений.
— Как iBeacon может убить NFC.
— iBeacon и будущее мобильных платежей.
По словам журналистов это супер технологиях, которая изменит рынок мобильных платежей, indoor навигации, привычки покупателей и заодно убьет NFC.
Под катом я расскажу что такое iBeacon на самом деле, как его можно использовать и покажу пример приложения для навигации по нашему офису.
iOS 7 и Xamarin
Xamarin подготовил обширную документацию (на английском), чтобы помочь разобраться с чего начать.
- Подробное введение в новые iOS 7 API.
- Обзор изменений в пользовательском интерфейсе.
- Примеры кода.
- Вебинар 26 сентября о новых API, подходе к дизайну, физичесом движке UIKit, многозадачности и других изменения в iOS 7.
Под катом Мигель рассказывает о самых интересных, на его взгляд, изменениях в iOS 7 API с ссылками на примеры кода.
Как устроены продажи в мобильной студии
Меня зовут Дима, мне 21 год. В Тач Инстинкт я пришел год и три месяца назад на позицию менеджера по продажам. Приходил еще будучи студентом, просто попробовать и, возможно, сделать свою последнюю попытку в качестве продажника. До этого я много где пытался продавать: я продавал курсы ЕГЭ, катаясь по школам; продавал лицензии на строительство, обзванивая по холодной базе город Сочи. В своё время я даже вписался в мутную МЛМ историю.
Под катом dmitrykostin расскажет как устроен отдел продаж в нашей компании: CRM, планирование и отчеты.