Русский
Русский
English
Статистика
Реклама

Блог компании rambler group

Core Web Vitals как Google решил оценивать сайты

02.03.2021 12:21:43 | Автор: admin


Всем привет!

Сегодня поговорим о важности пользовательского взаимодействия, ведь совсем скоро придется подготовить свои сайты к максимальному ускорению загрузки. Возможно, вы уже слышали про Core Web Vitals

В прошлом году Google начал масштабный пересмотр факторов ранжирования в поисковике, чтобы улучшить качество поисковой выдачи. И в ноябре команда Google анонсировала Core Web Vitals новые факторы оценки качества ресурсов, которые смогут влиять на индексацию и вступят в силу в мае 2021 года. Давайте разбираться.


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

Чем Core Web Vitals отличается от прочих факторов ранжирования?
Положительная сторона Core Web Vitals в прозрачности: это понятные, публично доступные критерии, которые можно отслеживать и улучшать с помощью специального набора инструментов. Кроме того, с момента анонсирования и до официального запуска есть много времени, чтобы уже начать работать над Core Web Vitals.

Андрей Липатцев, Web Partnerships Google

Исследования показали, что 47% пользователей ожидают загрузки страницы до 2 секунд. Согласно отчету Google, если это время увеличивается с 1 до 3 секунд, количество отказов возрастает на 32%. А при увеличении с 1 до 6 секунд на целых 106%.
Если ресурс будет отвечать пороговым значениям Core Web Vitals, покидать сайт будут на целых 24% пользователей меньше.

Core Web Vitals



Среди многих показателей ранжирования (оптимизации для мобильных устройств, безопасный просмотр, безопасность HTTPS и т.д.) Google выделил основные (core), жизненно важные для пользователя. Метрики, составляющие Core Web Vitals, со временем будут развиваться и дополняться.

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


  • Largest Contentful Paint (LCP) определяет скорость загрузки страницы и ее крупных визуальных элементов. Хороший показатель до 2,5 с.
  • First Input Delay (FID) измеряет интерактивность сайта, то есть насколько быстро он становится доступным к взаимодействию после загрузки. Желательным будет показатель до 100 мс.
  • Cumulative Layout Shift (CLS) показывает скорость визуальной стабилизации, то есть насколько быстро всё становится на свои места. Идеальным будет показатель меньше 0,1.

Давайте разберем каждый показатель подробнее для более глубокого понимания. Или можете перейти сразу к пункту Как улучшить показатели Core Web Vitals

LCP (загрузка)


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

Старые метрики, такие как load или DOMContentLoaded, не подходят, так как они всегда соответствуют тому, что пользователь видит на экране. А более новые показатели производительности, такие как First Contentful Paint (FCP), отражают только самое начало процесса загрузки.
В ходе исследований обнаружилось, что более точный способ измерить загрузку основного содержимого страницы, это посмотреть, когда был отрисован самый большой элемент.

Так появилась метрика Largest Contentful Paint (LCP), которая измеряет время рендеринга самого большого элемента на странице.


Что считается большим элементом?


  • тег img
  • элементы image внутри тега svg
  • постер в теге video
  • фоновое изображение, загруженное с помощью url() (не считая CSS градиента)
  • блочные элементы, содержащие текстовые узлы или другие дочерние элементы.

Пока рассматривается ограниченный список, чтобы упростить начальное внедрение Core Web Vitals. Дополнительные элементы (например, тег svg, video) планируют добавить в будущем по мере проведения дополнительных исследований.

Как это работает?


Веб-страница загружается поэтапно, и в результате самый большой элемент на ней может измениться.

Чтобы справиться с таким изменением, браузер отрисовывает первый кадр и отправляет PerformanceEntry с параметром large-contentful-paint, который идентифицирует самый большой элемент. Но затем, после рендеринга последующих кадров, браузер будет отправлять PerformanceEntry при каждом изменении самого большого элемента.

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

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


Рис.1. Изменение самого большого элемента по мере загрузки содержимого

Как определяется размер самого большого элемента?


