Розробка системи хештегів в мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Розробка системи хештегів в мобільному додатку
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Розробка системи хештегів в мобільній програмі

Хештеги в мобільній програмі — це три окремих завдання: парсинг #тег при вводі тексту, автодополнення в редакторі, та сторінка тега з контентом. Кожне з них має нюанси, які не видні з ТЗ.

Парсинг та виділення у тексті

Хештег у тексті повинен бути кликабельним та візуально виділеним — синім або фірмовим кольором. На iOS це NSAttributedString з кастомними атрибутами:

func attributedText(from text: String) -> NSAttributedString {
    let attributed = NSMutableAttributedString(string: text)
    let hashtagPattern = #"#[\w\u0400-\u04FF]+"#  // підтримка кириліці
    let regex = try! NSRegularExpression(pattern: hashtagPattern)
    let matches = regex.matches(in: text, range: NSRange(text.startIndex..., in: text))
    for match in matches {
        attributed.addAttribute(.foregroundColor, value: UIColor.systemBlue, range: match.range)
        attributed.addAttribute(.link, value: "hashtag://\(match.range)", range: match.range)
    }
    return attributed
}

Обробка тапу — через UITextView.delegate метод textView(_:shouldInteractWith:in:interaction:). Перехопіть URL-схему hashtag:// та відкрийте екран тега.

На Compose — AnnotatedString з SpanStyle:

buildAnnotatedString {
    val hashtagRegex = Regex("#[\\w\\u0400-\\u04FF]+")
    var lastIndex = 0
    hashtagRegex.findAll(text).forEach { match ->
        append(text.substring(lastIndex, match.range.first))
        pushStringAnnotation("HASHTAG", match.value)
        withStyle(SpanStyle(color = MaterialTheme.colorScheme.primary)) { append(match.value) }
        pop()
        lastIndex = match.range.last + 1
    }
    append(text.substring(lastIndex))
}

Важливо: regex для хештегів повинен підтримувати не тільки ASCII, а й кирилицю, арабський та інші Unicode-алфавіти — \w у більшості реалізацій не покриває їх без явного вказання Unicode-діапазонів.

Автодополнення при вводі

При вводі # у поле створення поста запусніть пошук за базою хештегів. Логіка:

  1. Відстежуйте позицію курсора в тексті.
  2. Шукайте # перед курсором без пробілів.
  3. Текст після # — пошуковий запит.
  4. Запитайте GET /hashtags/suggest?q=сп з debounce 200ms.
  5. Покажіть dropdown під полем введення (не над ним — клавіатура перекриває).

На iOS dropdown — окремий UITableView, додаваний у UIWindow поверх основного контенту. Позиціонуйте по caretRect(for:) з UITextInput. При виборі хештега з списку — вставте у текст через replace(_:withText:) та сховайте dropdown.

На Compose — ExposedDropdownMenuBox або кастомний Popup прив'язаний до поля введення.

База хештегів та аналітика

Таблиця hashtags (id, name, posts_count). При публікації поста парсіть хештеги, шукайте або створюйте запис у hashtags, створюйте зв'язок post_hashtags (post_id, hashtag_id). posts_count оновлюється через чергу.

Сторінка хештега — GET /hashtags/{name}/posts з пагінацією. Сортування за датою або популярністю (пости з найбільшим engagement за останні N днів). Trending hashtags: worker рахує posts_count за останні 24 години, результат кешується у Redis на 30 хвилин.

Нормалізація імен

Хештеги нечутливі до регістру: #React, #react, #REACT — один тег. Зберігайте у lowercase, при пошуку — LOWER(name) = LOWER(?) або індекс на LOWER(name). Пробілі та спецсимволи у імені хештега — видаліть при нормалізації.

Часові рамки

Парсинг та кликабельні хештеги у тексті — 1 день. Автодополнення при вводі — ще 1 день. Сторінка тега з лентою — 1-2 дні. Повна система — 2-3 робочих дні. Вартість розраховується індивідуально.