Почему не получается зарегистрироваться в bff
Перейти к содержимому

Почему не получается зарегистрироваться в bff

  • автор:

Использование паттерна BFF для создания общих типов в бэкенде и фронтенде

image

Контракт между бэкендным сервисом и фронтендным потребителем (или клиентом) обычно является местом соединения двух миров. Такой контракт может принимать форму спецификации REST API, конечной точки GraphQL, или чего-то другого. Главное, чтобы он сообщал обеим сторонам, чего ожидать друг от друга.

Такова любовная история между бэкендом Node.js и фронтендом React. Живя в разных мирах, они нашли общий язык для общения, но этого было недостаточно — всё равно случались недопонимания: иногда один ждал, что другой скажет что-то такое, чего второй не может выразить. Такой была ситуация до недавнего времени, когда произошла генерализация TypeScript (и типов TypeScript), благодаря которой они начали говорить на одном языке.

Давайте узнаем, что такое шаблон BFF (нет, это не шаблон Best Friends Forever, как бы здорово это ни звучало), и разберёмся, как типы TS могут помочь нам создать надёжный контракт между бэком и фронтом.

Паттерн BFF

Как и другие забавные акронимы в нашей отрасли, шаблон BFF основан на концепции «Best Friends Forever», однако инженеры решили назвать его «Backend For Front-end».

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

Тем не менее, иногда случается, что клиентские приложения по каким-то причинам не всегда хотят/могут исполнять контракт вашего API. Из-за этого во фронтенд нужно добавлять новую логику для парсинга и преобразования ответа в то, что он может использовать.

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

На самом ли деле шаблон BFF лучше, чем отсутствие шаблонов? Преимущества:

  1. Клиентское приложение остаётся «глупым», и это предпочтительно с точки зрения безопасности и простоты использования. Чем глупее должны быть клиентские приложения, тем быстрее другие команды смогут создавать клиентские приложения. Кроме того, основная бизнес-логика и необходимая обработка данных остаются сокрытыми на стороне бэкенда.
  2. Увеличение задержки из-за дополнительного подключения в бэкенде теоретически должно быть меньше, чем влияние потребления дополнительных ресурсов во фронтенде.
  1. Из-за нового элемента (т.е. ещё одного сервиса) архитектура системы усложняется. В нашем примере рассматривается только один BFF, но потенциально вы можете создавать по одному BFF для каждого типа клиентских приложений.
  2. Из-за BFF-сервиса существует тесная косвенная связь между бэкендом и фронтендом. Да, смысл BFF на самом деле в том, чтобы контракт между бэком и фронтом был именно таким, какой нужен клиенту, что до минимума снижает вероятность внесения изменений в будущем. Однако эта вероятность никогда не равна нулю, и модификации в бэкенде или фронтенде подразумевают непосредственное изменение на другой стороне. То есть они связаны.

Что насчёт общих типов?

Общие типы (Shared types) — это специализация шаблона BFF, рассчитанная на TypeScript; она позволяет использовать общее определение типов в коде и фронтенда, и бэкенда.

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

Чтобы это сработало, нужно найти способ превратить определение типов в отдельный модуль, который смогут импортировать обе команды. Это можно сделать множеством способов, например:

  • Если у вас есть монорепозиторий, то можно просто импортировать определение из generic path в оба проекта. Однако такой подход привязывает жизненный цикл ваших типов к обоим проектам одновременно, потому что внося изменение в файл (например, в определение типа), вы влияете на весь монорепозиторий. Да, хорошо владея git, вы можете обойти эти проблемы, но это немного трудоёмко.
  • Можно превратить определение типов в модуль NPM, после чего установить в качестве зависимости в код фронтенда и бэкенда. Затем всё будет работать отлично, но на этапе начальной разработки вам необходимо будет опубликовать модуль, иначе у вас будут локальные пути импорта, которые придётся рефакторить в абсолютные. И даже после завершения начального этапа разработки любые изменения в локальной версии модуля типов нужно будет публиковать, иначе их не увидят другие проекты. Это может оказаться довольно хлопотным.