Размер элемента определяется в области видимости пользователя: если элемент выходит за её пределы (обрезан или имеет overflow: hidden), то эти части не учитываются.

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

Для текстовых элементов учитывается только размер их текстовых узлов.

Для всех элементов любые margin, padding или border не рассматриваются.

FID (интерактивность)


Метрика First Input Delay (FID) помогает измерить первое впечатление пользователя об интерактивности и быстродействии вашего сайта.

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

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



FID можно измерить только в реальных условиях.

Почему рассматривается именно первый ввод?


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




CLS (визуальная стабильность)


Cumulative Layout Shift важный, ориентированный на пользователя показатель для измерения стабильности верстки и элементов, не препятствующих взаимодействию с контентом.

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


Рис.2. Пример Cumulative Layout Shift

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

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


CLS измеряет общую сумму всех показателей визуальной стабильности верстки в течение сессии страницы.

Показатель визуальной стабильности определяет Layout Instability API, который отправляет layout-shift каждый раз, когда существующий элемент меняет свое начальное положение между двумя кадрами.

Обратите внимание, что визуальная стабильность не учитывается, когда новый элемент добавляется в DOM или существующий элемент меняет размер.

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

layout shift score = impact fraction * distance fraction



Рис.3. Коэффициент воздействия

На изображении выше есть элемент, который занимает половину области просмотра в одном кадре. Затем в следующем кадре элемент смещается вниз на 25% от высоты экрана. Красный пунктирный прямоугольник указывает на объединение видимой области элемента в обоих кадрах, которая в данном случае составляет 75% от экрана.


Рис.4. Доля расстояния

Доля расстояния это наибольшее расстояние, на которое любой нестабильный элемент переместился в кадре (по горизонтали или вертикали), деленное на размер экрана.
В приведенном примере наибольшим размером экрана является высота, а нестабильный элемент перемещается на 25%.

Коэффициент визуальной стабильности = 0.75 * 0.25 = 0.1875



Как улучшить показатели Core Web Vitals?
Если ваше приложение не дотягивает до идеальных показателей, то нужно заняться вопросом повышения скорости. Итак, что можно сделать:

  • Сжимать, оптимизировать (бандл, картинки и т.д.).
  • Включить кеширование это позволит ускорить доступ к страницам, которые пользователь посещал ранее.
  • Использовать потенциал технологии AMP.
  • Уменьшить редиректы или использовать SPA.
  • Использовать CDN это позволит распределить контент между несколькими серверами, снижая количество маршрутизаторов между конечными файлами и пользователем.
  • И т.д.


Библиотеки и инструменты


Самый простой способ измерить все Core Web Vitals использовать js-библиотеку web-vitals, которая измеряет каждую метрику в соответствии с Инструментами Google.

import {getCLS, getFID, getLCP} from 'web-vitals';function sendToAnalytics(metric) {  const body = JSON.stringify(metric);  // Use `navigator.sendBeacon()` if available, falling back to `fetch()`.  (navigator.sendBeacon && navigator.sendBeacon('/analytics', body)) ||      fetch('/analytics', {body, method: 'POST', keepalive: true});}getCLS(sendToAnalytics);getFID(sendToAnalytics);getLCP(sendToAnalytics);

Или можно использовать расширение Web Vitals для Chrome.



  • Lighthouse позволяет проверять интерактивность, доступность, скорость загрузки страниц сайта в лабораторных условиях. C ним можно работать через командную строку, веб-интерфейс Page Speed Insights, инструменты для разработчиков в Chrome. Используйте Lighthouse после улучшений или изменений на сайте.
  • То, что видят пользователи, доступно в базе данных CrUX общедоступном наборе реальных данных о производительности пользователя. В базе находятся порядка 8-9 миллионов страниц.
  • PageSpeed Insights агрегирует данные из Lighthouse и CrUX и отображает их в отчете.
  • В Google Search Console есть данные по Core Web Vitals, и они доступны для каждой отдельной страницы и ее динамике.
  • В Chrome Dev Tools трассируются все три показателя LCP, CLS, TBT.


Рис.5. Пример отображения показателей в PageSpeed Insights

Итог


Не забывайте периодически следить за скоростью загрузки своего приложения. Быстрая реакция на любые негативные изменения позволит минимизировать потери и вовремя внести необходимые коррективы. Core Web Vitals влияет не только на индексацию, но и главным образом на конверсию, посещаемость и в результате на прибыль. К счастью, Google предупредил заранее о запуске новых факторов ранжирования, поэтому у вас есть еще время исправить все погрешности к запуску Core Web Vitals (май 2021).

Полезные ссылки и используемые материалы:

Подробнее..

Rambler Group на DevOpsLive-2020

05.10.2020 14:22:06 | Автор: admin
6 и 7 октября сотрудники Rambler Group примут участие в конференции DevOpsLive-2020. Участники смогут послушать выступления спикеров, узнать мнение экспертов холдинга по разным темам в zoom-комнатах и побороться за призы в онлайн-викторине Rambler Group.




В программе на 6 октября:

14:30, zoom-комната
тема: Балансировка трафика прошлое и настоящее. И другие вопросы о сетях
эксперты: Александр Жилин, тимлид сетевой команды Rambler Group, и Игорь Муравьев, сетевой инженер Rambler Group

16:30, zoom-комната
тема: Автоматика своими руками
эксперт: Назар Сурыев, тимлид эксплуатации AdTech Rambler Group

19:00, онлайн-викторина

В программе на 7 октября:

13:00
доклад Георгия Кашинцева, SRE-тимлида портала Рамблер, о том, как современные реалии могут влиять на развитие инфраструктуры и как занести облако в проект, не растеряв его по дороге

13:00, онлайн-викторина

14:30, zoom-комната
тема: Миграция production-сервиса из одного дата-центра в другой
эксперт: Михаил Кобзев, тимлид группы построения сервисов по модели SaaS Rambler Group

16:30, zoom-комната
тема: Opensource-виртуализация
эксперт: Илья Шестопалов, руководитель группы виртуализации и распределенных систем хранения данных Rambler Group

Больше подробностей тут: https://devopsconf.io/moscow/2020/partners/ramblergroup
Подробнее..

Yaml vs. Json что круче?

17.11.2020 10:12:56 | Автор: admin
image

Всем привет!

Сегодня поговорим об интересном (и таинственном для фронтов) формате YAML. Он считается одним из наиболее популярных форматов для файлов конфигураций.

Файлы с расширением .yaml или .yml вы можете встретить довольно часто, например .travis.yml (для Travis Build), .gitlab-ci.yml (для git lab CI) и др.
И тогда возникают резонные вопросы: что это за формат и чем он отличается от JSON-а?

Цель этой статьи познакомить вас со структурой YAML, помочь понимать, читать и изменять YAML-файлы. Для тех, кто уже знаком с форматом напомнить про некоторые его особенности. И сравнить YAML с JSON.


Цели создания


Сообщество разработчиков устало от зоопарка различных форматов для конфигов, им хотелось упростить себе жизнь и прийти к единому понятному формату. И в 2001 году Кларк Эванс создал YAML 1.0.

Его основные цели:

  1. быть понятным человеку;
  2. поддерживать структуры данных, родные для языков программирования;
  3. быть переносимым между языками программирования;
  4. использовать цельную модель данных для поддержки обычного инструментария;
  5. поддерживать потоковую обработку;
  6. быть выразительным и расширяемым;
  7. быть лёгким в реализации и использовании.


В официальной документации YAML можно увидеть такое определение:



Рис.1. Определение из официальной документации

Сейчас последняя версия YAML 1.2, и она в основном используется как формат для файлов конфигурации Ruby on Rails, Dancer, Symfony, GAE framework, Google App Engine и Dart. Также YAML является основным языком описания классов, ресурсов и манифестов для пакетов приложений OpenStack Murano Project и Swagger.io.

YAML vs. JSON


По сути YAML это язык разметки, который является расширенной версией известного нам формата JSON.

Чтобы лучше разобраться в формате, давайте сначала рассмотрим пример JSON-конфига:

tsconfig.json
{  "compilerOptions": {    "module": "system",    "noImplicitAny": true,    "removeComments": true,    "preserveConstEnums": true,    "outFile": "../../built/local/tsc.js",    "sourceMap": false,    "types": ["node", "lodash", "express"]  },  "include": ["src/**/*"],  "exclude": ["node_modules", "**/*.spec.ts"]}

Этот файл очень легко читается, мы можем быстро определить, что к чему, но нужно знать, что у JSON-формата есть некоторые ограничения:

  • нельзя создавать переменные;
  • нельзя использовать внешние переменные (например, переменные окружения);
  • нельзя переопределять значения.

Чтобы смягчить эти ограничения, можно заменить переменные с помощью создания JSON-файлов, а также использовать .eslintrc или .eslint.js. Но в других языках программирования это не вариант, поэтому YAML и стал так популярен.

Попробуем переписать наш пример в формате YAML. Пока рассмотрим только синтаксис, а остальные особенности чуть позже.

*Хабр не умеет подсвечивать YAML, так что пришлось разместить картинки


Как вам? Мне на первый взгляд показалось, что очень похоже на Python, но с какими-то опечатками.

Рассмотрим синтаксис подробнее.

Концепции, типы, синтаксис


Отступы


В YAML для разделения информации очень важны отступы. Нужно помнить, что используются только пробелы, табы не допускаются.
При отсутствии отступа перед первым объявлением YAML поймет, что это корень (уровень 0) вашего файла.

Если вы привыкли использовать tab-ы вместо пробелов, то можно использовать какой-нибудь плагин в вашей IDE, чтобы заменить все пропуски на пробелы (например, editorconfig).

Ключ/Значение


Как и в JSON/JS, в YAML есть синтаксис ключ/значение, и вы можете использовать его различными способами:



Комментарии


Чтобы написать комментарий, вы можете использовать #, а затем ваше сообщение.



Это круто, когда нужно задокументировать какое-то решение или сделать заметку в конфиге. К сожалению, мы не можем так сделать в JSON.

Списки


В YAML есть 2 способа написания списков:

  • Синтаксис JSON: массив строк

    Помните, что YAML это расширенный JSON? Поэтому мы можем использовать его синтаксис
    people: ['Anne', 'John', 'Max']
    

  • Синтаксис дефиса

    Наиболее распространенный и рекомендуемый
    people: - Anne - John - Max
    


Числа


Тут все стандартно: целые числа и числа с плавающей точкой.


Строки


Есть несколько способов объявить строку в YAML:


Если вы хотите использовать какой-нибудь специальный символ, например, _ или @, то нужны будут кавычки.

Напомню, что в JSON у нас есть только один способ написания строк двойные кавычки.

И главная фишка

Якорь (переменная или ссылка)


Якорь это механизм для создания переменных, на которые затем можно ссылаться.

Давайте представим, что вам нужно создать конфигурацию для вашего CI. Он будет иметь версию для production и development сред. Обе версии будут иметь почти одинаковые базовые настройки.
В JSON нам пришлось бы дублировать эти конфиги:

{  "production": {    "node_version": "13.0.0",    "os": "ubuntu",    "package_manager": "yarn",    "run": ["yarn install", "NODE_ENV=${ENVIRONMENT} yarn build"],    "env": {      "ENVIRONMENT": "production"    }  },  "development": {    "node_version": "13.0.0",    "os": "ubuntu",    "package_manager": "yarn",    "run": ["yarn install", "NODE_ENV=${ENVIRONMENT} yarn build"],    "env": {      "ENVIRONMENT": "development"    }  }}


Копирование и вставка очень раздражают, особенно когда нужно что-то изменить во всех местах.
Якорь решает эту проблему. Для его создания используется символ якоря (&), а для вставки алиас (*).



Итог




Рис.2. Отсылка к фильму Матрица

Возможности YAML-а покоряют при его сравнении с JSON. Но если у вас довольно простой конфиг в пару-тройку строк, то нет смысла усложнять и использовать дополнительные возможности YAML, лучше выбрать JSON. А если же у вас довольно большой и витиеватый файл, то тут однозначно стоит рассмотреть YAML.

У YAML есть еще несколько интересных фишек таких как: многострочный ввод, мерж блоков, матрицы, наследование и другие.

Так как YAML это расширенный JSON, то мы можем писать YAML-файл в JSON-формате, и он будет работать. Это отличная особенность, которая позволит легче начать изучение YAML.

P.S. Если кто-то хочет напоследок большей жести, то можете почитать про сравнение YAML c XML или про переход с XML на YAML.

Полезные ссылки и используемые материалы:


  1. YAML для веб-разработчиков
  2. YAML. Общее описание. Википедия
  3. Документация
  4. Библиотечки для YAML
  5. 10 шагов к YAML-дзену
  6. Некоторые приемы YAML
Подробнее..

RamblerFrontamp Meetup 9

04.03.2021 14:05:18 | Автор: admin

Прошлый год не считается, поэтому начнем все заново:)

Мы анонсируем проведение девятого RamblerFront& Meetup 18-го марта в 19:00. В этом году он пройдет онлайн, но обещает быть столь же интересным, как и предыдущие.

Обязательно регистрируйтесь заранее по ссылке.

Ведущий и модератор:


В программе:

  • AdBlock: Блокировка рекламы с помощью JS и не только

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

  • Content Indexing API. Страницы, доступные в offline

Content Indexing API новый инструмент от Google, показывающий, какие страницы доступны в офлайн-режиме. Как работает Content Indexing API, когда его следует использовать, как мы внедряли его на lenta.ru и какие видим перспективы вы узнаете из доклада.

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

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

Подробнее..

Как мы делаем App Clips?

18.12.2020 18:13:39 | Автор: admin
App Clips это облегченные версии приложения для iOS 14, которые позволяют людям быстро выполнять определенную задачу, не скачивая и не устанавливая его полную версию из App Store. Компания Apple анонсировала такие мини-приложения на всемирной конференции для разработчиков WWDC 2020. Мы в Rambler Group одними из первых попробовали App Clips для приложений Рамблер/кассы.




Как работают App Clips

App Clip это часть полного приложения (по правилам Apple App Clips не могут превышать 10 МБ), заточенная на выполнение определенной задачи. Например, заказ еды, покупка билета, бронирование гостиницы и т.д. При этом App Clips не надо устанавливать достаточно просто запустить по ссылке.

Мини-приложения не сохраняются на домашних экранах смартфона или планшета iOS, а размещаются в Библиотеке приложений. Через 30 дней с момента последнего запуска они автоматически удаляются с устройства. Для удобства пользователей в App Clips есть возможность добавить поддержку Apple Pay и вход через Apple ID для быстрой авторизации и оплаты услуг и товаров без регистрации, ввода дополнительной информации и номера банковской карты.



Также Apple сделала множество вариантов запуска App Clips как в офлайне, так и в онлайне:

  • фирменная метка App Clips
  • NFC-метка
  • QR-код
  • URL-ссылка
  • баннер
  • Apple Maps
  • Siri.




При этом App Clips используют такую же кодовую базу, что и основное приложение, а по своему формату больше похожи на плагин или контейнер.

Краткое руководство по добавлению App Clips в Рамблер/кассу

В этой статье мы хотим рассказать о некоторых нюансах создания App Clips для приложений Рамблер/кассы.

Для интеграции мини-приложения на данный момент у нас выработан алгоритм:

1. Необходимо добавить target AppClip в проект, при этом указав целевой проект родительским (в нашем случае target Kassa).
2. Добавить при необходимости нужные pod'ы, указав их для конкретного target в Podfile (выполнить pod install).
3. В настройках таргета App Clips нужно перейти на вкладку Signing & Capabilities и в секции Associated Domains добавить домен вида appclips:{домен ссылки, которая будет открывать App Clips}. В случае Рамблер/кассы это appclips:kassa.rambler.ru и appclips:m.kassa.rambler.ru.
4. Указать версию и билд для target с App Clips, которые идентичны версии и билду родительского таргета.
5. Обработать входящие url для App Clips и реализовать навигацию для App Clips в методе, согласно документации Apple
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void -> Bool.
6. Собрать архив с приложением (оно должно автоматически включать App Clips) и отправить его в AppStore.
7. Вы великолепны!

Ссылки и открытие экранов

После того как пользователь нажимает Открыть AppClip/Приложение на всплывающем экране с App Clips, срабатывает метод:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool

В userActivity.webpageURL лежит URL-ссылка, которую мы зашивали в качестве ссылки для App Clips.

После этого на основе параметров из этой ссылки откроется нужный экран приложения.

Виды ссылок

В данный момент App Clips Рамблер/кассы поддерживает три сценария покупки билетов:
  • открытие экрана деталей конкретного мероприятия;
  • открытие экрана деталей конкретного места;
  • открытие экрана конкретного сеанса для конкретного мероприятия.

Для тестирования мы взяли рабочие ссылки на ивенты, доступные на Рамблер/кассе с различными параметрами.

1. Мероприятие. В качестве вводных параметров взяли creationid, cityid, creationtype:
m.kassa.rambler.ru/msk/movie/100547?creationid=100547&cityid=2&creationtype=movie

Ссылка открывает экран деталей мероприятия, окружение идентично покупке билета в полноценном приложении, за исключением следующих вещей:
  • на экране с деталями мероприятия отсутствует кнопка добавления в избранное;
  • отсутствует отображение видео на деталях мероприятия.


2. Место. В качестве вводных параметров взяли placeid, cityid, creationtype:
m.kassa.rambler.ru/msk/cinema/formula-kino-cdm-54351?placeid=97417&cityid=2&creationtype=movie

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


3. Ссылка на конкретный сеанс. В качестве вводных параметров взяли sessionid:
m.kassa.rambler.ru/msk/concert/717293?cityid=2&sessionid=54293235

Ссылка открывает экран с конкретным сеансом (в виде таблицы или схемы зала), окружение идентично покупке билета в полноценном приложении.







Проблемы и решения

1. App Сlip запускается и падает

Проблема наблюдается при использовании сторонних pod'ов. При сборке продукта не копируются библиотеки в конечную директорию. Причина отсутствие скрипта в Build Phases.

Для решения этой проблемы необходимо добавить скрипт (назовем его [CP] Embed Pods Frameworks):

${PODS_ROOT}/Target Support Files/Pods-{здесь имя таргета с апклипсом}/Pods-{здесь имя таргета с апклипсом}-frameworks.sh

В случае Рамблер/кассы скрипт выглядит так:
${PODS_ROOT}/Target Support Files/Pods-KassaAppClip/Pods-KassaAppClip-frameworks.sh

2. Сборка с App Clips собирается, архивируется и отправляется в AppStore, но приходит reject из-за веса приложения

В основном причиной этой проблемы являются какие-то большие ресурсы и сторонние библиотеки.

Одним из решений, позволяющим уменьшить размер библиотеки в целевом архиве, является включение Bitcode (Build Settings/Build Options/Enable Bitcode).

3. В App Clips метод UIDevice.current.identifierForVendor возвращает 000000-0000-000000.....

Это связано с особенностью App Clips: Apple ограничила доступ к идентификатору из соображений безопасности. В App Clips Рамблер/кассы мы используем рандомно сгенерированную 32-значную соль.

Что в итоге?

App Clips хороший способ повышения конверсии для таких e-com-приложений, как Рамблер/касса. В плюсе остаются все:

  • пользователи могут быстро купить билет, не скачивая и не устанавливая основное приложение;
  • разработчикам приятно быстро реализовать возможность, которая позволит быть зафичеренными или засветиться на лендинге с презентацией новой iOS 14:

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru