Компания Google работает над решением, которое поможет защитить приложения и игры для Android от использования их взломанных версий. Новое решение направлено на борьбу с пиратством, которое процветает на платформе Android, позволяя пользователям устанавливать платные игры и пользоваться стриминговыми сервисами без оплаты. Об этом сообщает издание Android Authority.
Как сообщается на официальном сайте Google, разработчики получат доступ к новому инструменту под названием Play Integrity API. Этот инструмент будет проверять легальность приложений, установленных на устройствах пользователей. Например, приложение Spotify сможет запустить проверку, в результате которой все взломанные версии этого сервиса будут заблокированы на устройствах, где они установлены.
В случае обнаружения модифицированного приложения пользователю будет предложено удалить его или переустановить через Google Play, чтобы получить оригинальную версию. Запустить взломанное приложение в прежнем виде больше не получится, поскольку операционная система не позволит это сделать.
Play Integrity API будет интегрирован в систему защиты Play Protect, которая выявляет вирусы как в приложениях из Google Play, так и в тех, что были установлены из сторонних источников. Хотя Google не планирует запрещать установку приложений из сторонних источников с помощью APK-файлов, компания стремится защитить разработчиков от незаконного использования их работы.
Итак, что я помню: Это была аркада. Суть в том, чтобы с помощью персонажа, собрать очки, которые были стилизованы под персонажа. Например если выбрать персонажа Кампуса, который там был, он собирал велосипеды и игрушки, если выбрать Санту, он собирает подарки и тд. В целом обстановка была стилизована под персонажа (Крампус - ночь, Санта - снег) Персонажей было много. Но мало кого помню. Была жена Санты, какие то животные и тд. Помню ещё свинью (она вроде была на заставке) Окружающая обстановка была простой. Представляла из себя 3д пространство, небольшой островок, летающий в воздухе. Нужно было обходить препятствия и врагов, помню были волки. Суть каждого уровня сбежать оббегая препятствия, помню что можно было найти ключи и открывать клетку в некоторых случаях. Вроде "пол" в игре был сделан из шестиугольников, точно была вода, которую нужно обходить. Персонажей было очень много, нужно было открывать как в игре crossy road, игра в целом чем-то была на неё похожа (маркет всегда предлагал эту игру, когда скачивать другую). Рисовка была похожа на игру Mars: Mars. Играла в неё очень давно, больше 5 лет назад
Продолжение уже с размышлениями, поста Андроид все?
Ограничение Google на подтверждение аккаунтов с российскими номерами может вызвать ряд негативных последствий для пользователей в России:
Негативные последствия:
1. Трудности с регистрацией и восстановлением доступа:
- Пользователи не смогут использовать российские номера для подтверждения новых аккаунтов или восстановления доступа к уже существующим аккаунтам Google, что может затруднить управление учетными записями.
2. Ограничение доступа к сервисам Google:
- Учетные записи Google используются для доступа к множеству сервисов: Gmail, Google Drive, YouTube, Google Maps и многим другим. Без возможности создания или подтверждения аккаунта, доступ к этим сервисам может быть ограничен.
3. Уязвимость безопасности:
- Подтверждение учетных записей через мобильные номера является одной из важных мер безопасности. Отсутствие возможности привязать российский номер может сделать учетные записи уязвимее к взлому.
4. Трудности для бизнеса:
- Многие бизнесы используют сервисы Google для рекламы (Google Ads), аналитики (Google Analytics) и работы с документами. Ограничение подтверждения может усложнить или сделать невозможным управление бизнес-платформами Google.
5. Ограничения на доступ к приложениям Android:
- Без учетной записи Google пользователи Android могут столкнуться с трудностями в использовании Google Play для загрузки приложений или обновления существующих приложений.
Возможные пути решения:
1. Использование иностранных номеров:
- Возможно использование номеров других стран для подтверждения аккаунтов. Это может быть неудобно, но через сервисы виртуальных номеров или физические номера зарубежных операторов эту проблему можно обойти.
2. Использование альтернативных почтовых сервисов:
- Вместо Google можно использовать другие почтовые и облачные сервисы, такие как Yandex.Mail, Mail.ru, ProtonMail или другие международные альтернативы, которые не ограничивают использование российских номеров.
3. Использование существующих аккаунтов:
- Если у пользователя уже есть подтвержденный аккаунт Google, им можно продолжать пользоваться, хотя будущие проблемы с подтверждением могут возникнуть при смене номера или восстановлении пароля.
4. Использование альтернативных приложений и сервисов:
- Для пользователей Android можно рассмотреть установку приложений через альтернативные магазины приложений, такие как APKPure, F-Droid или Aurora Store. Важно помнить о безопасности при использовании сторонних магазинов.
Использование телефона без сервисов Google:
Да, использовать телефон на Android можно без сервисов Google, но это потребует дополнительных настроек. Вот несколько решений:
1. Альтернативные магазины приложений:
- Как уже упомянуто, такие магазины, как APKPure или F-Droid, могут быть полезны для загрузки и обновления приложений.
2. Open-source приложения:
- Существуют приложения с открытым исходным кодом, которые не зависят от сервисов Google. F-Droid предлагает множество таких приложений.
3. Настройки безопасности:
- Важно помнить, что без сервисов Google на устройстве могут возникнуть проблемы с безопасностью и работоспособностью некоторых приложений. Альтернативные решения, такие как microG (замена Google Play Services), могут помочь частично заменить функционал.
4. Полный отказ от Google:
- Существует ряд пользователей, которые осознанно используют телефоны без Google-сервисов, и это возможно через установку кастомных прошивок, таких как LineageOS, которые не включают Google Play Services.
Таким образом, ограничения, вызванные невозможностью подтвердить аккаунты Google с российскими номерами, могут затруднить доступ к популярным сервисам, но существуют решения, позволяющие обходить эти проблемы.
Источник, мой канал в телеге, приходите если есть, что добавить, м.б. я еще подумаю и придумаю, как всех успокоить, но это уже будет там
Google ads UAC один из самых эффективных рекламных источников для продвижения мобильных приложений. Зачастую он отрабатывает даже лучше великой и ужасной Meta(запрещена и порицается) Но что делает его настолько крутым и какие есть подводные камни при работе с ним?
Аналитика
Один из самых крупных игроков рынка врядли нуждается в сторонней в аналитике, и в этом случае не будет исключения
FireBase - продуктовая аналитика для гугла будет великолепно работать в тандеме c рекламным кабинетом
Есть еще GA4 (Google analytics 4 ),но ее сфера применения направлена на Web аналитику нежели App
Стандартные MMP (Appsflyer,Adjust, Appmetrika, Sungular , Branch etc) - тоже могут очень качественно отрабатывать в тандеме
Конверсии
Когда удается подружить систему аналитики и кабинет Гугла, нужно НЕ ЗАБЫТЬ включить синхронизация между ними, или поделиться нужными событиями из аналитики в рекламный кабинет
Primary event - будет всегда главное событие для вашего бизнеса (Покупка, Бронирование билетов, Вишлист и тд)
Базовая конвесия - должна идти через "First Open" иначе первой точкой обучения алгоритма станет не установка(Первое открытие) а клик или того хуже показ, если еще упрощать , то вы обучите сам кабнет оптимизоваться только на клики или показы, что не принесет вам конвесрий ниже по воронке в перспективе
Трудности с ИОС
Если вы используете IOS в Google ads UAC и еще MMP-трекер, то в лучшем случае вы просто увеличите прирост органического трафика, в худшем вы просто потратите много k$ в молоко
Можно избежать трудностей с ИОС тогла?
Да , но прийдется смешивать системы аналитики FireBase+Appsflyer+CRM(если она у вас настроена)
Креативы
Для первого запуска вам понадобится:
5 заголовков
5 описаний
5 баннеров
5 видео
Необязятельно : HTML-5 плееблы
Виды оптимизаций
CPI - оптимизация на установки по "условно фиксированной" цене
СРА - оптимизация на целевое действие по "условно фиксированной" цене
CPI (with in-app event) - оптимизация так же на установку, но будет искать пользователей кто с большей вероятностью выполнят нужное вам событие
Какая же лучше?
Правильный ответ никакая, только путем тестов вы сможете найти самые выгодные подходы к продвижению вашего продукта
Обучение кабинета
Ставка для CPI кампаний от 250 конверсий в день
Ставка для СРА капаний от 50 событий в день
Миниум 7 дней по теории на обучении и минимум 3 дня на обучении на практике (эт секрет)
Важное и забытое
Атрибуционные окна, кабинет будет искать людей которые за время Х принесут больше конверсий, то если вас интересуют краткосрочное тестовое продвижение , то лучше уменьшать окна на уровне гугл адс, если более долгий перформ , то их нужно расширять для привлечение более качественного трафика с хорошим Retention
Оказывается Ютуб на Android можно смотреть без VPN и прочих ухищерений - поставив приложение ClipGlider. Оно есть в google play, даже в google play для телевизоров оно есть, его можно ставить на smart TV с операционной системой android TV, без всяких танцев с apk файлами. Так как не используется VPN, ничего не придется постоянно включать и отключать для запуска других приложений типа РЖД, Сбер, ГосУслуги и тд.
Поставить приложение могут самостоятельно даже ваши пожилые родственники - просто одним нажатием кнопки Установить в Google Play.
Для iOS оно тоже есть, но не умеет проигрывать YouTube без VPN и ухищерений - но предоставляет остальные функции, коих очень много - описаны ниже.
На обоих платформах ClipGlider предоставляет очень много уникальных возможностей при просмотре видео онлайн - это можно сказать замена стандартным видеоплеерам для онлайн контента, встроенных в каждый браузер. ClipGlider позволяет смотреть в ускоренном темпе видео на абсолютно любом сайте и в любой соцсети, даже если сама платформа не даёт ускорять видео (как например YouTube Shorts или Instagram reels). Коэфициент ускорения видео настраивается в настройках один раз (например 1.65х) и потом автоматически применяется ко всем видео, и его можно выбрать любым с шагом 0.01х.
Также оно добавляет возможность убирать шум с видео, и усиливать громкость во время просмотра видео онлайн - других приложений с этими функциями не существует! Это полезно при просмотре всяких записей лекций на YouTube или видео, снятых на открытом воздухе или в шумной обстановке. Ну и также оно добавляет удобную навигацию внутри видео, в виде возможности прыгать на 15-120 и 300 секунд одним нажатием.
Ещё есть возможность автоперемотки коротких видео, полезно при просмотре Instagram Reels, YouTube Shorts, Tiktok, VK клипов, яппи видео и тд. - можно превратить смартфон (или смарт-ТВ) в телевизор, который непрерывным потоком показывает Shorts/ Reels/ Tik-tok'и и автоматически перематывает к следующему ролику. Очень полезно, если хочется отучить родственников от популярных ТВ-каналов и подсадить на реально полезный и познавательный контент (про здоровье, питание и тд).
Есть возможность управления просмотром видео с клавиатуры и геймпада, это удобно если смотришь во время готовки еды и не получается мокрыми руками жать кнопки на экране. Механической клавиатуре и геймпаду не страшны мокрые или грязные руки, и с них можно и изменять скорость, и прыгать вперёд-назад, и переходить к следующему видео или останавливать просмотр.
Ссылки в пост не добавляю, чтобы администрация не удалила пост, ClipGlider можно найти в Google Play и AppStore.
Сегодня искала в Google Play приложение ВКонтакте, чтоб установить на новом устройстве. Не нашла. Там, где ВК уже был установлен, ищет и показывает. На новом устройстве - нет. Нет ни самого ВК, ни ВК видео. От такие дела. Подковёрная борьба в тихомолку продолжается. Очевидно, нас ещё ждут всё новые и новые неприятные открытия.
Мы продолжаем нашу замечательную историю про обновление бесплатного приложения, придуманного единомышленниками, тут, на Пикабухе, для удобного подсчета цен в магазинах.
Напомню, давным давно мы заловились с товарищем @Stich.626 чтобы сделать единообразное и бесплатное мобильное приложение + сайт для расчета ценников в магазинах, которое решили не бросать, любить и лелеять, насколько это возможно.
0 - Что делаем сегодня?
В данном посте мы добавляем функционал сравнения ценников, смотрим отзывы пикабушников из магазинов приложений, и конечно же внедряем новые удобства на основе этих самых отзывов (иначе зачем мы их читаем). Готовы? Поехали!
Для Лиги Лени - этот пост опубликован в техническом сообществе, где дальше будет рассказываться много непонятных вещей, в частности, как пишется приложение, что в нем используется и как взаимодействует.
Если вы просто хотите посмотреть программу, скачать / потыкать ее в действии, или просто посмотреть что это за штука, пожалуйста посмотрите обзорный скриншот выше, или проследуйте по ссылкам, которые я публикую без зазрения совести - потому что само приложение бесплатное, и таковым и останется:
Итак, в самом начале давайте поразмышляем, зачем вообще нам может быть полезен такой раздел со сравнением, и обусловлена ли необходимость в нем как такового (потому что у нас уже есть прекрасный список, который хоть чуть чуть, но выполняет эти задачи):
Когда мы сравниваем один (или несколько) ценников на товарах, обычно мы смотрим их по схожим характеристикам. Например, мы хотим узнать, какое самое дешевое молоко из представленного в магазине. Или пиво. Или хлеб. Или что вы там вечером едите :)
В связи с этим у нас формируется некий "паттерн" поведения пользователя в реальной жизни. Ага, я увидел пельмени по 450 рублей за 500 грамм, теперь я хочу сравнить другие пельмени, и посмотреть, что дешевле в пересчете на килограмм.
По такой логике наше сравнение обуславливается тем, что у нас есть заведомо известные параметры товара (раз уж взяли пельмени, то это вес в граммах и цена), а также то, что сравнивается один товар из нескольких производителей, или марок.
Другими словами, было бы очень удобно "на лету" подсвечивать самое выгодное предложение (каким нибудь зеленым цветом), но при этом ограничить расчеты по одному типу (к сожалению, пельмени не измеряются в литрах, а жаль)
1.1 - Макет, рисуйся!
Как обычно, перед тем, чтобы где то нашкодить сверстать, надо представить "экран" будущей активности, чтобы прикинуть ее на существующих формах, и оценить внешний вид. И конечно нужно понять где будет "точка входа" для этой самой активности, и насколько это удобно для обывателей.
На данный момент нам прекрасно подойдет слой с результатами, который мы видим после каждого расчета. Считаю это удобным, так как при необходимости мы начнем сравнивать сразу с этой цены, а еще нам не нужно выбирать тип сравнения (мы его выбрали ранее), а даже если в этом в расчете нет необходимости, можно просто вернуться назад как обычно.
Для этого немного немного поправим данный слой, добавим новую кнопку, и иконки для наглядности, и выделим функцию шеринга (если ей еще кто то пользуется в этом веке). Действия объясняются буквально одной строкой для вьюх типа Button:
android:drawableLeft="@drawable/back_48px"
1.2 Экран активности
Дальше интереснее. В текущем виде наше сравнение товаров, это как отдельная сущность, которая не должна нас связывать с основной функцией приложения. То есть, в данный момент мы именно сравниваем цены одинакового типа, поэтому экран тоже должен быть отдельный.
Для этого появляется активность CompareActivity со своими слоями, слушателями на физические (или виртуальные) кнопки, а также функцией передачи из одной активности в другую.
Передаем мы, напомню, сведения из последнего расчета
Экран с тестовыми сведениями для наглядности
Что мы можем тут узреть:
Приветственная карточка, которая повторяет функционал из главной формы, и служит напоминанием, что тут вообще происходит. Кстати, считается плохой практикой учить пользователя что делать (программа должна быть сразу интуитивно понятной), но для самых маленьких я не могу не оставить такую подсказку. И конечно, ее можно скрыть, посредством sharedPreferences, и она не будет надоедать.
Немного переделанный слой из списка, в котором мы сразу назначили цвет для ценника, который будет "перескакивать" на выгодную цену, в зависимости от наших подсчетов. Но так как сейчас результат один, то вначале он и будет самым выгодным, поэтому заранее окрашен.
Еще одна карточка для ввода значений, и добавления их к нашему списку. Постарался уместить ее в одну строку для быстроты ввода, при этом не нарушая читабельности (везде ясно что где вводится)
1.3 Принимаем и передаем сведения
Чтобы информация о последнем расчете попала в нашу активность, ее нужно передать из предыдущей. Для этого мы назначаем отдельный метод для кнопки "Начать сравнение", который остается в главной форме:
А в следующей активности мы уже запрашиваем эти сведения в onCreate, дополнительно убеждаемся в том что запрошенные поля не пустые (чтобы не получить NullPointerException, если приложение будет выгружено из памяти), и помещаем их на форму через метод добавления первого пункта.
Bundle extra = intent.getExtras(); if (extra !=null) { SetFirstCompareItem(); }
1.4. Возвращаем значения расчетов к изначальному виду
Когда мы передавали результат из одного экрана на другой, то мы поневоле изменили тип передаваемых сведений. Был double при передаче, а стал String.
Нам нужно вернуть все обратно, чтобы приложение могло сравнивать одинаковые типы данных, а также для сохранения цен (у нас остается две цифры после запятой). Если оставить типы смешанными, расчет может производится некорректно, и подсвечиваться тоже
Поэтому мы меняем типы обратно, посредством
Double.parseDouble(имя_переменной)
1.5. Считаем!
Теперь, когда мы готовы к подсчетам, выполняем стандартные действия из предыдущего экрана, ограничивая размер списка 5 элементами.
Предыдущие действия = означает добавление показателей в массив списка как на первом экране, при этом мы сравниваем новый результат со всеми предыдущими, и если он меньше, мы перекрашиваем самый выгодный элемент в зеленый, а остальным назначаем стандартный.
Способ крайне неудобный, но быстрый в написании, и если бы элементов списка было.. ну штук 50, приложение бы офигело, и сожрало всю память вашего устройства.
При этом, обновился тип для формирования цены - раньше он указывался без привязки с региону, и в некоторых местах цена была с запятой (123,45), а где то с точкой (123.45)
Если для простого списка на главной пофиг, что показывать, то для сравнения такое нельзя оставлять, так как приложение сразу вылетит, информируя нас о несопоставимых типах данных, поэтому приведем их к общему знаменателю вообще везде, оставив в качестве разделителя точку, и указав регион:
Чтобы считать было еще удобнее, добавим метод, который после каждого добавления по кнопке (или по клавише с клавиатуры) вновь активирует текстовые поля. Вроде мелочь, а необходимости тыкать по новой в графу цены больше не будет:
Так как отзывы я читаю (и даже иногда отвечаю), то будем руководствоваться сразу скриншотами. Итак, рассмотрим вопрос, о котором я раньше не думал:
Действительно, если на большом телефоне начинать тыкать в поля, которые выше клавиатуры, может быть неудобно. С заключениями соглашусь, поэтому пойдем доделаем этот момент.
Чтобы добавить такой способ на нажатие из экранной клавиатуры, воспользуемся объявлением слушателя для наших полей, которые уже есть в форме:
TextInputEditText.OnEditorActionListener
Он добавит в класс новый метод, которому мы будем говорить, что делать после нажатия определенных клавиш на клавиатуре.
К сожалению, устройств (и версий андроида) настолько много, что у одних может показываться галочка (ОК), а у кого то стрелка вперед (NEXT). Чтобы этого избежать, дайте два определим реакцию на обе клавиши:
public boolean onEditorAction (TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { AfterStart(); return true; } return false; }
Тут стоить дать несколько слов о методе AfterStart(), ведь ранее мы использовали другой способ BtnStart(View view)
Как не трудно догадаться, методы сами по себе отличаются, и один унаследован (и объявлен) в слое (View), где мы верстали экран, поэтому вызвать метод, который объявлен в коде мы не можем.
Но и добавлять дополнительные строки, с присвоением кнопки в коде, и создание для нее отдельного слушателя тоже не самая хорошая практика. Ну то есть хорошая конечно, но по времени устаревшая.
Поэтому было решено сделать "костыль" - метод, объявленный через View, вызывает программный метод в коде. Все довольны, добавлено.. ну три строчки кода
3. Что по багам?
3.1 Уже передав версии в релиз, я обнаружил, что часть сведений, которые мы меняли для нового экрана остались в старом формате. Это видно по скриншоту в самом начале:
Этот тип данных поступает в формате String, поэтому часть текста будет обрезаться, если число само по себе ровное (без копеек)
А если же наоборот, передать сумму с копейками, то в новом экране покажется правильный формат, но он по все равно не тот, публикуется как String, а должен быть double
Так как эта часть кода не участвует в методе расчета, то ничего не поломается, но внутренний перфекционист недоволен, и я обязательно поправлю в будущем.
3.2 Для экрана сравнения хорошо бы добавить (в заголовке) что мы вообще сравниваем - килограммы, литры, или штуки. Думаю будет полезно, и главное наглядно
3.3. И возможно, стоит удалять элементы из списка, чтобы переписать что нибудь. Об этом я не подумал, но вы напомните в отзывах
И конечно же предлагайте свои варианты, смотрите, оценивайте, считайте.
Спасибо, что дочитали эту портянку текста, спасибо тем, кто оставляет теплые слова, а также тем, кто закидывает на пачку чипсов.
Всем бобра!
P.S. На обзорном скриншоте я ненароком засветил функцию, которую буду делать потом. Визуально она очень интересна, а сама по себе.. ну такое есть в любой программе, которыми вы могли пользоваться.