• Píšeme vlastní messenger pro Android. Jak udělat messenger skutečně anonymním. Jak jsme na tento nápad přišli

    A měla úžasný soukromý internet za plotem, kde byly místo URL „klíčová slova“: něco mezi adresou webové stránky a zakoupeným klíčovým slovem v reklamě. Společnosti soutěžily o zajímavá klíčová slova, stejně jako dnes soutěží o domény, a reklama vypadala takto: „navštivte nás na World Wide Web na adrese www.example.com nebo zadejte klíčové slovo AOL: „bankovnictví“.


    Historie má tendenci se opakovat. Nyní roli America Online hrají hlavní poslové: všichni jsou za ploty, navzájem nekompatibilní, všichni si vymýšlejí vlastní klíčová slova, chtějí uživatele urvat a už ho nepustit. Společnosti nemají zájem o otevřenost: větší hráči nechtějí sdílet uživatele s menšími, tím méně se stávají otevřenými. V důsledku toho není možné odeslat zprávu ani z WhatsApp do Facebook Messengeru, přestože oba patří stejné společnosti. A uživatelé oceňují spolehlivost a pohodlí nad abstraktní otevřeností, i když mnohým vadí, že někteří přátelé jsou například na Telegramu, někteří na WhatsApp a rodiče na Skype.


    Ale roli otevřeného internetu dnes bohužel nikdo nehraje. Chci změnit situaci. Pokud to nedokáže XMPP, možná to dokáže někdo jiný? A tady je příběh o Tinode.

    Co je Tinode

    Tinode je zcela open source messenger na Githubu. Všechny klientské aplikace (ReactJS a Android) jsou licencovány pod Apache 2.0, pro zjednodušení tvorby komerčních aplikací založených na Tinode je server pod GPL 3.0. Cílem projektu je vytvořit federovaný messenger, který je jednoduchý a pohodlný pro uživatele i operátory. Nainstalováno - a vše funguje jako MySQL nebo Nginx. Z dlouhodobého hlediska je cílem projektu vytvořit otevřenou alternativu ke stávajícím proprietárním instant messengerům a ve vztahu k instant messengerům opakovat to, co Android ve vztahu k operačním systémům pro mobilní telefony.

    Co může dělat?

    Podporuje více zařízení.

    Každý má chytrý telefon, někdy i více než jeden, navíc je často pohodlné používat webovou aplikaci z hlavního počítače. Proto byla podpora více zařízení jedním z hlavních požadavků na projekt, který určoval hlavní architektonická rozhodnutí. Pokud se uživatel přihlásí z nového zařízení, nechcete, aby začínal od nuly jako ve WeChatu. To znamená, že jak adresář, tak zprávy musí být uloženy na serveru, který byl implementován.


    Je zřejmé, že ukládání uživatelských informací na server není vhodné pro každého, protože vytváří riziko nežádoucího přístupu: čím více kopií dat je uloženo na různých místech, tím vyšší je pravděpodobnost, že se něco pokazí. Za tímto účelem je poskytována možnost dočasných zpráv a zpráv, které jsou po doručení klientovi ze serveru smazány. Technicky je zde i možnost neukládat kontakty na server trvale - klient je na server odešle v okamžiku připojení (přihlášení), poté jsou po odhlášení smazány. To však autoři považovali za neprakticky obtížné a neudělali to.

    Online stav

    Vysílání online/offline stavu uživatele v instant messengerech je považováno za samozřejmost, nicméně implementace této funkce je velmi obtížná. Musí „prostě fungovat“, předvídatelně a spolehlivě. Spolehlivost provozu eliminovala generování stavu na klientovi, jak je implementováno v některých aplikacích XMPP. V případě Tinode server vygeneruje online stav a odešle jej do adresáře, což opět vyžaduje uložení kontaktů na server a jejich synchronizaci s klientskými aplikacemi.

    Jednoduchost protokolu

    Chtěl jsem vytvořit protokol tak, aby křivka učení byla plochá - abyste mohli začít, nemusíte vědět všechno. Specifikace se ukázala jako velmi kompaktní: 10 požadavků klientů, 5 odpovědí serveru. Například ve srovnání s pouze 200+ stránkami jádro XMPP, nepočítaje rozšíření, je skoro poznámka na ubrousek.


    Prezentace dat je oddělena od síťového protokolu. Protokol vyžaduje pouze určitou datovou strukturu, ale nevyžaduje, aby byl nějakým konkrétním způsobem přenášen po síti. Nyní server podporuje JSON přes websocket a long polling, s i bez TLS, plus gRPC přes TCP. Podpora gRPC byla implementována jedním vývojářem za dva týdny, včetně psaní textového klienta v Pythonu. Přidání podpory pro další datové formáty a protokoly, jako je MessagePack nebo Noise, pravděpodobně nezabere mnohem více.

    Rozšiřitelnost

    Na jednu stranu chci, aby vše fungovalo hned, například aby hlavní funkcionalita byla srovnatelná s WhatsApp a Telegramem hned po vybalení. Na druhou stranu lidé mají různé potřeby a vy musíte mít možnost rozšířit funkčnost. Hledání rovnováhy je podobné jako volba mezi monolitickou architekturou a mikroslužbami: není žádoucí mít neměnný monolit a podobně je špatné skončit se zoo mikroslužeb, jejichž správa se stává samostatným úkolem.


    Bylo rozhodnuto rozdělit funkcionalitu na tři části – hlavní, síťovou a pomocnou. Tím hlavním je to, co umožňuje Tinode plnit jeho hlavní funkci – přeposílání zpráv. Síť - funkčnost interakce se servery, jako je formát přenášených dat a síťový protokol. Auxiliary – něco, co řeší něčí lokální problém, například podporuje určitou databázi jako backend nebo nějaký druh autorizační metody, ale nijak neovlivňuje jiné servery nebo uživatelské aplikace. Hlavní funkce je implementována v hlavním kódu. Síťové funkce jsou odděleny, ale také uloženy v hlavním úložišti, aby se zabránilo vytváření nekompatibilních serverů, kdykoli je to možné. Ten pomocný je implementován ve formě pluginů – zkompilovaných rozhraní Go (podpora různých databází, různých autorizací, push notifikace, validátory e-mailem nebo telefonicky, podpora captcha atd.) a koncové body gRPC (chatbot a vyhledávací rozhraní).

    jiný

    • Možnost, ale není podmínkou, propojit účet s telefonním číslem nebo emailem nebo čímkoli jiným.
    • ID uživatelů, která je obtížné uhodnout, a proto je obtížné odesílat spam.
    • Tagy, které vám umožní implementovat vyhledávání lidí jako ve WeChatu (a jako WeChat zabudovat do messengeru seznamovací službu) nebo rozdělit organizaci do oddělení jako ve Slacku.
    • Schopnost připojit uživatele bez registrace, nezbytná například pro organizaci podpůrné služby prostřednictvím chatu.
    • Rozhraní a příklad připojení chatbotů.
    • Plány na vytváření kanálů jako v telegramu.

    Proč jít?

    Server messenger je v podstatě směrovač: přijímá zprávu z jednoho kanálu, nějak ji zpracovává a poté ji přenáší na jiný kanál nebo kanály. Go (jako Erlang, ale to je jiný příběh) je ideální pro vytvoření takové funkce, protože... obsahuje primitiva goroutine a chan, díky nimž je organizování vláken a výměna dat mezi nimi efektivní a jednoduchá.


    Router lze samozřejmě napsat jak v C/C++, tak v Javě. Nicméně, jsou-li všechny ostatní věci stejné, kód se s největší pravděpodobností ukáže jako složitější a bude vyžadovat více úsilí, aby se zabránilo uváznutí.

    Co pak?

    Federace

    Jedním z hlavních úkolů Tinode pro nadcházející rok je vytvořit platformu pro federaci. Aby kdokoli mohl provozovat svůj vlastní server Tinode, který by si mohl vyměňovat zprávy s jakýmkoli jiným serverem, přesně jako je to možné u e-mailu. Klastrování serveru je již možné. Síťová výměna mezi serverem a klienty probíhá prostřednictvím TLS websocket, který je pro externího pozorovatele jen málo rozeznatelný od jednoduchého HTTPS provozu.


    Pravděpodobně bude použito veřejné DNS, alespoň zpočátku. V budoucnu se však bude vyhledávání chatovacích serverů provádět stejným způsobem jako v Bittorrentu – pomocí DHT, distribuované hashovací tabulky.


    Rád bych se také vyhnul problémům, za které je XMPP často kritizován. Například servery XMPP jsou velmi hovorné. Až polovina zpráv jsou duplikáty, kdy klient XMPP zasílá online upozornění jednotlivě každému kontaktu v adresáři.

    Reputace a distribuované rozhodování

    Systémy zasílání zpráv jsou nejvíce podobné e-mailu. Jak víte, významnou část e-mailů tvoří spam. Nechcete opakovat chyby ostatních, takže mechanismy, které omezují spam, by měly být okamžitě zabudovány do systému. Problém ještě není zcela vyřešen, ale existuje obecný směr:

    • Kryptografická identifikace odesílajícího serveru.
      Zpočátku SMTP nezahrnoval vůbec žádnou identifikaci odesílatele. Už na toto hrábě nešlápni. Každý server, který chce navázat kontakt, bude reprezentován kryptografickým certifikátem. "No, ano," řeknete, "teď vygeneruji 100 500 certifikátů a pokaždé se představím jako nový čistý server." A budete mít pravdu. Proto další bod.
    • Distribuované reputační účetnictví.
      Když zaklepe nový neznámý odesílající server, požádáme známé servery, aby nahlásily hodnocení nového serveru. A podle odpovědi nastavíme například rychlost, jakou nám může nový server posílat zprávy.

    Pokud se na distribuovaný systém rozhodování a reputačního účetnictví podíváte z ptačí perspektivy, všimnete si podobnosti s blockchainem. Je možné, že blockchain (ale ne kryptoměna) může být použit jako základ pro vybudování distribuovaného systému reputace, i když zatím není zřejmé jak.

    Šifrování

    Co si v dnešní době počneme bez šifrování zpráv? Chaty mezi dvěma lidmi budou pravděpodobně šifrovány OTR. U skupinových chatů je to stále nejasné. Všechna známá šifrovací schémata pro skupinové chaty mají buď značné nevýhody, nebo jsou těžkopádná a obtížně implementovatelná. Není také zřejmé, jak důležité je šifrování skupinových chatů: „Pokud dva lidé znají tajemství, už to není tajemství, ale pokud je znají tři lidé, už je to bazar.“


    Co si o tom myslíš?

    Můžete pomoci a převést nějaké prostředky na rozvoj webu

    

    Komentáře (205):

                        • Vaše naivita je mimo hitparády.


                          Text můžete nastavit tučně, kurzívou

                          Zkusili jste to alespoň jednou udělat sami?

                                • Musíte změnit xmpp server

                                  Používám jabberon.ru, který má HTTP File Upload podle jeho diskotéky (upload.jabberon.ru). Na conference.jabber.ru vše funguje, jak říkáte.


                                  Ale nemám tlačítko pro odeslání souboru do chatu na conference.jabber.ru!

    Vývoj messengeru pro chytré telefony nebo webové stránky se může stát úspěšným startupem. Messengers již nyní zaujímají první místo co do počtu stažení na světě.

    Vyplatí se vytvořit další aplikaci pro messenger?


    Každý uživatel má na svém telefonu nainstalované dva až pět instant messengerů. Všechny se v té či oné míře používají.

    Postupem času některé aplikace messenger ztrácejí své vedoucí pozice a ustupují novým. Skype se tak během jednoho roku posunul z prvního místa, které obsazoval několik let, na čtvrté. Telegram je na pátém místě. Zdá se však, že je to také dočasná situace, protože stejný telegram rychle dobývá trh. V roce 2017 se objevil nový trend - veřejné kanály a chaty. Jejich přítomnost přitahuje nové uživatele a v podstatě mění instant messengery na sociální média. Možná to byl důvod růstu popularity Telegramu.

    Hodnocení oblíbenosti Messengeru

    Zdroj vc.ru

    Statistiky o růstu počtu uživatelů messengerů ukazují, že aplikace pro zasílání zpráv mají potenciál. Při rozjezdu startupu je ale potřeba být připraven na konkurenci. Vývoj messengeru pro iOS nebo Android začíná správnou formulací problému a výběrem nástrojů. Získáme tak aplikaci, která uspokojí potřeby uživatelů.


    Jak vytvořit messenger, který je mezi uživateli žádaný

    Zpočátku byly messengery vytvořeny buď jako chaty, například WhatsApp, nebo jako aplikace pro volání - Skype, Viber. Později začali do messengerů přidávat funkce, které tam původně nebyly. WhatsApp tedy přidal funkce zvukových hovorů a poté videa. Poté se objevila otevřená API, roboti, masky, stavy, platební metody a veřejné kanály. Je však obtížné zavést novou funkcionalitu nebo změnit strukturu, když má messenger miliony uživatelů. Například WhatsApp stále nemá API ani roboty.

    Hlavním problémem při vytváření aplikace pro odesílání zpráv na Androidu nebo iOS je vývoj architektury. Struktura aplikace musí být navržena tak, aby do ní bylo možné bezbolestně přidávat nové funkce.

    Při vývoji messengeru vycházíme nejen z toho, co je již v jiných aplikacích, ale také z toho, co může být v budoucnu poptávané.

    Náš přístup k vývoji architektury messengeru

    Většina přístupů k návrhu a vývoji architektury má tendenci být modulární. Ale modularita je odlišná a samotné moduly mohou být obrovské a monolitické.

    Navrhujeme a vyvíjíme architekturu podle principů čisté architektury.

    Čistá architektura, kterou popsal Robert Martin, umožňuje navrhnout systém, který je flexibilní a škálovatelný.

    To je běžná praxe v moderním softwaru, ale ne každý může dosáhnout čisté architektury. Při naší práci dodržujeme řadu konkrétních zásad a dosahujeme očekávaného výsledku. Na obrázku je nová architektura, kterou Google představil. Pomocí tohoto přístupu a našich vlastních vylepšení implementujeme čistou architekturu na Androidu.


    Flexibilita, škálovatelnost a testovatelnost

    Při práci dbáme na to, aby byla architektura rozdělena do autonomních vrstev. Poté jsou obchodní logika, prezentace a datové objekty odděleny a mohou se měnit nezávisle na sobě. Bez ohledu na velikost systému si tento přístup zachovává flexibilitu, škálovatelnost (škálování počtu funkcí) a testovatelnost.

    Děláme škálovatelný nejen kód, ale i samotnou systémovou infrastrukturu.

    Výkon aplikace

    Často se stává, že týmy honí programovací jazyk, který se stal populárním. Vyvíjejí v něm produkt klienta, ale v průběhu si uvědomí, že jazyk používají nesprávně. Musíte pochopit všechny výhody a nevýhody jakéhokoli jazyka a nástroje. Musíte používat jazyk, který se nejlépe hodí pro budování efektivního systému, a ne ten, který je aktuálně populární.

    Při práci přemýšlíme o zadání klienta a s ohledem na to přistupujeme k výběru nástrojů.

    Zpravidla programujeme v PHP. Tento programovací jazyk se používá v Whatsapp, Facebook, Stackoverflow. PHP není z hlediska výkonu horší než ostatní jazyky a vydrží vysoké zatížení. Výhodou tohoto jazyka je, že po dokončení úkolu se uvolní serverové zdroje a správně postavená architektura a dobrý technologický zásobník pokrývají nedostatky jazyka.

    Náklady na vývoj projektu v PHP jsou několikanásobně levnější než v jazycích jako Java a Python. Zároveň aplikace není výkonově horší.

    Při výběru nástrojů se zaměřujeme na to, jak efektivně ten či onen dokáže vyřešit problém. V podstatě přizpůsobujeme nástroje architektuře a ne naopak.

    Práce s velkým počtem uživatelů a velkým zatížením

    Při naší práci využíváme platformu NodeJS. Naše zkušenosti ukazují, že tato platforma je vhodná pro vytváření chatů a mobilních aplikací. NodeJS je dobře navržen a umožňuje vám budovat vysoce zatížené systémy. Chat na NodeJS po vybalení zvládne zátěž 10 000 připojení.

    Vývoj messengeru pro Android nebo iOS pro tuto platformu vyžaduje použití Java Scriptu. Tento jazyk je populární, takže najít vývojáře není problém.

    Přehodnotit – používáme tuto NoSQL DB, protože je produktivnější než její konkurenti. V RethinkDB není překladač dotazovacího jazyka, tzv. ReQL, implementován na úrovni serveru, ale je zabudován jako doménově specifický jazyk do jazyka, ve kterém je napsána klientská aplikace.

    Databázové tabulky ukládají dokumenty JSON, které umožňují libovolnou úroveň vnořování. Každý dokument má jedinečný primární klíč „id“ pro svou nadřazenou tabulku. S odkazem na klíč získáme dokument. Každá funkce dotazu ReQL pracuje s daty získanými z předchozí funkce v řetězci. To vám umožní vybudovat flexibilnější architekturu pro projekty s vysokou zátěží a nemyslet na složitost datových struktur.

    Konkurentem NoSQL DBMS je MongoDB. Tato platforma je na trhu populární, ale popularita není vždy klíčem k úspěchu. MongoDB má řadu problémů: mazání dokumentů neuvolňuje místo na disku, takže aplikace musí být postavena tak, aby se dokumenty (soubory objektů) nemazaly často. MongoDB také nefunguje dobře s četnými hromadnými operacemi s dokumenty, což je v rozporu s pravidly pro budování systému s vysokou zátěží.

    Hlavním problémem při budování vysoce zatěžovaných projektů je budování architektury a následné přizpůsobení obchodní logiky systému. Takový projekt se ne vždy vyrovná s těžkými břemeny. Děláme proto opak: vypracujeme obchodní logiku celého systému a následně pro něj vytvoříme efektivní architekturu. Do takové aplikace lze přidat nové funkce. Neztrácí výkon a nebojí se vysokého zatížení.


    Vývoj rozhraní Messenger

    Uživateli by mělo být jasné, jak pracovat, a měla by být pohodlná. Proto často doporučujeme používat nativní design, protože je pohodlný a předvídatelný. Aplikace se na různých zařízeních chová stejně. Uživatel vidí známé prvky, ví, jak je používat, a nemá žádné dotazy ohledně používání messengeru.

    Při vývoji designu je důležité:

      Propracujte se prázdnými stavy chatů, obrazovek, sekcí, kde se ještě nic nestalo. Uživatel tak bude mít jasno, jakou akci je třeba provést.

      Zpracovat zpětnou vazbu. Odesílání zpráv a stahování souborů nějakou dobu trvá. V tomto okamžiku je důležité ukázat uživateli, že proces probíhá.

      Všechny možné chyby, například pokud dojde ke ztrátě internetu, uživatel musí pochopit, že se něco pokazilo.

      Chcete-li ověřit telefonní číslo, nastavte časový limit pro opětovné zaslání SMS s ověřovacím kódem, protože zpráva ještě nemusí dorazit a uživatel bude mít čas šestkrát kliknout na opětovné odeslání kódu.

      Upozorněte uživatele, že v době odesílání velkého souboru používá mobilní internet.




    Pohodlí uvnitř chatu a prevence směšných chyb

    Důležité je pohodlné uspořádání vyhledávání v rámci konkrétního chatu. Rychle najděte správný okamžik v korespondenci, dokumentu, fotografii nebo videu, aniž byste museli náhodně procházet kanál.

    Před odesláním hlasových zpráv je důležité, aby si je uživatel mohl poslechnout. Měla by existovat také možnost opravit chybu nebo odstranit nežádoucí zprávu. Vytvoření aplikace pro zasílání zpráv pro iPhone nebo Android vyžaduje pečlivé zvážení těchto a dalších nuancí.

    Soukromí

    Na internetu můžete najít programy, které vám umožní hacknout messenger a přijímat osobní korespondenci. Prvním úkolem vývojářů je zajistit naprostou anonymitu, a to i bez odkazu na telefonní číslo a možnost nějak poznat člověka. Druhým úkolem je eliminovat riziko hacknutí.

    Jsou zde nuance. Například pro úplný anonymní chat musí účastníci rozhovoru bez ohledu na konkrétní charakteristiky - telefonní číslo, jméno, místo - pochopit, kdo je kdo. K tomu je potřeba použít jednorázovou šifru, kterou může použít každý, ale nebude se dvakrát opakovat. K pozvání lidí k takovému rozhovoru dochází také pomocí „klíče“, který funguje pouze jednou a nastavuje ho pouze osoba sama.

    Ochrana snímku obrazovky. Šifrování příchozích notifikací. Schopnost rychle mazat zprávy, bez zbytečných potvrzení.


    Kolik stojí vytvoření vlastního messengeru?

    Cena vývoje messengeru závisí na tom, jak dlouho bude práce na aplikaci trvat. Čím složitější funkce, tím vyšší náklady na vývoj. Konečnou cenu za vývoj messengeru pro iOS, Android nebo web můžeme jmenovat až poté, co pochopíme, jaké problémy je potřeba vyřešit.

    Náklady na propagaci a podporu

    Vývoj messengeru pro Android nebo iOS je první fází. Pokud se nejedná o firemní chat, pak je třeba messenger propagovat. Chcete-li to provést, musíte do svého marketingového rozpočtu zahrnout určitou částku. To zahrnuje:

      Propagace ASO (App Store Optimization) je soubor prací pro optimalizaci mobilní aplikace. A to správné složení názvu (název), klíčových slov (klíčových slov), popisů (description), abyste maximalizovali viditelnost vaší aplikace ve vyhledávání

      Platba za umístění v obchodech Google Play a App Store.

    Po spuštění je třeba aplikaci vyvinout a aktualizovat:

      Odstraňte chyby a reagujte na stížnosti uživatelů

      Přidejte nové funkce.

    Kde začít vytvářet aplikaci pro odesílání zpráv na Androidu nebo iPhonu

    Vývoj vlastního messengeru začíná nastavením úkolu.

    Napište nebo zavolejte, domluvíme si schůzku, probereme problém a pomůžeme vám najít optimální řešení, jak vytvořit oblíbený messenger pro Android a iOS.

    Náš tým, který je prakticky posedlý informační bezpečností, implementoval do Eleet mnoho zajímavých řešení.

    Níže je uvedeno osm funkcí produktu, které významně ovlivňují vaši online bezpečnost. Některé z těchto nápadů jsou zcela unikátní: toto nabízí pouze Eleet Private Messenger. Jiné se v té či oné podobě najdou mezi konkurenty, ale i tak vám o nich povíme: důležitý je ostatně komplexní systém, který vybudoval vývojářský tým Eleet.

    Takže, začněme.

    1. Žádné spojení s telefonem

    Úplně první a nejdůležitější. Dnes existuje mnoho instant messengerů, které si nárokují vysokou úroveň zabezpečení, ale... téměř vždy práce s nimi začíná registrací pomocí čísla mobilního telefonu. Dokonce i FireChat, který funguje přes distribuovanou mesh síť, má tuto nevýhodu.

    Podle našeho názoru po tomto již nemá smysl mluvit o anonymitě. Tak či onak jste někomu dali své telefonní číslo – a pokud se dostane do nesprávných rukou, bude velmi snadné zjistit vaši identitu a přesnou polohu.

    Nezapomínejme na dnes tak populární banální způsob obcházení autorizace pomocí SMS: vytvoření duplicitní SIM karty. Mobilní operátoři to klidně mohou udělat ve prospěch někoho jiného. Ano, notoricky známá „dvoufaktorová autentizace“ pomocí kódu zaslaného textovou zprávou není zdaleka tak spolehlivá, jak si mnoho lidí myslí.

    V žádné z těchto možností již nebude záležet na tom, jak kvalitní je šifrování, zda jsou hesla spolehlivá... proto v Eleet messengeru není autorizace pomocí telefonního čísla.

    2. Žádné spojení s osobností

    Nejde ani tak o specifickou funkci aplikace, jako o obecnou myšlenku, kterou důsledně implementujeme – a přirozeně vyplývá z předchozího bodu. Takže váš účet Eleet Private Messenger nemá s vaší skutečnou identitou vůbec nic společného. Pomocí našeho messengeru nezanecháte žádné stopy, které vám umožní spojit skutečné já s vámi v informačním prostoru Eleet.

    3. Soukromá ID

    Stále si nejste jisti, zda je váš účet nedohledatelný? Dobré: vytvořte další soukromé ID, které má plnou funkčnost „hlavního“. Zároveň budou všechna data s ním spojená (kontakty, protokoly, obsah) uložena odděleně a zmizí, když je soukromé ID smazáno - aniž by zanechávalo jakékoli stopy v hlavním účtu.

    4. „Nezáříte“ online

    Jedna z příjemných maličkostí: uživatelé našeho messengeru mají možnost zcela skrýt svou online přítomnost. Ne, nemáme na mysli pouhé skrytí času posledního přihlášení – ale plnohodnotnou „neviditelnost“. To mnoha lidem na sociálních sítích chybí a ne vždy messengery takovou možnost nabízejí.

    5. Smazat můžete opravdu všechno

    To není tak málo, jak se může zdát. Většina online komunikačních nástrojů vám umožňuje odstranit protokoly a kontakty na vaší straně: vaši partneři však budou mít stále jak korespondenci, tak vaše ID. Je obtížné nazvat takové podmínky v souladu s požadavky na bezpečnost informací.

    Naše aplikace tento problém nemá. Můžete se snadno odebrat ze seznamu kontaktů druhé osoby. Jakýkoli jiný uživatel s vámi také nebude mít záznamy o komunikaci, pokud si to přejete. Nikdo vás tedy nebude moci například vydírat kompromitující korespondencí.

    Faktem je, že se jedná pouze o další vrstvu zabezpečení a ne o klíčový prvek ochrany vámi vytvořeného chatu. PIN je snadno zapamatovatelný a snadno se zadává z jakéhokoli zařízení: to zpravidla nelze říci o silném heslu.

    PIN kód nehraje klíčovou roli v zabezpečení informací, ale pomáhá uživatelům cítit se ještě bezpečněji.

    7. Zejména tajné chaty

    Typicky, pokud jde o informační bezpečnost, důraz je kladen na externí dohled: útočníci, konkurenti, úřady. Ale co když plně nedůvěřujete svým vlastním partnerům?

    Je to jednoduché: vytvořte si s nimi anonymní chat zadáním jakékoli přezdívky. Lidé, se kterými komunikujete v tomto chatu, nikdy nepoznají vaše skutečné ID. Zároveň lze chat po určité době přimět k „samodestrukci“.

    8. A to nejzajímavější!

    Přirozeně jsme si naši oblíbenou funkci uložili jako poslední. Uživatelé Eleet Private Messenger mohou nastavit „smazat PIN kód“. co to je?

    Zvenčí to bude vypadat, jako byste zadávali velmi obyčejný PIN kód (jako ten popsaný v šestém odstavci). Pravidelné autorizační opatření. Eleet totiž tímto příkazem okamžitě smaže všechna vaše data – korespondenci, kontakty, odeslané materiály a podobně. A jak již víte, „smazáním“ náš tým znamená skutečné, trvalé smazání: nic nelze obnovit.

    Nebudeme uvádět, v jakých situacích se tato funkce může ukázat jako životně důležitá: věříme, že si čtenáři sami dokážou představit několik možností. Jak se říká: "Pokud víte, co máme na mysli."

    Na závěr opakujeme: Eleet Private Messenger vytvořili lidé, pro které jsou nejdůležitějšími hodnotami anonymita na internetu, spolehlivá ochrana jakýchkoli osobních údajů a virtuální osobní prostor. Veškeré úsilí vývojového týmu slouží k tomu, aby byl Eleet co nejbezpečnější na všech úrovních.

    Jak vidíte, v tomto směru jsme již udělali hodně. A ještě více bude realizováno.

    Neustále analyzujeme požadavky zákazníků na vývoj aplikací. Naší pozornosti proto neunikl fakt, že se zvýšila poptávka po aplikacích založených na komunikaci mezi uživateli.

    Přišli jsme s vlastním, s funkcí v podobě možnosti zahrnout do vašeho messengeru další logiku. Udělejte z messengeru například službu objednávání služeb, přidávání reklam a filtrů nebo aplikaci pro poradenskou agenturu, ve které budou klienti klást otázky a vaši specialisté jim za poplatek poradí.

    Jak jsme na tento nápad přišli?

    V určitém období jsme si nemohli nevšimnout zvýšeného zájmu o instant messengery, které jsou založeny na dialogu mezi lidmi a nikoli chatboty, jako například v Telegramu. Je nutné pochopit atraktivitu takových projektů.

    Řekněme, že chcete udělat aplikaci a la Avito, kam lidé dávají inzeráty na prodej použitého zboží. Kupující listuje feedem nebo najde produkt, který potřebuje, nemusí čekat na odpověď na žádost, okamžitě vede přímý dialog s prodejcem a domluví si schůzku. Rychlé, pohodlné, bez spousty hovorů a hledání kontaktu na WhatsApp nebo Telegram.

    Když jsme si uvědomili všechny výhody instant messengerů založených na komunikaci mezi lidmi, rozhodli jsme se jít dále. Mysleli jsme si: „Co se stane, když posel nebude nucen dodržovat přísné hranice, ale bude mít schopnost zahrnovat různé funkce? Získáte nové krabicové řešení a la „nainstalujte si analog WhatsApp na svůj server s možností úprav“. Nepochybnou výhodou tohoto řešení je to, že bude stát zřetelně méně než v jiných studiích, když bude vyvinuto od nuly (u analogu WhatsApp jsou průměrné náklady od 45 000 do 55 000 USD). To vám umožní otestovat váš nápad za správnou cenu a rozhodnout, zda se projekt ujme nebo ne.

    Co již krabicové řešení obsahuje?

    • Registrace a autorizace na telefonním čísle
    • Uživatelský profil, může vyplnit své celé jméno a vložit svou fotografii
    • Seznam uživatelů, kontakty
    • Seznam dialogů
    • Okno chatu
    • Stav zprávy

    Hlavní výhodou tohoto krabicového řešení je jeho flexibilita. Základ si vezmete od nás a přidáte k němu, co chcete, v závislosti na vašich cílech a záměrech. Například prohlížení videí a fotografií, zpravodajství atd.

    Architektura aplikace vypadá takto:

    • Objective-C a Java pro aplikace iOS a Android
    • Node.js – uchovávání soketových spojení pro příjem zpráv v reálném čase
    • Redis – ukládáme zásobník zpráv k odeslání
    • Pokud je aplikace minimalizována, používáme push server APN/FCM k odesílání oznámení push
    • Bitrix.Framework pro generování obrazovek mobilních aplikací a flexibilní vývoj aplikací
    • MySQL – pro ukládání uživatelů, přístupových rolí, historie zpráv a vlastních dat aplikací
    • 1C-Bitrix - pro administrativní správu messengeru

    Práce s konkrétními úkoly

    Můj přítel Pavel se na nás nedávno obrátil o pomoc. Vlastní poradenskou agenturu specializující se na zvyšování tržeb pro velkoobchody a výrobce. Jeho problém spočíval v tom, že klient po absolvování poradenství přešel na konzultace se svými asistenty. To se nakonec odrazilo v kvalitě poskytovaných služeb a také v ziscích: kvůli chybám svých asistentů ztratil Pavel 50–100 tisíc rublů měsíčně.

    On a já jsme přišli s modelem, že při implementaci messengeru bude schopen získat následující hodnoty:

    • Poskytujte poradenské služby na dálku osobně, bez ztráty kvality
    • Vytvořte videoodpovědi na 40 nejoblíbenějších zákaznických otázek a pokud se objeví další otázka z tohoto balíčku, pošlete klientovi odkaz na video bez dalších mzdových nákladů
    • Ušetřete na platu asistentů
    • Zvyšte kapacitu služeb
    • Využijte konzultace v aplikaci jako úžasný efekt pro nové prodeje hlavního produktu

    Po rozhovoru jsme dospěli k závěru, že kromě základních funkcí bude zapotřebí několik dalších obrazovek:

    1. Skupinový chat (aby si klienti navzájem „nabíjeli“)
    2. Obrazovka s tarify služeb společnosti

    Plusem bylo přidání designu se značkou tak, aby odpovídala firemnímu stylu společnosti. S přihlédnutím k našim cenám nám aplikace vyšla o něco málo dráž než 100 tis.. Navíc bez vazby na nás. Tyto úpravy by pro Pavla mohl provést každý PHP vývojář obeznámený s Bitrix.Framework. V tuto chvíli se aplikace dokončuje, ale můžete vidět propojené makety budoucí aplikace.

    Perspektivy rozvoje

    Vzhledem k tomu, že náš messenger projekt je především startup, vyvíjíme jej ve formátu Customer Development. Za týden a půl, který uplynul od spuštění projektu, se prodalo již 9 licencí. Klienti, kteří vyzkoušeli naše balené řešení, navrhli vývoj v následujících směrech:

    1. vývoj funkce pro přidávání různých multimédií (fotky, videa, soubory), aktivní odkazy na okna chatu;
    2. práce na vylepšení designu;
    3. vytváření skupinových chatů.

    Co si myslíte o vývoji tohoto projektu? Vyplatí se aktivně přidávat funkce, nebo je lepší ponechat platformu flexibilní a umožnit libovolnému programátorovi přizpůsobit aplikaci pro klienta?

    Pokud vás naše nová krabicová nabídka zaujala, tak mi napište na email. Případné dotazy rád zodpovím.

    Vývoj messengeru pro chytré telefony nebo webové stránky se může stát úspěšným startupem. Messengers již nyní zaujímají první místo co do počtu stažení na světě.

    Vyplatí se vytvořit další aplikaci pro messenger?


    Každý uživatel má na svém telefonu nainstalované dva až pět instant messengerů. Všechny se v té či oné míře používají.

    Postupem času některé aplikace messenger ztrácejí své vedoucí pozice a ustupují novým. Skype se tak během jednoho roku posunul z prvního místa, které obsazoval několik let, na čtvrté. Telegram je na pátém místě. Zdá se však, že je to také dočasná situace, protože stejný telegram rychle dobývá trh. V roce 2017 se objevil nový trend - veřejné kanály a chaty. Jejich přítomnost přitahuje nové uživatele a v podstatě mění instant messengery na sociální média. Možná to byl důvod růstu popularity Telegramu.

    Hodnocení oblíbenosti Messengeru

    Zdroj vc.ru

    Statistiky o růstu počtu uživatelů messengerů ukazují, že aplikace pro zasílání zpráv mají potenciál. Při rozjezdu startupu je ale potřeba být připraven na konkurenci. Vývoj messengeru pro iOS nebo Android začíná správnou formulací problému a výběrem nástrojů. Získáme tak aplikaci, která uspokojí potřeby uživatelů.


    Jak vytvořit messenger, který je mezi uživateli žádaný

    Zpočátku byly messengery vytvořeny buď jako chaty, například WhatsApp, nebo jako aplikace pro volání - Skype, Viber. Později začali do messengerů přidávat funkce, které tam původně nebyly. WhatsApp tedy přidal funkce zvukových hovorů a poté videa. Poté se objevila otevřená API, roboti, masky, stavy, platební metody a veřejné kanály. Je však obtížné zavést novou funkcionalitu nebo změnit strukturu, když má messenger miliony uživatelů. Například WhatsApp stále nemá API ani roboty.

    Hlavním problémem při vytváření aplikace pro odesílání zpráv na Androidu nebo iOS je vývoj architektury. Struktura aplikace musí být navržena tak, aby do ní bylo možné bezbolestně přidávat nové funkce.

    Při vývoji messengeru vycházíme nejen z toho, co je již v jiných aplikacích, ale také z toho, co může být v budoucnu poptávané.

    Náš přístup k vývoji architektury messengeru

    Většina přístupů k návrhu a vývoji architektury má tendenci být modulární. Ale modularita je odlišná a samotné moduly mohou být obrovské a monolitické.

    Navrhujeme a vyvíjíme architekturu podle principů čisté architektury.

    Čistá architektura, kterou popsal Robert Martin, umožňuje navrhnout systém, který je flexibilní a škálovatelný.

    To je běžná praxe v moderním softwaru, ale ne každý může dosáhnout čisté architektury. Při naší práci dodržujeme řadu konkrétních zásad a dosahujeme očekávaného výsledku. Na obrázku je nová architektura, kterou Google představil. Pomocí tohoto přístupu a našich vlastních vylepšení implementujeme čistou architekturu na Androidu.


    Flexibilita, škálovatelnost a testovatelnost

    Při práci dbáme na to, aby byla architektura rozdělena do autonomních vrstev. Poté jsou obchodní logika, prezentace a datové objekty odděleny a mohou se měnit nezávisle na sobě. Bez ohledu na velikost systému si tento přístup zachovává flexibilitu, škálovatelnost (škálování počtu funkcí) a testovatelnost.

    Děláme škálovatelný nejen kód, ale i samotnou systémovou infrastrukturu.

    Výkon aplikace

    Často se stává, že týmy honí programovací jazyk, který se stal populárním. Vyvíjejí v něm produkt klienta, ale v průběhu si uvědomí, že jazyk používají nesprávně. Musíte pochopit všechny výhody a nevýhody jakéhokoli jazyka a nástroje. Musíte používat jazyk, který se nejlépe hodí pro budování efektivního systému, a ne ten, který je aktuálně populární.

    Při práci přemýšlíme o zadání klienta a s ohledem na to přistupujeme k výběru nástrojů.

    Zpravidla programujeme v PHP. Tento programovací jazyk se používá v Whatsapp, Facebook, Stackoverflow. PHP není z hlediska výkonu horší než ostatní jazyky a vydrží vysoké zatížení. Výhodou tohoto jazyka je, že po dokončení úkolu se uvolní serverové zdroje a správně postavená architektura a dobrý technologický zásobník pokrývají nedostatky jazyka.

    Náklady na vývoj projektu v PHP jsou několikanásobně levnější než v jazycích jako Java a Python. Zároveň aplikace není výkonově horší.

    Při výběru nástrojů se zaměřujeme na to, jak efektivně ten či onen dokáže vyřešit problém. V podstatě přizpůsobujeme nástroje architektuře a ne naopak.

    Práce s velkým počtem uživatelů a velkým zatížením

    Při naší práci využíváme platformu NodeJS. Naše zkušenosti ukazují, že tato platforma je vhodná pro vytváření chatů a mobilních aplikací. NodeJS je dobře navržen a umožňuje vám budovat vysoce zatížené systémy. Chat na NodeJS po vybalení zvládne zátěž 10 000 připojení.

    Vývoj messengeru pro Android nebo iOS pro tuto platformu vyžaduje použití Java Scriptu. Tento jazyk je populární, takže najít vývojáře není problém.

    Přehodnotit – používáme tuto NoSQL DB, protože je produktivnější než její konkurenti. V RethinkDB není překladač dotazovacího jazyka, tzv. ReQL, implementován na úrovni serveru, ale je zabudován jako doménově specifický jazyk do jazyka, ve kterém je napsána klientská aplikace.

    Databázové tabulky ukládají dokumenty JSON, které umožňují libovolnou úroveň vnořování. Každý dokument má jedinečný primární klíč „id“ pro svou nadřazenou tabulku. S odkazem na klíč získáme dokument. Každá funkce dotazu ReQL pracuje s daty získanými z předchozí funkce v řetězci. To vám umožní vybudovat flexibilnější architekturu pro projekty s vysokou zátěží a nemyslet na složitost datových struktur.

    Konkurentem NoSQL DBMS je MongoDB. Tato platforma je na trhu populární, ale popularita není vždy klíčem k úspěchu. MongoDB má řadu problémů: mazání dokumentů neuvolňuje místo na disku, takže aplikace musí být postavena tak, aby se dokumenty (soubory objektů) nemazaly často. MongoDB také nefunguje dobře s četnými hromadnými operacemi s dokumenty, což je v rozporu s pravidly pro budování systému s vysokou zátěží.

    Hlavním problémem při budování vysoce zatěžovaných projektů je budování architektury a následné přizpůsobení obchodní logiky systému. Takový projekt se ne vždy vyrovná s těžkými břemeny. Děláme proto opak: vypracujeme obchodní logiku celého systému a následně pro něj vytvoříme efektivní architekturu. Do takové aplikace lze přidat nové funkce. Neztrácí výkon a nebojí se vysokého zatížení.


    Vývoj rozhraní Messenger

    Uživateli by mělo být jasné, jak pracovat, a měla by být pohodlná. Proto často doporučujeme používat nativní design, protože je pohodlný a předvídatelný. Aplikace se na různých zařízeních chová stejně. Uživatel vidí známé prvky, ví, jak je používat, a nemá žádné dotazy ohledně používání messengeru.

    Při vývoji designu je důležité:

      Propracujte se prázdnými stavy chatů, obrazovek, sekcí, kde se ještě nic nestalo. Uživatel tak bude mít jasno, jakou akci je třeba provést.

      Zpracovat zpětnou vazbu. Odesílání zpráv a stahování souborů nějakou dobu trvá. V tomto okamžiku je důležité ukázat uživateli, že proces probíhá.

      Všechny možné chyby, například pokud dojde ke ztrátě internetu, uživatel musí pochopit, že se něco pokazilo.

      Chcete-li ověřit telefonní číslo, nastavte časový limit pro opětovné zaslání SMS s ověřovacím kódem, protože zpráva ještě nemusí dorazit a uživatel bude mít čas šestkrát kliknout na opětovné odeslání kódu.

      Upozorněte uživatele, že v době odesílání velkého souboru používá mobilní internet.




    Pohodlí uvnitř chatu a prevence směšných chyb

    Důležité je pohodlné uspořádání vyhledávání v rámci konkrétního chatu. Rychle najděte správný okamžik v korespondenci, dokumentu, fotografii nebo videu, aniž byste museli náhodně procházet kanál.

    Před odesláním hlasových zpráv je důležité, aby si je uživatel mohl poslechnout. Měla by existovat také možnost opravit chybu nebo odstranit nežádoucí zprávu. Vytvoření aplikace pro zasílání zpráv pro iPhone nebo Android vyžaduje pečlivé zvážení těchto a dalších nuancí.

    Soukromí

    Na internetu můžete najít programy, které vám umožní hacknout messenger a přijímat osobní korespondenci. Prvním úkolem vývojářů je zajistit naprostou anonymitu, a to i bez odkazu na telefonní číslo a možnost nějak poznat člověka. Druhým úkolem je eliminovat riziko hacknutí.

    Jsou zde nuance. Například pro úplný anonymní chat musí účastníci rozhovoru bez ohledu na konkrétní charakteristiky - telefonní číslo, jméno, místo - pochopit, kdo je kdo. K tomu je potřeba použít jednorázovou šifru, kterou může použít každý, ale nebude se dvakrát opakovat. K pozvání lidí k takovému rozhovoru dochází také pomocí „klíče“, který funguje pouze jednou a nastavuje ho pouze osoba sama.

    Ochrana snímku obrazovky. Šifrování příchozích notifikací. Schopnost rychle mazat zprávy, bez zbytečných potvrzení.


    Kolik stojí vytvoření vlastního messengeru?

    Cena vývoje messengeru závisí na tom, jak dlouho bude práce na aplikaci trvat. Čím složitější funkce, tím vyšší náklady na vývoj. Konečnou cenu za vývoj messengeru pro iOS, Android nebo web můžeme jmenovat až poté, co pochopíme, jaké problémy je potřeba vyřešit.

    Náklady na propagaci a podporu

    Vývoj messengeru pro Android nebo iOS je první fází. Pokud se nejedná o firemní chat, pak je třeba messenger propagovat. Chcete-li to provést, musíte do svého marketingového rozpočtu zahrnout určitou částku. To zahrnuje:

      Propagace ASO (App Store Optimization) je soubor prací pro optimalizaci mobilní aplikace. A to správné složení názvu (název), klíčových slov (klíčových slov), popisů (description), abyste maximalizovali viditelnost vaší aplikace ve vyhledávání

      Platba za umístění v obchodech Google Play a App Store.

    Po spuštění je třeba aplikaci vyvinout a aktualizovat:

      Odstraňte chyby a reagujte na stížnosti uživatelů

      Přidejte nové funkce.

    Kde začít vytvářet aplikaci pro odesílání zpráv na Androidu nebo iPhonu

    Vývoj vlastního messengeru začíná nastavením úkolu.

    Napište nebo zavolejte, domluvíme si schůzku, probereme problém a pomůžeme vám najít optimální řešení, jak vytvořit oblíbený messenger pro Android a iOS.