Что такое Bit?

Если вы о нём ещё не слышали, Bit — это open-source-инструмент (имеющий нативную интеграцию с платформой удалённого хостинга Bit.dev), помогающий создавать и делать общими независимые компоненты. Это компоненты (или модули), которые независимо разрабатываются, имеют собственные версии и над которыми можно совместно независимо работать.

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

Хотя кажется, что это ужасно похоже на NPM, есть и важные отличия:

  • Не нужно физически извлекать код, чтобы создавать независимые новые версии, делать его общим и совместно над ним работать. Можно «экспортировать» компонент прямо из своего репозитория. Bit позволяет задать часть кода в качестве компонента и с этого момента работать с ним независимо. В свою очередь, это позволяет упростить процесс совместного использования, потому что нет необходимости в настройке отдельного репозитория и переработке процесса импорта этих файлов в свой проект.
  • Люди, «импортирующие» ваши компоненты (а не просто устанавливающие их), также могут участвовать в совместной работе над ними, изменять их и экспортировать обратно в их «remote scope» (удалённый хостинг компонентов). Это невероятно мощный подход, если вы работаете группой команд в одной организации, потому что вы можете совместно работать над одним и тем же инструментом без необходимости работы над отдельным проектом. При импорте компонента Bit код скачивается и копируется в вашу рабочую папку. Также при этом генерируется соответствующий пакет в папке node_modules . При изменении исходного кода (в рабочей папке) пакет генерируется заново. Благодаря этому вы можете использовать его, указывая абсолютный путь, подходящий для всех контекстов (это сработает, даже если вы решите установить пакет компонента без его импорта).

Создание общего модуля типов

Чтобы показать красоту практического применения этого паттерна общих типов, я создам три компонента:

  • Разумеется, определение типов. Его будут использовать на своей стороне два других компонента. Также этот компонент будет экспортировать мок с фейковыми данными, используемый компонентом фронтенда, когда у него нет связи с бэкендом. Последняя часть нужна только в качестве примера, вероятно, вы найдёте более удобные способы решения проблемы на своей стороне.
  • Бэкенд-сервис, экспортирующий функцию, готовую к созданию HTTP-веб-сервера и передаче фиксированного ответа на каждый запрос. Так как это пример, сервер будет очень простым, однако его будет достаточно, чтобы показать полезность подхода. В своём коде он будет использовать общее определение типов для проверки того, что ответ имеет нужный формат.
  • React-компонент, который будет запрашивать данные у сервиса (или использовать данные мока) и рендерить их на странице. Разумеется, в его коде тоже будет использоваться общее определение типов.

Исходная структура

Будем считать, что вы уже установили Bit и залогинились в платформе. Теперь потратьте две минуты на создание коллекции (также называемой «scope») и назовите её «bff» (можете выбрать любое другое имя).

Затем инициализируем рабочую среду:

$ bit init --harmony

После этого отредактируем файл workspace.jsonc и зададим defaultScope значение [username].bff , в моём случае это выглядит как «deleteman.bff» .

Теперь можно перейти в терминал и создать первый компонент:

$ bit create react-component ui/client-app

Создастся новый компонент на основе React-шаблона, в котором будет присутствовать бойлерплейт. Также будет создана структура папок, необходимая для новых компонентов (должна создаться папка bff и папка ui/client-app внутри неё).

Следующие два компонента нужно создать вручную, потому что у Bit пока нет для них шаблонов:

image

Просто скопируйте показанную выше структуру, поместив общие типы в папку common/bff-types , а сервис в папку backend/service .

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

Определение типов в нашем примере будет очень простым:

//index.ts file import from './types' const ServiceResponseMocks: ServiceResponseType = [ < name: "Fernando Doglio", age: 37, address: "Madrid, Spain" >] export //types.d.ts file type PersonType = < name: string, age: number, address: string >type ServiceResponseType = PersonType[] export

Обратите внимание, что в показанный выше фрагмент кода я включил оба файла.

Код сервиса не сложнее:

//service.ts file import * as http from 'http'; import from '@deleteman/bff.bff-types'; let data: ServiceResponseType = [ < name: "Fernando Doglio", age: 23, address: "Madrid, Spain" >, < name: "Second Person", age: 99, address: "Somewhere else" >] export function newServer() < http.createServer(function (req, res) < res.setHeader('Content-Type', 'application/json'); res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET'); res.setHeader('Access-Control-Max-Age', 2592000); // 30 days res.end(JSON.stringify(data)); >).listen(8000); > //index.ts file inside backend/service export * as service from './service'

Обратите внимание, что я всегда возвращаю JSON с двумя элементами внутри и использую определение типов, чтобы создаваемая структура возвращалась без потери атрибутов. Экспортированная функция newServer создаёт простой HTTP-сервер (никакого Express или чего-то подобного) и настраивает необходимые CORS-заголовки, чтобы вы могли протестировать пример сервера со своего локального хоста.

React-компонент выглядит так:

import React, < ReactNode, useState >from 'react'; import from 'react'; import from '@deleteman/bff.bff-types'; export function ClientApp(props: ) < let [items, setItems] = useState([]) let [error, setError] = useState(null) useEffect(() => < if(props.mock) < return setItems(ServiceResponseMocks) >fetch("http://localhost:8000") .then(res => res.json()) .then( (result: ServiceResponseType) => < setItems(result as ServiceResponseType); >, (error) => < setError(error); >) >, []) if(error) < return (

Error found: ) > return (

); > function renderPeople(ppl: ServiceResponseType): ReactNode[] < return ppl.map( (person: PersonType) =>< return
>

Name:

Age:

Address:

>) >

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

Вы уже наверно заметили две строки import и в компоненте сервера, и в React-компоненте:

import from '@deleteman/bff.bff-types';

Обычно это должно обозначать, что я уже опубликовал модуль общих типов и теперь импортирую его. Однако благодаря Bit это не требуется. Мне достаточно было превратить модуль в компонент, после чего Bit создаёт внутри папки node_modules символическую ссылку, указывающую на мою локальную копию. Это, в свою очередь, позволяет мне работать над другими компонентами, как будто всё уже было опубликовано.

Превращаем код в компоненты

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

$ bit add bff/backend/service $ bit add bff/common/bff-types

image

image

Итак, мы сообщили Bit, что эти две папки тоже содержат компоненты и что их тоже нужно отслеживать. Также это должно изменить содержимое файла .bitmap (трогать его не нужно, просто убедитесь, что он существует для каждого из модулей).

Последнее, что нужно сделать, прежде чем всё будет готово — вернуться в файл workspace.jsonc и изменить ключ variants , чтобы для каждого компонента использовалась нужная среда. Помните, что мы работаем с React-компонентом на одной стороне, с Node.js-компонентом с другой и с обобщённым компонентом, поэтому Bit должен знать об этом. Просто откройте файл и убедитесь, что раздел teambit.workspace/variants выглядит следующим образом:

"teambit.workspace/variants": < "bff/ui/client-app": < "teambit.react/react": <>>, "bff/common/*": < "teambit.react/react": <>>, "bff/backend/service": < "teambit.harmony/node": <>> >

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

Интересной для нас информацией здесь является URL импорта. Можно получить его, нажав на компонент после запуска сервера, первым делом вы увидите автоматически сгенерированную строку.

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

Если вы хотите поделиться этой работой с другими, это тоже можно сделать через Bit:

$ bit tag --all #1 $ bit export #2

Шаг 1 помечает все компоненты, то есть мы создаём для них версию, под которой они будут экспортироваться. Шаг 2 экспортирует компоненты в глобальный репозиторий Bit.dev. На случай, если вам захочется взглянуть, я поделился своим здесь.

image

Что же мы сделали?

Благодаря использованию Bit и шаблона общих компонентов мы смогли соединить бэкенд-сервис с фронтенд-приложением, обеспечив для них общее определение типов.

Но что ещё здесь произошло?

  1. Во-первых, мы разработали и опубликовали три модуля, при этом нам даже не пришлось думать о компиляторе TS, WebPack, NPM или любых других инструментах, за исключением Bit. Именно поэтому я выбрал Bit и поэтому считаю его таким полезным инструментом. Он абстрагировал все шаги, необходимые для создания трёх компонентов, даже когда они работают в трёх разных средах.
  2. Мы работали с локальной зависимостью, которая должна быть внешней зависимостью, и даже не заметили разницы. Каждое обновление, вносимое в локальную версию компонента с типами BFF, подхватывалось другими двумя компонентами, и нам не приходилось заново выполнять весь процесс экспорта.

Эта связь образуется между сервером и одним клиентом — помните, BFF связывает одно клиентское приложение (или тип приложений) со специализированной версией сервера. Он не отменяет обобщённый контракт с другими клиентами, которые могут использоваться с исходной версией сервиса.

Дата-центр ITSOFT – размещение и аренда серверов и стоек в двух ЦОДах в Москве; colocation GPU-ферм и ASIC-майнеров, аренда GPU-серверов. Лицензии связи, SSL-сертификаты. Администрирование серверов и поддержка сайтов. UPTIME за последние годы составляет 100%.

  • Блог компании ITSOFT
  • Проектирование и рефакторинг
  • Node.JS
  • ReactJS
  • TypeScript

Мое приложение не работает. Что мне делать?

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

  1. Выйдите из аккаунта Bumble (по возможности)
  2. Удалите приложение Bumble (но не ваш аккаунт/профиль)
  3. Очистите файлы cookies и кэш вашего браузера в настройках устройства
  4. Повторно загрузите приложение Bumble и авторизуйтесь

В зависимости от вашего устройства, для удаления файлов cookies и кэша необходимо будет выполнить следующие действия:

  1. Откройте Настройки на вашем устройстве
  2. Пролистайте вниз и нажмите “Safari”
  3. Пролистайте вниз и нажмите “Дополнения”
  4. Нажмите “Данные сайтов” и выберите “Удалить все данные”
  1. Откройте приложение Chrome
  2. Нажмите на три точки в правом верхнем углу
  3. Нажмите “История” и выберите “Очистить историю”
  4. Выберите временной диапазон, для которого вы хотите удалить данные
  5. Отметьте пункты “Cookie, данные сайтов” и “Файлы, сохраненные в кеше”
  6. Нажмите “Очистка истории”

Если проблема осталась, мы будем рады вам помочь! Свяжитесь с нашей Службой поддержки здесь.

Что делать, если не приходит SMS для подтверждения регистрации?

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

  • Если номер указан неправильно, замените его. Подробнее.
  • Если номер указан правильно, запросите код повторно и SMS придёт по резервному каналу.

Как запросить код повторно?

На странице Подтверждение регистрации нажмите Отправить код повторно. Подробнее.

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

Похожие вопросы

  1. Регистрация
  2. Авторизация
  3. Не могу авторизоваться. Что делать?
  4. Как сбросить пароль?
  5. Что делать, если не приходит SMS для подтверждения регистрации?
  6. Что делать, если не приходит письмо с подтверждением регистрации?
  7. Можно ли поменять электронную почту?
  8. Можно ли поменять телефон для подтверждения?

Есть вопросы? Мы поможем Вам:
Заказать обратный звонок
Ваша заявка на звонок принята
Мы свяжемся с вами в ближайшее время
Спасибо за подписку
Введите имя, чтобы мы знали, как к Вам обращаться.
Спасибо за подписку
Введите имя, чтобы мы знали, как к Вам обращаться.
Пользовательское соглашение

Пользовательское соглашение

1. Общие положения

1.1. В настоящем Соглашении, а также во всех отношениях, связанных с этим документом, применяются следующие понятия:

а) Администрация — компания ООО “Облачные технологии”, ИНН 5261088136, находящаяся по адресу: 603009 г. Нижний Новгород, ул. Азовская, д. 16, оф. 12.

б) Пользователь — любое дееспособное физическое или юридическое лицо, зарегистрированное в Программе Smarty CRM и использующее её в своих интересах либо в интересах представляемых им лиц.

в) Программа — совокупность программного кода и базы данных, в том числе исходный текст, аудио, видео и визуальное отображение. Зарегистрированное название Программы — Smarty CRM (Свидетельство о регистрации программы для ЭВМ №2014617050). Постоянный адрес веб-версии Программы: https://smartycrm.com/

г) Мобильное приложение — клиент для использования Программы, адаптированный для работы на мобильных устройствах (телефоны, планшетные компьютеры и прочие устройства с операционными системами Android, iOS, Windows и пр.).

д) Аккаунт Пользователя — рабочая область Программы, доступ к которой становится возможным после регистрации и авторизации в Программе, в том числе через Мобильное приложение.

е) Соглашение — настоящий документ со всеми изменениями и дополнениями.

ж) Сайт — информационная площадка для размещения сведений о Программе, в том числе документации, настоящего Соглашения, контактов Администрации и прочих сведений. Также используется для регистрации и авторизации в Программе. Постоянный адрес сайта: https://smartycrm.com/

з) Сервер — специализированный компьютер, размещенный в дата-центре, необходимый для работы Программы.

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

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

— регистрацию и/или авторизацию в Программе через Сайт или Мобильное приложение;

— размещение в Программе любых материалов, включая текстовые данные, ссылки, изображения, различного рода файлы, а также иную информацию;

— просмотр размещенных в Программе материалов и обмен с другими пользователями;

— общение с другими пользователями через чат, обмен файлами и прочими данными.

1.3. Используя Программу одним из перечисленных в п. 1.2 способов, вы подтверждаете, что:

а) Ознакомились с настоящим Соглашением до начала использования Сервиса.

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

в) Любой пункт Соглашения может быть изменен или добавлен Администрацией без какого-либо специального уведомления Пользователя. Все изменения вступают в силу с момента опубликования на Сайте.

2. Общие условия использования Программы

2.1. Использование возможностей Программы возможно только после Регистрации и авторизации через Сайт или Мобильное приложение.

2.2. Все условия использования Программы, в том числе тарифные планы, Документация и прочие данные доводятся до сведения Пользователей путём размещения на Сайте и/или в интерфейсе Программы.

2.3. Указанные при регистрации электронная почта и пароль являются необходимыми данными для авторизации в Программе. Пользователь не имеет права передавать данные для авторизации третьим лицам, а также самостоятельно принимает меры для их сохранности. Администрация вправе усилить процедуру авторизации с помощью SMS или аналогичным способом.

3. Лицензия на использование Программы

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

3.2. Администрация устанавливает лимиты на объем и вид размещаемой Пользователями информации в Программе. Администрация также вправе устанавливать иные ограничения.

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

3.4. Использование Программы способами, не предусмотренными настоящим Соглашением, запрещается.

4. Гарантии Пользователя

Принимая положения настоящего соглашения, Пользователь подтверждает, что:

4.1. Обладает необходимыми правами и полномочиями для акцепта настоящего Соглашения и его исполнения.

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

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

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

5. Использование материалов Пользователя

5.1. Принимая условия настоящего Соглашения, Пользователь безвозмездно предоставляет Администрации право использовать материалы исключительно в целях развития Программы и поддержания её работоспособности.

5.2. Использование материалов Администрацией не должно нарушать авторских и иных прав Пользователя и третьих лиц.

6. Ограничения

Акцептуя настоящее соглашение, Пользователь соглашается со следующими положениями:

6.1. При использовании сервиса на безвозмездной основе не применяются положения законодательства о защите прав потребителей.

6.2. Программа, в том числе на платных тарифах, предоставляется на условиях “как есть”. То есть Администрация не предоставляет каких-либо гарантий, что Программа будет соответствовать всем требованиям, услуги будут предоставляться непрерывно, надежно и быстро, без каких-либо ошибок.

6.3. Администрация не несёт ответственности за содержание материалов, размещенных Пользователем в Программе. Вся ответственность возлагается на Пользователя, создавшего или разместившего данные материалы или на третьих лиц, получивших доступ к Аккаунту Пользователя при наличии вины Пользователя.

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

6.5. Запрещается использование Программы для:

— размещения, распространения, рекламирования и прочей демонстрации контрафактных материалов;

— размещения, распространения порнографических материалов, а также пропаганды порнографии и рекламы услуг интимного характера;

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

— рекламных рассылок другим пользователям, на которые они не давали согласие (спам);

— размещения файлов в Программе, закрытых паролями.

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

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

6.8. При наличии претензий третьих лиц к Администрации в отношении Пользователя, а также при выявленной подозрительной активности Администрация вправе инициировать идентификацию Пользователя путём запроса у него необходимых документов. После получения запрашиваемых документов Пользователь предоставляет Администрации заверенное обязательство урегулировать претензии третьих лиц собственными силами и за свой счёт. Сроки предоставления указанных выше документов — не более 5 (пяти) дней с момента получения запроса.

6.9. Администрация без объяснения причин имеет право удалять из Программы любые материалы, явно противоречащие Закону хотя бы одной из стран, где используется Программа.

6.10. При многократном или однократном грубом нарушении настоящего Соглашения Администрация вправе заблокировать или удалить Аккаунт Пользователя вместе с материалами, которые в нём размещены.

6.11. В случае привлечения Администрации к ответственности или наложения взыскания в связи с допущенным нарушением Пользователем настоящего Соглашения Пользователь обязуется компенсировать в полном объеме все убытки, в том числе судебные издержки и прочие расходы.

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

6.13. При любых обстоятельствах ответственность Администрации перед Пользователем ограничивается суммой 1000 (одна тысяча) рублей или эквивалентом в иностранной валюте.

7. Уведомления

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

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

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

8. Персональные данные и коммерческая тайна

8.1. Регистрируясь в Программе, Пользователь даёт письменное согласие на автоматизированную и неавтоматизированную обработку персональных данных, указываемых в момент регистрации, а также данных, в дальнейшем добавленных в его Аккаунт.

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

8.1.2 Обработка персональных данных осуществляется только в целях исполнения настоящего Соглашения.

8.1.3 Основанием для обработки персональных данных является Конституция России, Федеральный закон №152-ФЗ “О персональных данных” и настоящее Соглашение.

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

8.1.5 Персональные данные обрабатываются до момента удаления Аккаунта по запросу Пользователя на электронную почту support@smartycrm.com. При этом окончательное удаление осуществляется только после автоматического удаления файлов резервных копий баз данных, кэша и очистки от данных пользователя других технических и программных средств и баз данных, обеспечивающих стабильность работы Программы.

8.1.6 Согласие на обработку персональных данных может быть отозвано субъектом персональных данных или его представителем. При этом подобный отзыв приравнивается к удалению Аккаунта Пользователя.

8.1.7 Администрация несёт ответственность за соблюдение положений Федеральный закон №152-ФЗ “О персональных данных” и для этого назначает уполномоченных сотрудников, контролирующих соответствие правовым нормам.

8.1.8 Разъяснения по обработке персональных данных производятся уполномоченным государственным органом (Роскомнадзор, https://rkn.gov.ru/). Разъяснения, касаемые персональных данных по настоящему Соглашению могут быть предоставлены по письменному запросу на почтовый адрес Администрации.

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

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

9. Финансовые условия

9.1. Пользователь в любое время вправе отказаться от использования Программы. Отказ осуществляется в одностороннем порядке путём удаления Аккаунта в настройках Программы либо путём направления письменного уведомления на почту support@smartycrm.com. По запросу Пользователя, Аккаунт может быть заблокирован или удалён Администрацией.

9.2. Программа имеет один бесплатный и несколько платных тарифов с различными функциональными возможностями и лимитами на размещаемые материалы по количеству или объему. Пользователь самостоятельно выбирает тарифный план и производит на него подписку одним из предлагаемых способов. Перечень тарифов размещается на сайте https://smartycrm.com/ и непосредственно в интерфейсе Программы. Стоимость тарифов может отличаться в разных странах и в разных маркетах для мобильных приложений.

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

9.4. Предоставляемая при оплате персональная информация (имя, адрес, номер телефона, email, номер кредитной карты, срок её действия и пр.) является конфиденциальной и не подлежит разглашению. Указанная информация передаётся только в зашифрованном виде напрямую в процессинговую компанию и не сохраняется в базе данных Программы, а также в какой-либо иной базе Администратора.

Все операции с платежными картами происходят в соответствии с требованиями MasterCard, Visa, Discover, JCB, American Express и других платежных систем. При передаче информации используются специальные технологии безопасности карточных онлайн-платежей, обработка данных ведется на безопасном высокотехнологичном сервере процессинговой компании. В случае использования регулярных платежей при совершении первой операции номер карты Пользователя и срок действия будут сохранены на стороне процессинговой компании в безопасном хранилище. По факту выполнения или оказания услуг со стороны компании данные будут удалены автоматически. Все ресурсы процессинговой компании соответствуют стандартам безопасности PCI DSS.

10. Прочие условия

10.1. Пользователь самостоятельно определяет условия и порядок использования своего Аккаунта в Программе. Указанные условия не могут противоречить настоящему Соглашению.

10.2. Ко всем отношениям по данному Соглашению применяются нормы права Российской Федерации, а также нормы международного права.

10.3. Все споры по настоящему Соглашению подлежат рассмотрению в суде по месту нахождения Администрации в соответствии с процессуальным правом Российской Федерации.

10.4. Настоящее соглашение может быть прекращено или изменено в одностороннем порядке без предварительного уведомления Пользователя и без выплаты каких-либо компенсаций или неустоек.

10.5. Действующая редакция настоящего соглашения размещена на Сайте Администрации по постоянному адресу: https://smartycrm.com/ru/terms

11. Контактная информация

11.1. Контакты Администрации — email технической поддержки support@smartycrm.com. Другие контакты размещаются на Сайте https://smartycrm.com/

Privacy policy & refund policy

Privacy Policy & Refund Policy

Privacy Policy

This policy covers how we use your personal information. We take your privacy seriously and will take all measures to protect your personal information.

Any personal information received will only be used to fill your order. We will not sell or redistribute your information to anyone.

Refund Policy

If you are not 100% satisfied with your purchase, within 120 days from the purchase date, we will fully refund the cost of your order.

Зачем нужны приложения Whoo и BFF и почему их все скачивают

В топе App Store и Google Play часто оказываются приложения, о которых знают далеко не все пользователи. В начале 2023 года одними из скачиваемых оказалась утилита под названием Whoo: оказалось, ее загружают даже чаще, чем Телеграм или AliExpress! При этом, судя по версии 0.4.1, программа достаточно молодая, но на деле у него есть аналог и не один. Первое, что приходит на ум — Zenly. Приложение для слежки вышло на пик популярности прошлым летом, поэтому корейский разработчик LinQ решил создать достойный аналог и повторить успех. Разбираемся, что такое Whoo, чем оно отличается от Zenly и почему такие приложения популярны.

Зачем нужны приложения Whoo и BFF и почему их все скачивают. Эти приложения для слежки внезапно стали скачивать чаще. Фото.

Эти приложения для слежки внезапно стали скачивать чаще

Whoo — что за приложение

В последнее время в магазинах приложений особым спросом пользуются Zenly и его аналоги: несмотря на то, что утилита для поиска по геолокации долго находилась среди самых скачиваемых, в августе 2022 разработчики закрыли проект. Интересно, что приложение было популярно именно в России, но в других странах его не оценили. Так что, популярность Whoo — это норма: пользователи долго искали замену и наконец нашли.

Whoo — что за приложение. Приложение Whoo еще не появилось на Андроид, но его очень ждут. Фото.

Приложение Whoo еще не появилось на Андроид, но его очень ждут

Аналог Zenly популярен среди детей и подростков, которые любят делиться геолокацией с друзьями и просматривать местонахождение друг друга. Может показаться, что Whoo — приложение для слежки, но это не так: тут пользователи сами дают разрешение на просмотр геолокации. Казалось бы, мы уже это видели: в начале 2010-х среди пользователей был популярен Foursquare. Так что, новое — это хорошо забытое старое.

Приложение для отслеживания друзей

Whoo — альтернатива Zenly, можно сказать, точная копия. Никаких отличий в функциях нет: вы можете просматривать местоположение пользователей, добавив их в друзья, переписываться в чате. Whoo стало популярным ровно после добавления русского языка. Но при первом запуске вы можете заметить, что перевод интерфейса был выполнен некорректно и ошибками.

Приложение для отслеживания друзей. По оляпистому интерфейсу заметно, что Whoo делали на скорую руку. Фото.

По оляпистому интерфейсу заметно, что Whoo делали на скорую руку

К сожалению, Whoo для Android пока нет, но в версии для iOS указано, что оно находится в разработке. Зато есть приложение BFF — замена Zenly. О нем мы и расскажем, так как Whoo и BFF очень похожи.

Приложение для отслеживания друзей. BFF — еще один популярный аналог Зенли, который есть в Google Play. Фото.

BFF — еще один популярный аналог Зенли, который есть в Google Play

После регистрации BFF отобразит ваш QR-код, чтобы вы могли показать его другу для сканирования. У вас откроется карта, на которой можно увидеть местоположение друзей . Пользователей можно пригласить в приложение, нажав на «Добавить» в правом верхнем углу. Правда, перед этим нужно дать доступ к контактам, что довольно рискованно, учитывая специфику приложения. Заодно можно просмотреть тех, кто уже пользуется сервисом.

BFF — Найдите семью и друзей

BFF и Whoo не позиционируют себя как приложения для слежки: это просто программы для поиска друзей и развлечение. Недаром название расшифровывается как Best Friends Forever (лучшие друзья навсегда). Да и отслеживать местонахождение просто так не получится: для начала нужно одобрить запрос от людей, которых вы знаете лично. Кроме того, есть закрытый список друзей, в который можно попасть только по приглашению.

BFF — Найдите семью и друзей. Искать друзей здесь так же легко как и в Зенли. Фото.

Искать друзей здесь так же легко как и в Зенли

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

  • По BFF ID — с помощью никнейма.
  • Отсканировав QR-код друга.
  • По адресу электронной почты.
  • По номеру телефона.
  • Встряхиванием смартфона — аналог бампа в Зенли, когда нужно коснуться телефоном при встрече.

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

Как следить за человеком через телефон

Как следить за человеком через телефон. В Google Play много приложений с похожим названием, но вам нужно именно то, что выше всех в поиске. Фото.

В Google Play много приложений с похожим названием, но вам нужно именно то, что выше всех в поиске

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

  • Нельзя скрыть номер телефона.
  • В разработке находится режим невидимки.
  • Нет возможности скрыть свой аккаунт от знакомых.
  • Перевод в приложении есть не везде.

А вот обмануть геолокацию нельзя даже с помощью VPN: приложение не позволяет скрыть местонахождение как Зенли. С другой стороны, за счет имеющихся функций вы всегда можете найти свой телефон на карте, если стандартные опции не включены или же по какой-то причине не сработали — хороший способ обезопасить себя.

Так что, вряд ли BFF или Whoo можно назвать приложением для слежки в классическом понимании: нет возможности даже узнать маршрут человека, так как программа отображает лишь текущее местоположение.

Оставить комментарий в Telegram. Поделитесь мнением в чате читателей Androidinsider.ru

Теги

  • Google Play
  • Безопасность Android
  • Приложения для Андроид

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *