TECHMAS – Блог о мобильной разработке и интернет продвижении http://techmas.ru/blog TECHMAS – Актуальная и полезная информация о разработке мобильных приложений для различных устройств на iOS и Android. Статьи, технологии, решения, советы. Thu, 01 Jun 2017 10:40:52 +0000 ru-RU hourly 1 https://wordpress.org/?v=4.4.14 База знаний Android-разработчика http://techmas.ru/blog/baza-znaniy-android-razrabotchika/ http://techmas.ru/blog/baza-znaniy-android-razrabotchika/#respond Wed, 31 May 2017 13:49:31 +0000 http://techmas.ru/blog/?p=216

Автор статьи: Алексей Быков, Android-разработчик компании Techmas.

Если Вы начинающий специалист в области Android-разработки, обладаете определенными знаниями и планируете в скором времени устраиваться на работу, то этот материал для вас. К данной статье вы будете возвращаться по мере накопления опыта, смотреть на каком этапе в данный момент находитесь и что необходимо изучать дальше.

 

Начало пути

Мне довелось поработать в сфере системного администрирования более двух лет, после чего я понял, что мне необходимо сделать акцент на профессиональном развитии и идти дальше. Мой интерес к технологиям рос и я остановился на программировании, а именно, на языке Java. Я начал изучение Java SE с нуля. По плану было полное погружение в Java SE , а после в Java EE. После запуска обычного проекта на Android «Hello World» в середине изучения Java SE, мои взгляды на будущее сильно поменялись. Весь путь от первого «погружения» в программу до предложения о работе занял 1 год.

На чем остановить свой выбор?

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

Языки программирования для Android

1. Официально Google предоставил два варианта:

  • Android SDK. Официальные языки — Java и Kotlin.
    Большинство существующих проектов написаны на Java.
    Kotlin является внуком Java. Некоторые разработчики стали активно использовать его в своих проектах. Но их не так много, по сравнению с Java.
    Android официально стал поддерживать Kotlin с мая 2017 года, возможности языка будут встроены в Android Studio 3.0.
  • Android NDK. Официальные языки C/C++.
    Сам Google рекомендует использовать NDK в тех случаях, когда требуется максимальная производительность. Для примера: в одном из наших проектов мы использовали NDK для организации голосовой связи.

2. Кросс-платформенные инструменты. Их использование является менее популярным, чем нативная разработка.

Начало изучения Android

Не стоит спешить с выбором, касающегося кросс-платформенных инструментов или Kotlin.

C помощью кросс-платформенных инструментов можно разрабатывать сразу и под Android и iOS. Они способны решать определённый спектр задач, но по гибкости никогда не сравнятся с нативными решениями. Более того, такие специалисты не сильно востребованы на рынке труда.

Что касается Kotlin, на сегодняшний день нет компаний, у которых абсолютно все Android-проекты написаны на нём. Я думаю, Kotlin стоит изучать только после трудоустройства.

Рекомендую начинать обучение с Java, особенно в том случае, если у вас нет опыта в программировании.

Изучение Java

  • Типы данных. (Примитивные и ссылочные)
  • Циклы(for/while/for each)
  • Устройство памяти в Java(Stack, Heap). Так же важно понимать, как и на каком уровне работает Garbarage collector
  • Методы — возвращаемые/не возвращаемые
  • Массивы и коллекции, а так же операции с ними (Сортировки)
  • ООП (Полиморфизм, Наследование, Инкапсуляция, Абстракция)
  • Comparator и Comparable (для сортировки объектов)
  • Threads и Runnable, для понимания, как устроена многопоточность в Java.
  • Exceptions (try/catch/finnaly) — для «отлова» ошибок
  • Generics (Обобщенные типы)

Собеседования я проходил именно с этим списком.
На мой взгляд, этого более чем достаточно.

В сети есть множество хороших ресурсов для изучения Java и Android. Я затрону только те, по которым занимался сам.

1. JavaRush

Самым первым ресурсом для обучения стал JavaRush. Мне кажется, достаточно будет пройти бесплатный курс «Java Syntax», который состоит из 10 уровней.

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

2. Java Core от Ивана Головоча

Параллельно с JavaRush также смотрел видео-лекции Ивана Головоча, которые на мой взгляд являются самыми лучшими по Java в рунете. Мало кто в наше время способен делать хорошо одновременно две вещи: программировать, и объяснять, как программировать. Именно эти лекции помогут закрепить полученные знания на JavaRush. Лекции по Javа Сore советую смотреть полностью.

Изучаем Android

  • XML — верстать интерфейсы придется именно на нем
  • Activity/Fragments — «формы» для расположения UI. Необходимо знать их отличия, жизненные циклы, манипуляции с данными (onActivityresult)
  • Intents — передача данных между Activity, открытие сторонних приложений
  • Bundle — передача данных между Fragments, сохранение состояния экрана
  • Базовые адаптеры для ViewPager, RecyclerView, Spinner
  • NavigationView — Навигационное меню «Шторка»
  • Dialog, DialogFragment— Диалоговые окна (например, с текстом и кнопками «Да», «Нет»)
  • AsyncTask — Многопоточность в Android
  • SharedPreferenses — Для сохранения настроек и небольших данных
  • Service — Выполнение длительных операций в фоновом режиме
  • SQLite — База данных. Теряет свою популярность, так же почти во всех новых проектах используют ORM. Но в старых проектах точно будете встречать
  • Работа с ресурсами: string, color, styles, dimens, animations
  • Manifest файл, permissions — Описание компонентов приложения и разрешения

Собеседования я проходил без знаний Dialog/DialogFragment и Service

1. Udacity:Android Basics

1
После окончания вводного курса по Android, желание программировать сильно увеличилось. В курсе максимально понятно объясняется базовая концепция разработки под Android. После этого курса я написал свое первое приложение — генератор паролей, с сохранением состояния экрана при переворотах.

2. Видео-лекции StartAndroid
Неплохим дополнением к Udacity стали бесплатные видео-лекции от ресурса StartAndroid.

Не рекомендую смотреть старые уроки (2012-2013 год), так как сейчас эта информация уже не актуальна, а технологии ушли далеко вперед. С начала 2015 года информация включает в себя все нововведения и технологии за последние несколько лет. Кроме этого уроки есть в текстовом формате.

3. Блог Александра Климова

Актуален в настоящий момент. Некоторые материалы до сих пор просматриваю в данном блоге. Каждая тема осваивается на практическом примере с подробным объяснением.

4. Devcolibri — Full Android Application
После прохождения курса от Udacity, появилась идея начать писать свое первое тестовое приложение. После недолгих поисков, нашёл хороший курс от Devcolibri, где объяснялась концепция разработки на примере написания простейшего таск-менеджера. Смотря этот курс, я параллельно начал делать свое приложение, подхватывая различные полезные советы из урока.

Технологии и инструменты для Android Junior

В сообществе Android-разработчиков в Telegram, появился вопрос на эту тему. Мой ответ оценили как слишком завышенный по требованиям к Junior. (Я описал Retrofit2 в связке с RxJava, так же Dagger2, EventBus, Realm и Picasso). Стоит отметить, что уровень требований к Android Junior почти во всех студиях разный. Кого-то берут на работу и с начальными знаниями Android, без технологий в принципе. Но это редкость, и я не был в числе этих счастливчиков. Чем больше вы знаете — тем выше ваши шансы на трудоустройство.

Обо всем по порядку:

1. Git

git
Это система контроля версий кода. Позволяет активно работать в команде, отслеживать изменения в коде и откатываться на предыдущие версии, что очень удобно. Советую пройти хороший курс от GeekBrains. В качестве Git-клиента, рекомендую использовать SourceTree, т.к. он полностью бесплатен и удобен, а студии очень любят экономить на ПО.

2. ButterKnife
Удобная библиотека для объявления view-элементов из XML. (И не только). Изучается очень быстро и сокращает определённое количество рутинного кода.

3. Retrofit2, RxJava, RxAndroid, OkHttp Loging InterCeptor
Retrofit2REST-клиент
RxJava модуль реактивного программирования на Java
RxAndroid модуль реактивного программирования на Android
OkHttp Loging InterCeptor модуль для логирования HTTP-запросов (часть библиотеки OkHttp)
Достаточно знать основы работы в этой связке. (Например, уметь распарсить JSON с данными)

Не стоит с самого начала копать RxJava глубоко. Значительная часть Android-разработчиков использует её исключительно в связке с Retrofit2.

1. Изучаем Retrofit 2
2. Retrofit2: Загружаем файлы на сервер
3. Retrofit2 + RxJava + RxAndroidRetrofit2 + RxJava + RxAndroid
4. Dagger2
Библиотека для внедрения зависимостей. Достаточно так же знать основы, а именно — как внедрять самые простые зависимости.

1. Dagger 2 и структура приложения для Android
2. Основы Dagger2
3. Dagger 2. Лечим зависимости по методике Google

Чат в Telegram: @dagger_2

5. Realm

realm
База данных. По некоторым параметрам она быстрее чем SQLite. Правда, в продакшн-проектах используется до сих пор не так часто, т.к. stable-версия вышла относительно недавно. Но, на мой взгляд, будущее локального хранения данных на Android именно за Realm. Достаточно посмотреть её на абстрактном уровне — разобрать базовые транзакции.

Сравнительная характеристика ORM и баз данных

6. Picasso
Библиотека для работы с изображениями. Чаще всего, используется для загрузки изображений с сети. Максимально проста в использовании.

7. EventBus
Библиотека для отправки сообщений. Не стоит применять её часто, т.к. код с EventBus очень трудно поддерживать в дальнейшем.

Практика

Как правило, у кандидатов с уже имеющимися приложениями на GitHub шансы на трудоустройство выше. (Особенно, если в них применены все технологии, которые я описал).

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

При этом, если у пользователя нет интернета — последние актуальные данные загружаются из базы данных. Если вы не нашли подходящую для себя API — не беда, сформируйте несколько JSON-файлов на данном ресурсе и используйте их. Смотреть будут не на полезность вашего приложения для мира, а на то, как вы его реализовали.

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

Моя самая главная ошибка в процессе разработки этого приложения — я пытался всё сделать идеально. По стандартам, чтобы мой код хорошо оценили. Обладая очень абстрактными знаниями по MVP, я попытался встроить его в проект, тем самым, ещё сильнее запутав свой код.

Сделать своё первое приложение идеально не получится, как бы вы не пытались. Мне кажется, что не стоит в своем первом проекте использовать MVP, если не хотите ещё больше запутать самого себя. (В дальнейшем, уже после трудоустройства — однозначно стоит).

Во время разработки, у вас может возникнуть много вопросов. Не беда, если у вас нет знакомых Android-разработчиков. Смело задавайте свои вопросы на StackOverFlow (можно на русском языке). Также, вопросы можно задавать в каналах Telegram.

  • Start Android Ru Chat
    @startandroidchat
  • Start Android Ru Channel
    @startandroid
  • Android Developers — русскоговорящее сообщество
    @android_ru
  • Mobile Dev Jobs — вакансии и аналитика
    @mobile_jobs
  • Android Architecture — обсуждение архитектуры приложений
    @Android_Architecture
  • Android Architecture — Summary (Сводка обсуждений с чата Android Architecture)
    @Android_Architecture_Summary
  • Dagger2
    @dagger_2
  • ReactiveX — русскоговорящее сообщество (Rx)
    @reactivex
  • Moxy – MVP библиотека под Android (рекомендую читать только после трудоустройства)
    @moxy_ru
  • Android NDK (C++) — русскоговорящее сообщество
    @ndk_ru
  • Android Arsenal (библиотеки для Android)
    @androidarsenal
  • Android ResId (новости и ресурсы по Android)
    @AndrResIdFb.

Интервью с работодателем и итоги

Если говорить о вопросах на собеседованиях, то в целом, у всех студий свои взгляды на этот счёт.
В большинстве случаев спрашивают и по Java, и по Android SDK и по технологиям. Но иногда встречаются места, где просят просто показать пример своего рабочего кода и спрашивают, а почему вот здесь вы сделали именно вот так. Готовым нужно быть и к первому и ко второму.

В нашей компании, я делю техническую часть первичного интервью с кандидатами на 3 этапа:

1) Вопросы по Java Core и ООП (см. Изучаем Java)
2) Вопросы по Android SDK (см. Изучаем Android)
3) Вопросы по технологиям и инструментам (см. Технологии и инструменты)

На втором этапе собеседования, как правило, даётся небольшое техническое задание, или же анализируется существующий код.

В 80% случаев, интервьюеры задают одни и те же вопросы по Java.

Надеюсь, мой личный опыт и наблюдения могут быть полезными для начинающих Android-разработчиков. В следующей статье, мы разберём подробно самые популярные вопросы на собеседованиях по Android SDK и таким технологиям, как Dagger2, Retrofit2, RxJava и Realm.

]]>
http://techmas.ru/blog/baza-znaniy-android-razrabotchika/feed/ 0
Работа с HealthKit. Часть 2 http://techmas.ru/blog/rabota-s-healthkit-chast-2/ http://techmas.ru/blog/rabota-s-healthkit-chast-2/#respond Thu, 04 Feb 2016 13:14:34 +0000 http://techmas.ru/blog/?p=196 разработка приложений для HealthKit часть 2

Конец и начало года у разработчиков, как правило, всегда наполнены большим количеством проектов. Разобравшись со срочными делами и закатав повыше рукава, мы пообещали себе делиться еще бОльшим количеством своих разработок с вами.

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

Введение

Напомним, ранее мы сделали обзор общего функционала HealthKit, рассмотрели приложение для аутентификации в Health и вывода характеристик (characteristics) пользователя. Сейчас давайте разберемся с выборками (samples) для чтения и записи новых данных по тренировкам.

Выборки (samples) отличаются от характеристик (characteristics) тем, что они меняются с течением времени и зависят от поведения пользователя. Например, выборки используются для добавления новых данных по тренировкам, их визуализации, определения и расчета дополнительных параметров.

В примере будет показано как считывать данные по росту и весу пользователя из приложения Health. Далее по ним рассчитаем показатель BMI (индекс массы тела) и добавим полученное значение для отслеживания динамики его изменения.

разработка приложений для HealthKit часть 2

Итак, вернемся к приложению из предыдущей части. Его код находится здесь.

Подготовка выборки

Создадим тестовые данные для выборки в приложение Health.

Для этого выберем на закладке Body Measurements пункт Weight и внесем несколько ключевых точек с информацией о весе (weight) через Add Data Point.

разработка приложений для HealthKit часть 2

Данные можно вводить какие угодно и сколько угодно за разные промежутки времени.

Теперь получим разрешение работы с параметрами выборки. Добавим в функцию авторизации authorizeHealthKit() (отдельно мы говорили об авторизации ранее):

let healthKitTypesToWrite = Set(arrayLiteral:
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)!,
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!,
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!
)

 

Чтение выборки из Health

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

Для получения выборки необходимо использовать подкласс HKSampleQuery, который наследуется от HKQuery. По сути, он работает аналогично NSFetchedRequest в Core Data.

При формировании запроса доступны параметры:
1. Тип выборки (например, вес или рост), Type.
2. Условия выделения выборки (период, значения, пр.), NSPredicate.
3. Метод сортировки, NSSortDescriptors.

Второй и третий параметры задаются опционально. После формирования запроса необходимо выполнить executeQuery() для вывода его результата.

В нашем примере создадим метод получения последнего значения для указанного типа выборки. Добавим следующий код в функцию readMostRecentSample():

// 1. Подготовим параметры периода
let past = NSDate.distantPast()
let now = NSDate()
let mostRecentPredicate = HKQuery.predicateForSamplesWithStartDate(past, endDate:now, options:
.None)

// 2. Зададим значение сортировки в обратном порядке 
let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: false)

// 3. Ограничим вывод одним значением
let limit = 1

// 4. Выполним построение запроса
let sampleQuery = HKSampleQuery
(sampleType: sampleType, predicate: mostRecentPredicate,
limit: limit, sortDescriptors: [sortDescriptor])
    { (sampleQuery, results, error ) -> Void in
        
        if let queryError = error {
            completion(nil,error)
            return;
        }
        
        // Выделим крайнее значение
        let mostRecentSample = results!.first as? HKQuantitySample
        
        if completion != nil {
            completion(mostRecentSample,nil)
        }
}

// 5. Выполним сам запрос
self.healthKitStore.executeQuery(sampleQuery)

Наша функция позволяет получать последние данные по выборкам определенного типа. Для простоты, вызов readMostRecentSample() добавим в метод viewDidLoad():

// 1. Подготовка параметра HKSampleType для определения веса
let sampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)

// 2. Вызов функции для выделения крайнего значения
self.readMostRecentSample(sampleType!, completion: { (mostRecentWeight, error) -> Void in
    
    if( error != nil )
    {
        print("Error reading weight from HealthKit Store: \(error.localizedDescription)")
        return;
    }

Здесь мы используем quantityTypeForIdentifier для определения необходимой выборки, в нашем случае это HKQuantityTypeIdentifierBodyMass.

Расчет значения BMI

Теперь создадим набор для расчета и записи BMI. Он будет рассчитываться по формуле:

bmi = weight / height ^ 2

Как было показано выше, выделяем значение веса (weight) из Health. Таким же образом мы получим рост (height) пользователя (заменив тип данных и формат, используем HKQuantityTypeIdentifierHeight).

Здесь нам понадобится объект HKQuantitySample. Также необходимо указать:

• Тип объекта HKQuantityType для сохранения. В нашем случае это HKQuantityTypeIdentifierBodyMassIndex.
• Объект HKQuantity. Он инициализируется с передаваемым значением из параметра bmi. Важно, что для преобразования скалярного типа Double используется HKUnit.countUnit(), который позволяет конвертировать типы в необходимые единицы измерения.

Тогда расчет BMI будет выглядеть следующим образом:

var weight: HKQuantitySample
var weightLocalizedString = “empty"

weight = (mostRecentWeight as? HKQuantitySample)!;
kilograms = weight.quantity.doubleValueForUnit(HKUnit.gramUnitWithMetricPrefix(.Kilo))
let weightFormatter = NSMassFormatter()
weightFormatter.forPersonMassUse = true;
weightLocalizedString = weightFormatter.stringFromKilograms(kilograms)

print(weightLocalizedString)

let weightInKilograms = kilograms
let heightInMeters: Double = 180

let bmi  = weightInKilograms / heightInMeters * heightInMeters

print(String(format: "%.02f", bmi))

Также отметим использование форматирование результатов с помощью NSMassFormatter. Сам NSMassFormater, в сущности, не является частью HelathKit, но позволяет работать с типами данных Health. В частности, если в приложение используются килограммы, а устройство не использует метрическую систему, мы имеем возможность привести единицы измерения к нужному виду.

Мы не будем останавливаться на вопросах интерфейса, поэтому результаты выведем в консоль.

Добавление новой выборки в Health

Наконец, для записи полученного значения BMI в HelathKit создадим метод saveBMISample(bmi:Double, date:NSDate). Выходные параметры: само значение BMI и дата его регистрации.

// 1. Создадим выборку BMI
let bmiType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex)
let bmiQuantity = HKQuantity(unit: HKUnit.countUnit(), doubleValue: bmi)
let bmiSample = HKQuantitySample(type: bmiType, quantity: bmiQuantity, startDate:
date, endDate: date)

// 2. Сохраним выборку в Health
healthKitStore.saveObject(bmiSample, withCompletion: { (success, error) -> Void in
if( error != nil ) {
  println("Error saving BMI sample: \(error.localizedDescription)")
} else {
  println("BMI sample saved successfully!")
}
})

Новое значение BMI доступно как для стандартного просмотра, так и может быть использовано сторонним авторизованным приложением.

Примечание

На практике все методы для работы c HealthKit имеет смысл вынести в отдельный класс.
Для нашего примера мы ограничились лишь демонстрацией ключевых этапов работы с платформой.

Код конечного приложения находится здесь.

]]>
http://techmas.ru/blog/rabota-s-healthkit-chast-2/feed/ 0
Работа с HealthKit. Часть 1. http://techmas.ru/blog/rabota-s-healthkit-chast-1/ http://techmas.ru/blog/rabota-s-healthkit-chast-1/#respond Wed, 18 Nov 2015 09:44:06 +0000 http://techmas.ru/blog/?p=157 Health Kit

В этом цикле статей сотрудники Techmas поделятся опытом работы с HealthKit и созданием приложений для фитнеса. Первая часть является вводной по технологии и рассматривает приложение, которое выбирает персональные данные из Health.

Платформа HealthKit была представлена компанией Apple в iOS 8. Она представляет собой API для сторонних приложений, который позволяет собирать и использовать информацию о состояние здоровья пользователя. HealthKit включает в себя предустановленное по умолчанию на iOS8 и iOS9 приложение Health, отображающее все имеющиеся данные: физическая нагрузка, питание, давление, калории, время сна и прочие персональные характеристики.

Сразу после запуска платформы разработчики столкнулись с рядом проблем, которые привели к временному запрету на интеграцию. Сейчас все исправлено и отложено, а приложений в AppStore с использованием HealthKit становится все больше.

Общие сведения

Общие сведения о HealthKit

Итак, HealthKit является агрегатом с интерфейсом для доступа ко всей информации:
Преимущества его использования для разработчиков приложений:
— HealthKit служит общим хранилищем данных для разных приложений. Например, для подсчета количества шагов пользователи могут использовать как разные приложения, так и разные устройства. При установке каждого нового приложения история будет сохраняться.
— Разные приложения могут обмениваться данными друг с другом без использования дополнительных интеграционных решений. Вся информация доступна в приложение Health.
— HealthKit дает возможность для настройки отдельных прав каждому приложению по определенным показателям.
— Расширения функционала приложений за счет использования дополнительных данных о здоровье от сторонних приложений.

Отметим, что HealthKit и приложение Health пока недоступны для iPad.

Немного теории

Сам HealthKit представляет собой иерархию неизменяемых классов, наследуемых от абстрактного класса HKObject.

Каждый объект имеет свойства:

— UUID. Уникальный идентификатор записи.
— Source. Источник данных (может быть как устройство, так и приложение).
— Metadata. Дополнительные данные о записи. Предоставляет собой словарь, содержащий как предопределенные, так и пользовательские ключи.

Объекты в HealthKit могут быть двух типов: характеристики (characteristics) и выборки (samples). Характеристики представляют собой данные, которые не изменяются со временем: пол, дата рождения, группа кровь. Сторонние приложения не могут изменять эти данные. Выборки же доступны для добавления новых данных. Они собой объекты классов, наследуемых от HKSample и имеют следующие свойства:

— Type. Тип выборки: количество шагов, время сна, пр.
— Start time. Начало времени выборки.
— End time. Конец времени расчета выборки. Если выборка в моменте, то значение совпадает с началом времени.

Пример приложения

В статье ниже мы рассмотрим создание приложения, которое запрашивает об использовании данных HealthKit и выводит данные по характеристикам пользователя.

ПРАВА НА ИСПОЛЬЗОВАНИЕ HEALTHKIT

Использовать HealthKit могут только те приложения, для которых использование HealthKit APIs является основным функционалом. Например, приложение для органайзера и ведения записей не будет отображать данные о состояние здоровья. Кроме этого, есть и ряд других ограничений:

— Данные о здоровье не могут быть использованы в рекламных целях. При этом сами приложения с HealthKit могут использовать рекламные блоки и зарабатывать на объявлениях.
— Приложение может делиться информацией, полученной из HealthKit, только в с разрешения пользователя и только с тем приложением, которое также использует и авторизовано HealthKit.

Другие ограничения доступны на сайте Apple.

Теперь добавим HealthKit в тестовое приложение. Для этого, во-первых, добавим расширение для HealthKit в настройках проекта:

Добавление HealthKit в приложение

Важно, что в App ID должно сдержать строку HealthKit, иначе опция будет недоступна.

Далее добавим разрешение пользователя на использование пользовательских данных о состояние здоровья.

Импортируем расширение для использования HealthKit:

import HealthKit

Теперь необходимо определить объект класса HKHealthStore, который является одним из основных в HealthKit. HealthKit Store позволяет получить права на доступ к данным HealthKit, возможность считывать характеристики и записывать новые выборки:

let healthKitStore: HKHealthStore = HKHealthStore()

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

Создадим функцию:

 authorizeHealthKit(completion: ((success:Bool, error:NSError!) -> Void)!)

 

В ней определим данные для чтения и записи.

Данные для чтения (характеристики):


let healthKitTypesToRead = Set(arrayLiteral:
    HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth)!,
    HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex)!
)

Данные для чтения и записи (выборки):

let healthKitTypesToWrite = Set(arrayLiteral:
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!,
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!
)

Кроме этого, добавим проверку на использование HKHealthStore на устройстве (на данный момент HealthKit недоступен на iPad):

if !HKHealthStore.isHealthDataAvailable()
{
    let error = NSError(domain: "ru.techmas.techmasHealthKit", code: 2, userInfo:
[NSLocalizedDescriptionKey:"HealthKit is not available in this Device"])
    if( completion != nil )
    {
        completion(success:false, error:error)
    }
    return;
}

Наконец, запросим авторизацию передав в параметрах два набора с типами Set<HKSampleType> и Set<HKObjectType> для чтения и записи соответственно:

healthKitStore.requestAuthorizationToShareTypes
healthKitTypesToWrite, readTypes: healthKitTypesToRead) {
    (success, error) -> Void in
    if( completion != nil )
    {
        completion(success:success,error:error)
    }
}

Добавим вызов функции в viewDidLoad():

authorizeHealthKit { (authorized,  error) -> Void in
if authorized {
    print("HealthKit authorization received.")
}
else
{
    print("HealthKit authorization denied!")
    if error != nil {
        print("\(error)")
    }
}

 

При запуске приложения будет доступно окно:

Health Access

Чтение характеристик

Следующим шагом получим характеристики. Добавим пол и возраст в приложение Health:

Приложение Health

Создадим функцию readProfile(). Ее код приведен ниже:


func readProfile() -> (age:NSDate?, bioSex:HKBiologicalSexObject?)
{
    // Reading Characteristics
    var bioSex : HKBiologicalSexObject?
    var dateOfBirth : NSDate?
    
    do {
        dateOfBirth = try healthKitStore.dateOfBirth()
        bioSex = try healthKitStore.biologicalSex()
    }
    catch {
        print(error)
    }
    return (dateOfBirth, bioSex)
}

Для доступа к характеристикам мы воспользовались созданным объектом healthKitStore.
Возможные идентификаторы и их типы для получения характеристик доступы в документации по ссылке.

Теперь используя следующее обращение мы получаем набор характеристик пользователя:

let profile = readProfile()

Код примера доступен в git.

В следующих статьях мы отдельно опишем способы получения выборок и добавления данных по тренировкам.

 

 

]]>
http://techmas.ru/blog/rabota-s-healthkit-chast-1/feed/ 0
Что маркетологам нужно знать об Apple Watch http://techmas.ru/blog/chto-marketologam-nuzhno-znat-ob-apple-watch/ http://techmas.ru/blog/chto-marketologam-nuzhno-znat-ob-apple-watch/#respond Mon, 24 Aug 2015 09:24:27 +0000 http://techmas.ru/blog/?p=146 Что маркетологам нужно знать об Apple Watch

4 способа применения «умных» часов для продвижения бренда.

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

Долгожданная новинка от Apple уже вышла на рынок западных стран и с 31 июля официально продается в России. Как и у всех яблочных продуктов, ожидание, внешний вид и цена часов на высшем уровне. Уже сейчас понятно, что, несмотря на заявления критиков о выходе сырого продукта, сомневаться в его будущей популярности не приходится.

Отметим, что для работы часов рядом должен находиться iPhone (5, 5c, 5s, 6), который отвечает за исполнение логики приложений. При этом на недавней конференции WDCC в Сан-Франциско были анонсированы изменения в операционной системе часов, которые позволят вести нативную разработку на самом устройстве, обеспечив скорость загрузки элементов приложений и прямой доступ к функционалу. Всего вышло 3 вида часов: Apple Watch, Apple Sport, Apple Edition. Все гаджеты имеют одинаковый набор функций (в частности, встроенный механизм для мониторинга активности) и отличаются лишь размером экрана и оформлением.

Что означает выход новых часов на рынок для рекламодателей? Мы выделяем четыре наиболее интересных варианта использования Apple Watch, которые могут внести свои коррективы в привычный арсенал маркетолога.

1. Новые приложения

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

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

Финансовые организации

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

Что маркетологам нужно знать об Apple Watch

Прототип приложения для банков от компании Techmas

Первыми в мире свое приложение сделали в Citibank. По словам директора по маркетингу и цифровым технологиям Citibank Хезер Кокс (Heather Cox), они сумели осуществить разработку и релиз продукта всего за 120 дней, а решение запустить проект объясняется стремлением соответствовать потребительским предпочтениям, эволюционировавшим в сторону стремления к максимальной доступности данных. За Citi последовали Commonwealth Bank of Australia, Westpac, ING и многие другие.

В России приложение для часов уже есть у «Альфа-Банка» и «Рокетбанка».

Что маркетологам нужно знать об Apple Watch

Приложение «Альфа-Банка» для Apple Watch (скриншот appleinsider.ru)

Что маркетологам нужно знать об Apple Watch

Приложение «Рокетбанка» для Apple Watch (скриншот appleinsider.ru)

Авиакомпании

В авиационной отрасли приложения для Apple Watch уже де-факто стали стандартом. New Zealand Airlines, Emirates, American Airlines, Easyjet, British Airways, Delta, Air Canada, AirFrance, Japan Airlines – это далеко не полный список компаний, которые уже выпустили свои программные решения.

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

Что маркетологам нужно знать об Apple Watch

British Airways

Что маркетологам нужно знать об Apple Watch

Air France

Путешествия и туризм

С XIX века сначала механические, а затем и электронные наручные часы были неотъемлемыми спутниками человека во время путешествий. А вот умные часы обещают стать универсальным помощником путешественника, решающим большинство его проблем несколькими прикосновениями. И самые дальновидные бренды борются за то, чтобы находиться по другую сторону этих прикосновений.

Гостиничный бизнес с готовностью ухватился за возможность повысить лояльность своих гостей. Крупные сети отелей, такие как Marriott International и Starwood, выпустили свои приложения, позволяющие пройти регистрацию и получить информацию о бронировании, а в некоторых случаях Apple Watch и вовсе можно использовать вместо электронного ключа.

Не отстают и туристические сервисы, для которых приложение является естественным развитием продукта. TripAdvisor помогает найти близлежащие к пользователю рестораны, достопримечательности и развлечения. Схожий функционал у Booking, который позволяет забронировать отель буквально одним кликом.

Что маркетологам нужно знать об Apple Watch

Приложение Booking

Что маркетологам нужно знать об Apple Watch

Приложение Marriott International

В России оперативно выпустили свое решение в Aviasales. График изменения цены, текущая стоимость, уникальное предложение доступны любому пользователю, указавшему свой любимый маршрут.

Что маркетологам нужно знать об Apple Watch

Приложение Aviasales

2. Социальные медиа

Как правило, покупатели продукции Apple являются активными пользователями социальных сетей. Нет сомнений в том, что Twitter и Facebook, которые постоянно находятся на руке, станут еще более мощными инструментами донесения бренда до покупателя.

Что маркетологам нужно знать об Apple WatchНа данный момент социальные гиганты не объявили о своих планах для рекламодателей по отображению объявлений на часах. Это вполне объяснимо тем, что предложения о покупках на руке будет вызывать сильное отторжение у пользователей. Однако даже уведомления о новых постах в тематических группах или мероприятиях являются одновременно и мощным маркетинговым каналом, и удобным способом для отслеживания полезного контента. Таким образом, ведение бренда в социальных медиа становится еще более значимым и эффективным инструментом продвижения.

3. Геолокация / iBeacons

Что маркетологам нужно знать об Apple WatchКарты и навигация давно стали повседневным инструментом маркетолога. Более того, такие приложения, как Uber, положили их в основу своего продукта. Они же первыми поддержали новый формат: теперь вы можете вызвать такси, даже если руки заняты покупками.

Что маркетологам нужно знать об Apple Watch

Bluetooth-метки – следующее поколение локационных решений. Суть технологии состоит в использовании небольших маячков размером с пуговицу для навигации внутри помещений. Эти маячки отправляют незашифрованный сигнал со своим id. Мобильные приложения в фоновом режиме могут отлеживать такие сигналы и записывать их последовательность.

Экспонаты на выставках, способные отправлять сообщения пользователю, точная навигация во время проведения массовых мероприятий, виртуальные ассистенты в магазинах – все это не предмет дискуссий, а реальность сегодняшнего дня. Добавляя к этому Apple Watch, рекламодатели могут добиться еще большего отклика и повысить конверсию кампаний.

Пассажиры премиум-класса, пользующиеся залом ожидания British Airways в Терминале 5 лондонского аэропорта Хитроу, при приближении к BLE маяку авиакомпании увидят на своих часах уведомление с приветствием и информацией о пребывании в зоне эксклюзивного обслуживания.

В компании Marsh пошли дальше: в 75 супермаркетах сети посетители получают интерактивные уведомления по мере своего продвижения по отделам и могут контролировать исполнение своего списка покупок.Что маркетологам нужно знать об Apple Watch

4. Мониторинг здоровья

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

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

С момента выхода iPad, Apple Watch является самым ярким и ожидаемым продуктом от легендарной американской компании. Помимо рассмотренных вариантов, у часов есть ряд других функций, которые могут быть успешно внедрены в маркетинге продуктов и услуг (Apple Pay, голосовое управление Siri). В результате мы получим новый уровень интерактивности, который позволит брендам воздействовать не только на желания и эмоции потребителей, но и физически взаимодействовать с ними.

]]>
http://techmas.ru/blog/chto-marketologam-nuzhno-znat-ob-apple-watch/feed/ 0
Пример работы с технологией iBeacon с помощью Swift http://techmas.ru/blog/primer-rabotyi-s-tehnologiey-ibeacon-s-pomoshhyu-swift/ http://techmas.ru/blog/primer-rabotyi-s-tehnologiey-ibeacon-s-pomoshhyu-swift/#respond Thu, 20 Aug 2015 08:14:04 +0000 http://techmas.ru/blog/?p=122 Пример работы с технологией iBeacon с помощью SwiftУчитывая возрастающий интерес к использованию Bluetooth маячков в различных областях начиная от чипирования животных, навигации в музейной экспозиции и заканчивая наиболее востребованной функцией уведомлений по акциям в магазинах, мы в Techmas подготовили введение для их внедрения на практике. Возможно, кому-нибудь из разработчиков, кто только планирует создавать свои приложения и еще не знает с чего начать, инструкция ниже поможет разобраться с основными понятиями и возможностями технологии. Несмотря на то, что уже существует набор SDK для работы с маячками, мы используем только Swift и библиотеки CoreLocation и CoreBluetooth.

Пример работы с технологией iBeacon с помощью Swift 02Начнем с теории по самой технологии. В конце 2014 года Bluetooth Special Interest Group (SIG) выпустила спецификацию Bluetooth v4.2 (Bluetooth Low Energy, BLE).

Следуя описанию, мы имеем сигнал размером в 31 байт в виде пакета Scan Response Data. Этот пакет делится на так называемые AD структуры, которые представляют собой последовательности байтов различных предопределенных размеров. Принимая во внимание, что 16 байт из этого пакета должно уходить на 128 битный UUID устройства, большое количество данных с одного маячка получить нельзя.

Стандарт iBeacon был представлен компанией Apple в 2013 году. В нем сигнал BLE содержит MAC адрес и две AD структуры. Тогда как первая AD структура содержит общую информацию, вторая имеет непосредственное отношение к iBeacon. Рассмотрим ее подробнее.

Первый байт содержит информацию о длине структуры в 26 байт (0x1A), следом один байт на тип, который указывает принадлежность к производителю. Далее идет идентификатор компании Apple (0xFF). Следующие два байта на индикаторы маячка, которые всегда равны 0x02 и 0x15 (по одному байту на каждый). Как мы писали выше, на UUID устройства уходит 16 байт. Итого для полей Major и Minor остается всего по 2 байта. Последнее поле TX Power может быть использовано для калибровки маячка (1 байт).

Общая схема пакета:
Пример работы с технологией iBeacon с помощью SwiftИзучив основные понятия, вернемся к SDK от Apple для работы с маячками и напишем простое приложение для вывода информации о ближайшем маячке.

Мы использовали маячки, купленные здесь. Они представляют собой небольшую коробочку размером 46мм*36мм*18мм:

Пример работы с технологией iBeacon с помощью Swift

Код примера можно взять в Github.

Итак, начнем с подключения необходимых библиотек:

import UIKit
import CoreLocation
import CoreBluetooth

Далее определим переменные, о назначении которых подробнее скажем позже.

var locationManager = CLLocationManager()
var region = CLBeaconRegion()

Для простоты, мы в основном будем использовать метод viewDidLoad(). В нем определим:

override func viewDidLoad() {
     super.viewDidLoad()
     locationManager.delegate = self
}

Объект region определяет область поиска маячков и позволяет ее ограничить по параметрам маячков: uuid, значением полей major и minor.

let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"), identifier: "ru.techmas.techbeacon") 

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

class ViewController: UIViewController, CLLocationManagerDelegate {

Кроме того, начиная с iOS 8 приложение должно запрашивать авторизацию для использования функций геолокации. Мы можем использовать методы locationManager.requestWhenInUseAuthorization() и locationManager.requestAlwaysAuthorization(). Они отличаются тем, что первый допускает использование геолокации только при активном окне приложения, тогда как второй предоставляет доступ в любое время.

С помощью конструктора добавляем строку в info.plist, который содержится в директории «Supporting Files»:

Пример работы с технологией iBeacon с помощью Swift

Чтобы предупреждение не возникало каждый раз, используем метод authorizationStatus() класса CLLocationManager:

if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.AuthorizedWhenInUse) {
     locationManager.requestWhenInUseAuthorization()
} 

Теперь мы готовы к поиску маячков!

Добавляем вызов метода поиска:

locationManager.startRangingBeaconsInRegion(region)

Для отображения информации о найденных маячках определим новый метод:

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {
}

Внутри метода делегата мы имеем доступ к маячкам, которые нашел наш locationManager. Для вывода информации о них в консоль достаточно добавить строку:

println(beacons)

Попробуем вывести информацию о ближайшем маячке на экран.

Определим ближайший маячок:

let knownBeacons = beacons.filter{ $0.proximity != CLProximity.Unknown }
if (knownBeacons.count > 0) {
            let closestBeacon = knownBeacons[0] as! CLBeacon
}

Объект closestBeacon имеет поля, о которых мы упоминали выше:

  • major
  • minor
  • proximity
  • rssi
  • accuracy

Остановимся на поле proximity, которое имеет тип enum. Чтобы получить информацию в виде строки нам нужно:

var proximityString = String()
switch proximity
{
case .Near:
    proximityString = "Близко"
case .Immediate:
    proximityString = "Недалеко"
case .Far:
    proximityString = "Далеко"
case .Unknown:
    proximityString = "Unknown"
}

Полученные данные выведем на экран. Код будет выглядеть так:

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {
        println(beacons)
        
        let knownBeacons = beacons.filter{ $0.proximity != CLProximity.Unknown }
        
        if (knownBeacons.count > 0) {
            let closestBeacon = knownBeacons[0] as! CLBeacon

            major_label.text = String(stringInterpolationSegment: closestBeacon.major)
            minor_label.text = String(stringInterpolationSegment: closestBeacon.minor)
            
            let proximity = closestBeacon.proximity
            
            var proximityString = String()
            
            switch proximity
            {
            case .Near:
                proximityString = "Близко"
            case .Immediate:
                proximityString = "Недалеко"
            case .Far:
                proximityString = "Далеко"
            case .Unknown:
                proximityString = "Unknown"
            }

            proximity_label.text = proximityString
            rssi_label.text = String(closestBeacon.rssi)
            accuracy_label.text = String(stringInterpolationSegment: closestBeacon.accuracy)
        }
        
} 

Наше приложение будет иметь вид:

Пример работы с технологией iBeacon с помощью Swift

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

]]>
http://techmas.ru/blog/primer-rabotyi-s-tehnologiey-ibeacon-s-pomoshhyu-swift/feed/ 0
Наиболее распространённые и доступные способы продвижения мобильных приложений http://techmas.ru/blog/naibolee-rasprostranyonnyie-i-dostupnyie-sposobyi-prodvizheniya-mobilnyih-prilozheniy/ http://techmas.ru/blog/naibolee-rasprostranyonnyie-i-dostupnyie-sposobyi-prodvizheniya-mobilnyih-prilozheniy/#respond Mon, 13 Jul 2015 06:36:46 +0000 http://techmas.ru/blog/?p=109 Продвижение мобильных приложенийКак продвинуть мобильное приложение на рынок, используя не только возможности специализированных магазинов (Google Play, AppStore), но и дополнительные методы и каналы продвижения.

Эффективность раскрутки того или иного объекта в интернете зависит от правильного выбора направлений и методов воздействия на целевую аудиторию.

Продвижение мобильных приложений – процесс многогранный и трудоемкий. Как правило, разработчики, веб-мастера или рекламодатели используют наиболее доступный и очевидный метод – продвижение через магазины приложений. На текущий момент можно отметить две популярные площадки – это магазины AppStore и Google Play. Именно здесь приложения размещаются, раскручиваются и предлагаются потенциальным потребителям.

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

Можно выделить следующие способы продвижения мобильных приложений, при которых воздействие на пользователей осуществляется через различные каналы (так называемые внешние методы продвижения):

1) социальные сети;
2) тематические блоги;
3) форумы;
4) лэндинговые страницы;
5) контекстная реклама.

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

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

Продвижение мобильных приложений в социальных сетях

Для продвижения мобильных приложений социальные сети подходят как нельзя кстати. Это площадки, где собираются пользователи со всего мира. Чаще всего для выхода в интернет они используют свои мобильные устройства. Это означает, что данная аудитория априори заинтересована в полезных приложениях для своих телефонов и смартфонов.

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

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

 

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

Тематические блоги

С помощью блогов можно распространять информацию, содержащую описание, краткий или полный обзор мобильного приложения, пресс-релиз или презентацию. Материалы и посты можно размещать в собственном блоге компании. Но, скорей всего, этого будет недостаточно. Вам придется найти тематические площадки и обратиться к их владельцам с просьбой разместить готовую статью на своем ресурсе. Кроме этого, можно заказать владельцу блога написание обзора или пресс-релиза.

Многие блогеры размещают на своих сайтах обзоры новинок в той или иной области. Ваша задача – выбрать площадки, которые пользуются популярностью у пользователей и заслужили их доверие. Если вы продвигаете приложение для Apple, то необходимо выбирать блоги, посвященные мобильным устройствам этой компании. Для Android подойдут другие площадки. Чем более узкоспециализирован потенциальный сайт, тем более релевантную аудиторию вы сможете получить в итоге.

Форумы

Продвижение мобильных приложений на форумахТематические форумы — хороший канал для раскрутки мобильного приложения. Люди приходят сюда пообщаться, обсудить новинки в области IT-индустрии, рассказать о том, чем они пользуются или что хотели бы попробовать. Форумы – отличное место для неявной рекламы. Здесь можно ненавязчиво предложить свой продукт, используя общую тему обсуждения. Хотя некоторые площадки и допускают публикацию прямых рекламных сообщений, но, как правило, за это надо заплатить определенную сумму и такой тип продвижения на форумах не приносит существенного результата.

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

Лэндинговые страницы

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

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

Контекстная реклама

Еще один способ продвижения мобильного приложения – контекстная и медийная реклама. На сегодняшний день существует два основных канала такой рекламы – это Яндекс.Директ и Google.Adwords. Вы можете рекламировать свой продукт как, непосредственно, в результатах поиска, так и в обширной партнерской медийной сети, которая существует у обеих рекламных систем. Основные плюсы данного типа раскрутки – быстрый результат и широкий охват аудитории. О вашем продукте услышат не только пользователи поисковых систем, но и многочисленные посетители тематических сайтов. С помощью гибких инструментов настройки таргетинга и отслеживания определенных конверсий, можно оптимизировать стоимость данной рекламы. Тем не менее, нужно учитывать, что контекст — один из самых дорогих каналов продвижения.

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

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

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

]]>
http://techmas.ru/blog/naibolee-rasprostranyonnyie-i-dostupnyie-sposobyi-prodvizheniya-mobilnyih-prilozheniy/feed/ 0
Реализация push уведомлений при разработке мобильных приложений http://techmas.ru/blog/realizatsiya-push-uvedomleniy-v-mobilnyih-prilozheniyah/ http://techmas.ru/blog/realizatsiya-push-uvedomleniy-v-mobilnyih-prilozheniyah/#respond Tue, 28 Apr 2015 19:42:25 +0000 http://techmas.ru/blog/?p=85

Технология Push Notification в мобильных приложениях появилась достаточно давно. В отличие от классической модели «клиент-сервер», она подразумевает отправку сообщений от сервера к клиенту, которую инициирует не клиент, а сервер. Сам клиент же является подписчиком.

Сам термин Push Notification имеет отношение не только к области мобильных приложений. Широкую известность он получил благодаря компании Apple, которая внедрила в iOS 3 технологию Apple Push Notification Service (APNS). Справедливости ради, стоит отметить, что компания Google в ОС Android реализовала такой сервис практически на год раньше.

Ключевое преимущество Push Notification: приложение не обязательно должно быть запущено, чтобы уведомление отобразилось на экране мобильного телефона. Посредником для таких уведомлений является операционная система. Это позволяет экономить как трафик, так и заряд батареи устройства.

Рассмотрим общую схему Push Notification на примере сервиса APNS от компании Apple:

Работа уведомлений на примере APNS выполняется следующим образом:

  1. Мобильное приложение регистрируется в операционной системе для получения Push уведомлений
  2. Операционная система запрашивает у APNS токен устройства
  3. Приложение получает токен устройства от сервера APNS…
  4. …И отправляет его на сервер. В дальнейшем сервер будет пользоваться этим токеном для отправки уведомлений
  5. При наступлении определенного разработчиком события сервер отправляет Push-уведомления через APNS, используя токен(ы) устройств(а)
  6. APNS рассылает уведомления.

 

Push уведомления для основных мобильных платформ — iOS, Android, Windows Phone — различны в деталях. Так, например, все сервисы сообщают идентификаторы устройств на которые не следует рассылать уведомления (например, если приложение было удалено). Но если сервис компании Google — Google Cloud Messaging (GCM) возвращает идентификаторы таких устройств сразу же, то у APNS существует так называемый сервер обратной связи (feedback server), с которого достаточно один раз в сутки забирать список таких идентификаторов. Таких различий немало, поэтому неудивительно появление промежуточных сервисов, берущих на себя рутинную работу.

Когда же разработка мобильного приложения выполняется с помощью какого-либо кроссплатформенного решения, например, Appcelerator, то подобный промежуточный сервис чаще всего оказывается интегрированным в подобное решение. Для упомянутого выше Appcelerator таким сервисом является Appcelerator Cloud Services — ACS.

ACS предоставляет дополнительный сервис каналов (channels) уведомлений. По сути, канал является буквенно-цифровым идентификатором, объединяющим несколько устройств. Конечно, ACS предоставляет возможность отправлять Push Notification и по токену устройства.

Поскольку ACS берёт на себя рутину по обновлению информации об устройствах и взаимодействии с GCM и APNS, схема взаимодействия уже выглядит иначе.

Screen_Shot_2015-04-28_at_22.39.36

 

В разрабатываемое мобильное приложение внедряется ключ, выданный ACS. Сервер, пользуясь этим ключом, может, в частности:

  1. Получить список каналов и устройств, подписанных на эти каналы;
  2. Подписать устройства на определенные каналы (как, впрочем, и «отписать» устройства от каналов);
  3. Отправить Push-уведомления как для всех устройств, так и по определенным каналам или токенам устройств;
  4. Устройства получают уведомления от соответствующих сервисов (APNS или GCM).

Само уведомление представляет собой JSON-словарь, состоящий из токена девайса, полезной нагрузки (payload) и некоторой служебной информации. Полезная нагрузка — это собственно данные, которые будут отправляться на устройство.

В заключение стоит отметить, что Push Notification, несмотря на всю простоту и удобство, являются всё же ненадёжной технологией, т.к. доставка такого сообщения не гарантирована. Так что если ваша задача – надёжный обмен сообщениями между клиентами или между клиентами и сервером, придётся поискать какой-либо другой способ передачи информации.

]]>
http://techmas.ru/blog/realizatsiya-push-uvedomleniy-v-mobilnyih-prilozheniyah/feed/ 0
Разработка для Apple Watch (на примере приложения для банков) http://techmas.ru/blog/razrabotka-dlya-apple-watch-na-primere-prilozheniya-dlya-bankov/ http://techmas.ru/blog/razrabotka-dlya-apple-watch-na-primere-prilozheniya-dlya-bankov/#respond Thu, 26 Mar 2015 08:55:12 +0000 http://techmas.ru/blog/?p=83 bank1

Официальный анонс Apple Watch оставил ряд вопросов как для разработчиков приложений, так и для будущих пользователей часов. Однако, уверенность, что это устройство найдет своих пользователей и откроет принципиально новые перспективы для всех носимых устройств, пожалуй, есть уже сейчас. Что же они из себя представляют для разработчика?

На примере базового приложения для банковского сектора, разработанного компанией Techmas, рассмотрим процесс создания рабочих программ для Apple Watch.

Вообще говоря, сами часы является дополнительным монитором к iPhone. Это означает, что код выполняется не на самом носимом устройстве, а на мобильном телефоне. Для этого используется специальный фреймворк WatchKit, который взаимодействует с iPhone следующим образом:

.bank2_m

Сами приложения создаются в знакомой для iOS разработчика среде Xcode (начиная с версии 6.3). Для этого нужно указать поддержку проекта iOS шаблонов для экрана часов Apple Watch:

.bank3_m

Часы могут быть оснащены одним из двух вариантов сенсорного IPS-экрана: 1.34″, 272×340 и 1.54″, 312×390. Время работы в режиме ожидания – 72 часа, в активном режиме – 18 часов. Это накладывает некоторые ограничения на интерфейс приложения, дизайнеры которого должны, с одной стороны, придерживаться минимального использования ресурсов, а с другой, отразить максимум функциональности на экране небольшого носимого устройства:

.bank4_m

Разрабатываемые приложения для Apple Watch бывают 3 типов:

  1. Glances. Используются для отображения информации и уведомлений, требующих некоторых действий со стороны пользователя.
  2. Notifications . Также создаются для уведомлений пользователей и могут быть короткими (на один экран) и длинными (на несколько экранов со скроллом). Такие уведомления могут использовать текст, изображение и кнопку для перехода на приложение в iPhone.
  3. WatchKit Apps. Полноценное приложение для Apple Watch.

Таким образом, созданное приложение может как дополнять уже имеющееся приложение на iPhone, например, уведомлениями на часы об операциях и действиях, так и быть самостоятельным инструментом.
Уведомления:

.bank5_m

Полноценное приложение:

.bank6_m

 

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

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

]]>
http://techmas.ru/blog/razrabotka-dlya-apple-watch-na-primere-prilozheniya-dlya-bankov/feed/ 0
Инструменты разработки мобильных приложений http://techmas.ru/blog/instrumentyi-razrabotki-mobilnyih-prilozheniy/ http://techmas.ru/blog/instrumentyi-razrabotki-mobilnyih-prilozheniy/#respond Wed, 18 Mar 2015 23:37:19 +0000 http://techmas.ru/blog/?p=79 platforms

Известно, что все мобильные операционные системы имеют свой язык и для разработки приложений: ObjectiveC для iOS (теперь, конечно, и Swift), Java для Android, С# для Widows Phone. Создавая даже самое с простое приложение, нужно помнить не только об особенностях разработки на этих языках, но и поддерживать единую функциональность на всех платформах. Проблемы в таком подходе очевидны, это и дополнительные сроки на разработку, и сложность поддержки приложения в будущем, и невозможность повторного использования кода.

Но есть ли другие варианты?

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

Xamarin

1. Xamarin

С помощью Xamarin можно создавать нативные мобильные приложения на C#. Это означает, что ключевой функционал (40-60% кода) может быть общим для каждой платформы, тогда как версии для iOS, Android и Windows Phone должны иметь свои особенности. Среда разработки: Xamarin Studio или плагин для классического инструмента Microsoft Visual Studio.

phonegap

2. PhoneGap

Пожалуй, самое популярное и простое решение. По своей сути, приложения на PhoneGap представляют собой мобильные кросс-платформенные сайты, которые создаются с помощью HTML5 и JavaScript. При выполнение такие приложения запускают локальный браузер и используют дополнительные библиотеки для доступа к некоторым функциям телефона. Как преимущества такого подхода, разработка мобильного приложения не требует уникального кода для каждой платформы. Но, как следствие, скорость работы и ограничения браузера сразу дают понять пользователю с чем он имеет дело.

.Appcelerator_m

3. Appcelerator Titanium

Несмотря на то, что (как и PhoneGap) Appcelerator в качестве языка разработки мобильных приложений использует Javascript, это принципиально разные инструменты. Результатом разработки с помощью Titanium являются нативные приложения, которые используют службы операционной системы. Кроме того, Appcelerator имеет ряд облачных сервисов, которые позволяют управлять пользователями, отслеживать использование приложения и осуществлять другие аналитические функции.

]]>
http://techmas.ru/blog/instrumentyi-razrabotki-mobilnyih-prilozheniy/feed/ 0
Создание мобильного приложения с помощью 1С-Битрикс http://techmas.ru/blog/sozdanie-mobilnogo-prilozheniya-c-pomoshhyu-1s-bitriks/ http://techmas.ru/blog/sozdanie-mobilnogo-prilozheniya-c-pomoshhyu-1s-bitriks/#respond Mon, 16 Feb 2015 23:12:41 +0000 http://techmas.ru/blog/?p=77 Screen_Shot_2015-04-17_at_02.10.47Продукт «1С-Битрикс: Мобильное приложение» — это технология, позволяющая быстро разрабатывать приложения под iOS и Android для сайтов, созданных на платформе 1С-Битрикс.
Что она из себя представляет «под капотом»?

Главное преимущество для разработчика мобильного приложения — теперь не надо поддерживать два отдельных приложения для Android и iOS, этим занимается компания «1С-Битрикс».

Продукт базируется на технологии BitrixMobile 3.0, которая позволяет создать кроссплатформенные мобильные приложения. Разработка полностью ведётся на HTML5/Javascript/CSS, взаимодействие с функциями телефона и нативным интерфейсом мобильного устройства осуществляется через специальную JS-библиотеку — BXMobileApp. Доступны все функции телефона: GPS, Информация об устройстве, Акселерометр, Файловая структура, Адресная книга и прочие.

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

  1. Концепт дизайна, его верстка и настройка под разные OS. Используем инструмент «Конструктор мобильного приложения»:
    • Создание базового макета серверной части приложения на платформе BitrixMobile.
    • Настройка параметров нативных элементов приложения.
    • Настройка параметров мобильного приложения по платформам — Android и iOS.
  2. Разработка функционала. Вы создаёте только сам функционал приложения на HTML5/Javascript/CSS.
  3. Тестирование программного кода производится через специальное приложение для разработчиков.
  4. Покупка лицензии на мобильное приложение.
  5. Заполнение формы добавления приложения, на сайте 1c-bitrix.ru.
  6. Регистрация аккаунта на Google Play и iOS Dev Center.
  7. «1С-Битрикс» опубликует от вашего имени готовое приложение в AppStore и Google Play (Срок рассмотрения заявки «1С-Битрикс» — от 2х недель).

Преимущества платформы 1С-Битрикс:

  • Разработка мобильного приложения на HTML5/Javascript/CSS. Любой современный сайт разрабатывается с применением данных технологий. Нет необходимости подключать дорогостоящих специалистов в сфере разработки под Android и iOS платформы.
  • Выпуск обновления не требует перевыпуск приложения. Любые изменения в логике работы сразу отображаются в мобильном приложении. Если на сайте включено кэширование, изменения появляются после сброса кэша или после истечения срока его жизни.
  • Пользователи устанавливают приложение через AppStore и Google Play. Для них это обычная программа.
  • Мобильное приложение удобно для коллективной разработки, легко масштабировать выпуск.
  • Не нужно придумывать свой API. При разработке используется API 1С-Битрикс, со всеми его возможностями, произвольный PHP код, а также BXMobileApp.
  • Обычные страницы Битрикс, обычные компоненты. Только ряд дополнительных требований к верстке.
  • Единая разработка для всех мобильных платформ.
  • Поддержка WebRTC
  • Поддержка API соцсетей (авторизация, комментарии)
  • Единый сервис push-уведомлений

И все же, ключевым преимуществом разработки с 1С-Битрикс является возможность создания мобильного приложения «из коробки». Это решение идеально подойдет для магазинов и сайтов, которые уже используют платформу 1С-Битрикс и планируют создать приложение на базе имеющегося решения.

]]>
http://techmas.ru/blog/sozdanie-mobilnogo-prilozheniya-c-pomoshhyu-1s-bitriks/feed/ 0