Рубрика «android» - 107

Старший вице-президент по юридическим вопросам Google Кент Уокер сделал запись в блоге Google. Сегодня его компания обязана ответить на претензии Еврокомиссии. Весной 2015 года европейские регуляторы решили удостовериться, что Google не принуждает производителей телефонов к установке собственных сервисов вместо конкурирующих разработок, тем самым препятствуя конкуренции. Весной 2016 года Еврокомиссия заявила,Читать полностью »

Согласно исследованию AppLift «Fighting Mobile Fraud in the Programmatic era», доля фейкового мобильного трафика составляет около 34% от общего объема трафика, если выражать в деньгах — это более $4,5 млрд потерь. Рекламодатели ищут способы оценить качество трафика по KPI, пытаются фильтровать IP и составлять черные и белые списки, неохотно отдают оффера в нетворк, — однако ловкие ботоводы обходят эти препятствия, продолжая наливать мусорный траф, отнимая прибыль у рекламодателя, обманывая сетки и покупая еще больше мощностей для своих ботов и ферм.

Обзор мобильных антифрод-систем - 1

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

В Mobio мы много и упорно работаем над очищением трафика, тестируем разные системы, о чем и хотим рассказать под катом.
Читать полностью »

В предыдущей статье я сделал беглый обзор async-await в Android. Теперь пришло время погрузиться немного глубже в грядущий функционал kotlin версии 1.1.

Для чего вообще async-await?

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

Читать полностью »

От переводчика

Это мой первый перевод, поэтому прошу прощения за неточности. Если вы найдете ошибки в переводе, пожалуйста, сообщите об этом. Я не нашел лучшего перевода слова сoroutine, чем сопрограмма, поэтому решил использовать оригинал. Если у вас появятся идеи по этому поводу, буду рад узнать.

Kotlin версии 1.1 принесет в язык coroutin'ы, которые позволяют приостанавливать вычисления в какой-то точке, а затем продолжить их позднее. Очевидный пример этой возможности — async-await, который был добавлен в C# несколько лет назад.

Каждый android разработчик знает, что когда мы имеем дело с сетевыми запросами или другими I/O задачами, то нам необходимо удостовериться, что не происходит блокировка основного потока, а так же, что мы не трогаем UI из фонового потока. На протяжении многих лет приходят и уходят десятки приемов. В этой статье перечислены наиболее популярные, и показаны примеры удобства, которое несет с собой async-await.

Читать полностью »

Как часто вы откладывали визит к врачу потому, что нужно искать телефон клиники, звонить в регистратуру и «записываться»? Нам знакомо это чувство, поэтому в клинике «Атлас» самые внимательные клинические ассистенты на свете. Но даже с ними приходится говорить голосом.

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

Яндекс запустил сервис «Здоровье» - 1

Читать полностью »

Вводим текст красиво - 1 Сырые, но важные данные вроде номеров телефонов или кредиток — это именно то, что пользователи чаще всего вводят в наших приложениях. И с этим есть огромная проблема. Перепроверять 16 цифр своего Мастеркарда или 11 цифр номера телефона — это сущий ад для любого юзера. Решать эту проблему, естественно, приходится разработчикам, от лица которых я и пишу этот пост.

Поскольку современный Андроид не предоставляет инструментов для автоматического форматирования произвольного текста, эту задачу каждый решает своими костылями силами. Сначала в наших проектах эта задача решалась по месту: возникла необходимость — напиши свой TextWatcher и форматируй как надо. Но мы быстро поняли, что так делать не стоит — количество локальных костылей и специфических багов росло экспоненциально. Кроме того, задача весьма общая, так что и решать её надо системно.

Для начала хотелось следующего:

  1. Указал маску вроде +7 (___) ___-__-__
  2. Повесил её на EditText
  3. ...
  4. PROFIT

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

Начав работать над этим направлением, мы осознали, что создание полноценного языка описания формата — это сродни написанию своего RegEx-движка, что, честно говоря, в наши планы не входило. В итоге мы пришли к варианту, когда такой язык при необходимости можно добавить в любой момент (даже в клиентском коде) или пользоваться простеньким DSL, доступным из коробки (что в нашей практике решило 90% задач).

Посмотрев на то, что получилось, мы решили, что это круто, и надо бы поделиться с сообществом. Так у нас и родилась библиотека для Android-разработки Decoro. И сейчас я покажу пару фокусов из её арсенала.

Читать полностью »

Рисуем, кодим под libGDX и другие маленькие радости из жизни инди-разработчика - 1

Привет! В этом топике, я хотел бы поделиться впечатлениями от игрового движка libGDX, рассказать о буднях обычного инди-разработчика и приоткрыть завесу тайны над игрой, которую я делаю последние несколько месяцев в свободное от офисного рабства время. Надеюсь, эти мои записки будут полезны тем кто только начинает что-то делать на libGDX или тем, кто выбирает движок для «игры своей мечты».

И извините за котов. Они совершенно никакого отношения не имеют к игрострою. Я тут параллельно учусь (пытаюсь учиться) рисовать и теперь эти мои тренировочные коты просто повсюду! Требуют чтобы их, бездельников, кому-нибудь показывали.
Читать полностью »

Какой-то гигантский получился дайджест – и про техлидов, и про GitHub, и про блокировщик рекламы, и про Microsoft, которая теперь Apple, и про магию, и про многое-многое другое.

Дайджест интересных материалов для мобильного разработчика #178 (31 октября-6 ноября) - 1Читать полностью »

Предисловие

Я начинающий Android разработчик, за плечами у меня около 1,5 года опыта в данной сфере. Взялся я за довольно-таки большой проект, в команде кроме меня никого нет, а бекенд писать я не умею. Решено было в качестве платформы выбрать Firebase. Так как специфика моего приложения требовала постоянной работы и получения данных из базы в фоне, я просто вставил все EventListener-ы в сервис и был доволен. До того самого момента, когда я решил написать iOS версию. Выучив Swift я ринулся в бой. Firebase SDK благо оказались очень хороши и похожи для обеих систем, так что я быстро написал основную часть и… Почему не работает?

Суть проблемы и постановка задачи

iOS мягко говоря не уважает приложения работающие в фоне. Единственный способ пробудить приложение которое убила система (а убивает она их из-за любого чиха) — уведомления через APNS. К тому же, на Android 6+ постоянное соединение не держится и уведомления в итоге приходят с задержкой от 5 минут до 2 часов (на 7.1), если они реализованы не через GCM. Хорошо, что Firebase Cloud Messaging поддерживает и APNS, и GCM. Плохо, что для этого нужен дополнительный сервер. Было бы круто, если б уведомления автоматически отправлялись по определённым изменениям в базе данных. Инженеры обещают сделать нечто подобное в следующем году… А работать то должно уже сейчас.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js