Операционная система WindowsАнна ЕфремоваВ электронном учебном пособии рассмотрены основные принципы организации операционной системы, ее достоинства и недостатки
WebCamp:Front-end Developers Day. Александр Михайленко "Обзор библиотек и кан...GeeksLab OdessaАлександр Михайленко (Основатель платформы Jeapie)
"Обзор библиотек и каналов коммуникации пользователя и веб-приложения"
В докладе будут подробно разобраны различные виды push-уведомлений от веб-приложения пользователю, в том числе свежайшие Google Chrome 42 уведомления, их способ работы, варианты реализации и кейсы применения.
Chrome push notifications. Анатомия и разработкаAlexandr MikhaylenkoПрезентация доклада с Web Camp 2015 года.
История Push уведомлений. APNS и GCM.
Устройство и механика новых web push уведомлений.
Практическое руководство по созданию собственной системы push
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Mikhail VaninВыступление на семинаре "Безопасная разработка и защита приложений", прошедшем 20 апреля в Mail.Ru Group.
Видео доступно по ссылке https://it.mail.ru/video/568/
Push уведомленияDmitriy IvanovPush-уведомлений помогают мобильным устройствам отображать новую информацию и при этом экономить энергию. Уведомления могут отправляться с серверных систем на мобильные устройства даже в том случае, если соответствующие приложения на устройстве не активны.
При эффективном использовании эти краткие информативные сообщения являются мощным маркетинговым инструментом. Основной цельюpush-уведомлений является информирование пользователей об обновлениях идобавлении нового контента, либо о каких-либо других новостях.
IT talk Odessa. Device HiveMarina PeregudТема: «DeviceHive или как начать работать с интренетом вещей» live coding session
Спикер: Олег Крук, Senior C++ разработчик, DataArt, Харьков
«Идентификация, аутентификация, авторизация – встроенные функции приложений и...Mail.ru GroupВ докладе были рассмотрены возможные подходы к решению задач идентификации, аутентификации и авторизации на уровне инфраструктуры организации.
Защита приложения требует наличия в нем встроенных функций идентификации/аутентификации/авторизации пользователя. Однако полагаться на встроенные функции становится сложно, когда необходимо обеспечить работу пользователей с множеством приложений, развернутых внутри организации и в облаке, и к тому же дать пользователям доступ с разнообразных устройств (ПК, мобильные устройства) и из сети организации, и вне ее периметра. В таких случаях задача обеспечения идентификации/аутентификации/авторизации должна быть решена на уровне инфраструктуры организации.
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"DataArtПрезентация доклада Олега Крука, DataArt, с конференции IT NonStop Киев, 31/10/15
1zapuskprogrammyiИрина Блохнинас сайта "Районное методическое объединение школьных библиотекарей Чернушинского муниципального района
Пермского края http://lib.chernmmc.edusite.ru/p80aa1.html
«Я спросил у сервера...», Илья ПастушковDevDayПоговорим, как и зачем функционально тестировать хайлоад, получать от тестов больше, чем «прошёл/не прошёл», а их количество превратить в качество продукта.
More Related Content
Similar to «Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин (20)
WebCamp:Front-end Developers Day. Александр Михайленко "Обзор библиотек и кан...GeeksLab OdessaАлександр Михайленко (Основатель платформы Jeapie)
"Обзор библиотек и каналов коммуникации пользователя и веб-приложения"
В докладе будут подробно разобраны различные виды push-уведомлений от веб-приложения пользователю, в том числе свежайшие Google Chrome 42 уведомления, их способ работы, варианты реализации и кейсы применения.
Chrome push notifications. Анатомия и разработкаAlexandr MikhaylenkoПрезентация доклада с Web Camp 2015 года.
История Push уведомлений. APNS и GCM.
Устройство и механика новых web push уведомлений.
Практическое руководство по созданию собственной системы push
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Mikhail VaninВыступление на семинаре "Безопасная разработка и защита приложений", прошедшем 20 апреля в Mail.Ru Group.
Видео доступно по ссылке https://it.mail.ru/video/568/
Push уведомленияDmitriy IvanovPush-уведомлений помогают мобильным устройствам отображать новую информацию и при этом экономить энергию. Уведомления могут отправляться с серверных систем на мобильные устройства даже в том случае, если соответствующие приложения на устройстве не активны.
При эффективном использовании эти краткие информативные сообщения являются мощным маркетинговым инструментом. Основной цельюpush-уведомлений является информирование пользователей об обновлениях идобавлении нового контента, либо о каких-либо других новостях.
IT talk Odessa. Device HiveMarina PeregudТема: «DeviceHive или как начать работать с интренетом вещей» live coding session
Спикер: Олег Крук, Senior C++ разработчик, DataArt, Харьков
«Идентификация, аутентификация, авторизация – встроенные функции приложений и...Mail.ru GroupВ докладе были рассмотрены возможные подходы к решению задач идентификации, аутентификации и авторизации на уровне инфраструктуры организации.
Защита приложения требует наличия в нем встроенных функций идентификации/аутентификации/авторизации пользователя. Однако полагаться на встроенные функции становится сложно, когда необходимо обеспечить работу пользователей с множеством приложений, развернутых внутри организации и в облаке, и к тому же дать пользователям доступ с разнообразных устройств (ПК, мобильные устройства) и из сети организации, и вне ее периметра. В таких случаях задача обеспечения идентификации/аутентификации/авторизации должна быть решена на уровне инфраструктуры организации.
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"DataArtПрезентация доклада Олега Крука, DataArt, с конференции IT NonStop Киев, 31/10/15
1zapuskprogrammyiИрина Блохнинас сайта "Районное методическое объединение школьных библиотекарей Чернушинского муниципального района
Пермского края http://lib.chernmmc.edusite.ru/p80aa1.html
«Я спросил у сервера...», Илья ПастушковDevDayПоговорим, как и зачем функционально тестировать хайлоад, получать от тестов больше, чем «прошёл/не прошёл», а их количество превратить в качество продукта.
Фреймворк Slot, Good Parts, Александр БирюковDevDayРасскажу о ключевых особенностях продукта: о какой изоморфности идёт речь, как мы управляем состоянием SinglePage-приложения и какой профит для SEO извлекли, с примерами кода. Посмотрим как быстро начать свой проект на Slot.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDayО том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Devops-практики в разработке решений для бизнеса, Максим ПашукDevDayОбычно разработчик успокаивается как только написан код, решающий задачи бизнеса. На самом деле есть ещё целый ряд вопросов, которые также необходимо решать.
Как донести изменения разработчика до тестирования в согласованном виде (база данных, приложение, конфиги)? Как донести эти же изменения до production и ничего не потерять по дороге? Что делать если продукт — распределённая многокомпонентная система, работающая в отказоустойчивом кластере? Тогда ситуация требует тесной совместной работы разработчиков и администраторов, а это, как известно, люди немного с разных планет.
Я расскажу на примере конкретного проекта на .NET стеке, как мы построили мост дружбы. Как свели воедино систему сборки, развёртывания и автоматизации, используя библиотеку psake и достигли взаимопонимания.
Inversion of Control в деталях, Дмитрий КожевниковDevDayКазалось бы всё сказано об инверсии управления, особенно в .NET. Но нетривиальные квесты вокруг дизайна, построенного на DI, продолжают возникать из проекта в проект. Предлагаю поговорить немного о прописных истинах, а потом перейти к более любопытным вещам и болезненным вопросам.
Чем плох ServiceLocator? Почему IoC-контейнер — это фреймворк, а не библиотека? Как быть с множественными реализациями? Convention over configuration?
Отдельно поговорим об архитектуре enterprise решений в свете возможностей IoC-контейнеров.
«Велогосипед», Данил ИльиныхDevDayГод от года многие программисты решают одни и те же задачи, но не всегда среди огромного многообразия решений можно найти что-то подходящее. Вот и мы не смогли найти ни одной библиотеки логирования для C++, которая удовлетворяла бы всем нашим требованиям. Теперь у нас есть свой велосипед, и мы расскажем, чем он лучше других.
«Вывод продукта на новых территориях», Елизавета АлексеенкоDevDayПродвижение в офлайне и соцсетях, прогноз и достижение CTR, ограничения естественного роста аудитории.
Манипулятор на Ti Stellaris Launchpad, Лёша РоманенкоDevDayЗа последние несколько десятков лет робототехника стала очень доступной. Настолько, что можно собрать робота и запрограммировать его даже в домашних условиях, имея подходящий инструментарий. С чего начать? Как попробовать? Именно об этом мы и поговорим на докладе на примере контроллера TI Stellaris Launchpad (аналог Arduino), управляемого с Android-смартфона.
Лабиринт на Arduino, Вадим ИпполитовDevDayВсе мы привыкли писать программы, результаты работы которых можно увидеть и услышать. Хотите, чтобы их можно было ещё и потрогать? На примере создания электронной игры «Лабиринт» вы увидите, как не имея знаний и опыта сделать первый шаг в мир hardware.
«Хоба-хоба и в продакшн», Женя ПономарёвDevDayРасскажу про первый продукт 2ГИС, который не совсем про организации – 2GIS Dialer. О трудностях создания, и почему их не нужно бояться. Делая что-то новое, вы обязательно с ними столкнетесь:
— Команда будет меняться.
— Конкуренты будут поджимать и опережать.
— Промо-кампании не будут стрелять.
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев DevDayС чего начинается проектирование и дизайн новых продуктов — со сценариев. Продуктовые сценарии работы — ключевой элемент в пазле проектирования новых взаимодействий. В докладе покажу какое место сценарии занимают в 2ГИСе, почему они важны и какие сценарии бывают.
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...DevDayВ своем докладе я расскажу о постановке цели и подготовительном этапе при проведении продуктовых исследований. Мы рассмотрим наиболее популярные виды исследований. Специфику исследований на локальном и междунароных рынках. Прикладную ценность результатов исследований. И это всё на примерах продуктов компании 2ГИС.
Матвей Мальков «Ещё один поиск контактов на Android»DevDayМногие дайлеры не умеют делать поиск по Т9 клавиатуре. Те, что умеют, в большинстве своем делают поиск только по имени/фамилии контакта или по началу номера, а кто-то только с использованием английского алфавита. В 2GIS Dialer нам хотелось искать все контакты по имени, фамилии, телефону (любому из списка и с любого символа), а так же по должности и месту работу (опционально: e-mail и вебсайт, адрес и группы контактов). Кроме того, нам хотелось, чтобы пользователь на любом языке мог найти свои контакты. И в завершение необходимо было, чтобы весь этот поиск работал быстро. О том, как мы добились прогресса в этом деле я и расскажу.
Олег Годовых «Страх и ненависть в Event Bus»DevDayУ нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
4. Проблема
Есть пользователи, у которых установлен Яндекс.Браузер, но
не самая последняя его версия
В Браузере есть фичи, о которых хочется рассказать
пользователям
4
5. План
1. Способы решения
2. Коротко о push-уведомлениях
3. Постановка задачи
4. Опыт интеграции в Яндекс.Браузер
5. Резюме
5
6. Способы решения
Поллинг - запрос описания новых фичей/версий приложения
со стороны мобильного приложения к нашему серверу
Автообновление приложений - фича iOS, позволяющая не
заботиться об обновлениях приложений, которую можно
включить/выключить в приложении “Настройки”
ʳܲ-уведомления
6
11. Запрос разрешения на доставку уведомлений
Системный запрос не поддается
кастомизации (нельзя даже указать
UsageDescription в Info-plist’е, как для
сбора данных о локации)
11
12. Влияние на батарейку устройства
Для каждого push-уведомления можно указать свой приоритет:
Срочно - уведомление будет доставлено мгновенно
(недоступно для silent уведомлений)
Не очень срочно - уведомление будет доставлено тогда, когда
Apple решит, что это не будет сильной нагрузкой на батарейку
12
14. Сервис обратной связи (feedback service)
Предоставляет список токенов устройств, доставка на
которые стабильно неуспешна
Должен опрашиваться ежедневно, чтобы больше не посылать
уведомления на эти устройства
14
15. Ограничения Push-уведомлений
Размер сообщения ограничен - 2 KB (iOS 7 и ниже - 256 байт)
Уведомление может быть не доставлено
Уведомления могут схлопываться (coalescing)
Silent уведомления перестанут приходить, если пользователь
явно закрыл приложение
15
16. ʳܲ-уведомления
+ Уведомляют пользователя о новом контенте
+ Имеют внешний вид, настраиваемый пользователем
+ Заботятся о батарейке устройства, если правильно их
использовать
− Системный запрос на разрешение доставки не поддается
кастомизации
− Требуют усилий при реализации: код приложения + код
сервера
16
18. Чего хотим
Уведомлять пользователя о новых версиях, если он давно не
обновлял Браузер
Рассказывать пользователям о новых фичах в приложении
Делать это ненавязчиво (т.е. только один раз и только
релевантным пользователям)
18
19. Решение для серверной части
Имеется аккаунт в Pushwoosh -
сторонний сервис отправки push-
уведомлений
19
20. Что такое Pushwoosh
+ Предоставляет гибкую настройку фильтров для отправки
уведомлений
+ Умеет отсылать уведомления на iOS, Android, Windows Phone
и т.д.
+ Можно ограничить отправку только на тестовые устройства
− Требует интеграции SDK с закрытым кодом
20
21. Что уже есть на клиенте
В Браузере уже есть фичи, которые используют push-
уведомления
21
Синхронизация данных Push-to-Call
24. Задача
Уведомлять пользователей о новых версиях приложения и
новых фичах
Использовать Pushwoosh для отправки уведомлений
Не сломать при этом Push-to-Call и синхронизацию
24
26. Что нужно сделать
1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
6. Обработать уведомление
26
27. 1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
27
28. Provisioning Profile
Для тестирования push-уведомлений нужен Provisioning
Profile с явным App ID
Девелоперское окружение предполагает CI с несколькими
сборками, каждая со своим Bundle ID (а, значит, и App ID)
28
29. Данные в Pushwoosh
Для работы Pushwoosh нужно предоставить:
APNs-сертификаты с соответствующими ключами
Список APNs-token’ов тестовых устройств
Контент самих уведомлений
29
30. 1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
30
33. 1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
33
35. Диспетчеризация push-уведомлений
Например, можно добавлять в тело (payload) каждого
уведомления специальный идентификатор, по которому
определяется его обработчик
Payload:
35
{
"aps" : { "alert" : "Alert message" },
"type" : "update notification"
}
37. 1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
37
38. Момент получения push-уведомления
Нужно позаботиться о правильной обработке уведомления
в произвольный момент времени
Приложение может быть в любом состоянии:
Запущено, но в фоне
Запущено и активно
Не запущено
38
39. Приложение уже запущено
Если приложение в фоне:
Убедиться, что приложение полностью восстановлено
Сложно написать тесты
Если приложение активно:
Убедиться, что мы не помешаем пользователю
Легко написать тесты
39
40. 1. Настроить тестовое и боевое окружения
2. Определиться, каким образом запросить разрешение на
доставку уведомлений
3. Научиться различать push-уведомления для разных фичей
4. Приготовиться к получению уведомлений в произвольный
момент времени
5. Убедиться, что приложение проинициализировано
40
41. Запуск приложения
Прежде, чем обрабатывать уведомление, нужно позаботиться о
том, чтобы приложение было должным образом
проинициализировано
41
42. Запуск приложения
Яндекс.Браузер основан на Chromium
Его полная загрузка занимает довольно много времени
Часть этой загрузки сделана асинхронной
Сложно написать тесты
42
44. Интеграция Push-уведомлений в приложение
Снабжаем CI нужными Provisioning Profile и сертификатами
Объясняем пользователю, зачем в приложении уведомления
Явно выделяем модуль диспетчеризации уведомлений в
разные обработчики
Помним о произвольности времени получения push-
уведомления
Синхронизируем запуск приложения и обработку уведомления
Пишем тесты, чтобы выявлять ошибки как можно раньше
44