Zjistil jsem, že aplikace Reddit pro iOS je lepší než webová verze, takže mě napadlo zkontrolovat, jak rychle načítá data. Zde je zrušení aplikace Reddit pro iOS.
Zde jsou některé důležité body:
Zde je podrobný popis volání API. K zachycení aplikace Reddit pro iOS jsem použil desktopovou aplikaci Requestly , pokyny k nastavení jsou uvedeny zde .
Aplikace Reddit je vytvořena pomocí
Hlavní otázka, kterou jsem měl, byla, jak aplikace funguje tak rychle, byla zodpovězena při kontrole odpovědi FeedPostDetailsByIds API. Toto API se volá na domovské obrazovce s ID zobrazených příspěvků a přichází s podrobnými informacemi, které se zobrazí po kliknutí na příspěvek. Toto předběžné načtení horních příspěvků pomohlo k okamžitému zobrazení obrazovky s podrobnostmi příspěvku bez jakéhokoli nakladače.
Dotazy GraphQL se skládají z dat a struktury potřebné odpovědi. Název operace je obecně volitelný. Většina rozhraní Reddit API má v dotazech pouze názvy operací a proměnné jsou dostupné pouze tehdy, když jsou na obrazovce proměnné/filtry, jako je zdroj s horkými a nejnovějšími možnostmi příspěvků.
To poskytuje vývojářům frontendu menší kontrolu, aby mohli provádět změny nezávisle, ale větší kontrolu nad zneužitím rozhraní API k načítání nepotřebných dat po všech jeho rozhraních API pro uživatele.
Spouštění experimentů na nativních aplikacích pro iOS je obtížné, je třeba je znovu nasadit, aby bylo možné experimenty povolit nebo zakázat, ale Reddit nastavil aplikaci takovým způsobem, že experimenty lze ovládat na dálku. Všechny experimenty se načítají do rozhraní API spolu s jejich hodnotami a stavy. Aplikace automaticky aktivuje variantu experimentu, kterou přiřadila.
S tolika uživateli, experimenty a funkcemi je lepší je ovládat na dálku. Reddit odvádí skvělou práci při ovládání těchto funkcí na dálku.
Při každém spuštění aplikace zavolá konfigurační API pro načtení více než 400 konfiguračních proměnných. Na základě těchto proměnných ukazuje různé rysy a varianty vlastností.
API s názvem operace GetTopKarmaSubreddits
získá seznam nejlepších subredditů s karma body získanými v každém z nich. Toto API odhaluje, kolik komentářů a post karmy jsme získali z naší činnosti v každém dílčím redditu. Tyto informace jsem nikdy nemohl najít ve webovém a mobilním uživatelském rozhraní Reddit.
Při čtení rozhraní API, abych zjistil, jaký typ dat přináší, jsem zjistil, že SubredditFeedElements
API načítá zdroj vybraného sub-redditu, ale s každým příspěvkem má vnořený JSON s podrobnými informacemi o sub-reddit. Tyto informace jsou nadbytečné a lze je odstranit, aby se snížilo zatížení sítě API a dále se zlepšil jeho výkon.
Poznámka: SubredditFeedElements
API je nyní nahrazeno SubredditFeedSdui
API a problém je vyřešen.
Zkusil jsem použít ChatGPT, abych získal nějaké postřehy z API. Vytvořil tedy soubor se všemi API s jejich curl a jejich odpověďmi v něm. Nahrál jsem tento soubor do CustomGPT, abych mohl zadat jakýkoli typ dotazu. Poskytlo to několik poznatků, které byly zřejmé, jako jaký typ použití by API mohlo mít a strukturu odpovědi, ale hodně to halucinovalo, s největší pravděpodobností kvůli spoustě API nebo nejsem odborník na nabádání. Některé poznatky poskytnuté AI:
GetAllExperimentVariants
API – Mnoho experimentů má specifické názvy „variant“, včetně možností jako enabled
, variant_1
, control_model
a one_feed_ph_bridge_new_users
. Tato segmentace naznačuje, že Reddit testuje funkce na konkrétních uživatelských segmentech, aby zjistil jejich dopad. Například experiment d2x_avatar_in_comments_loggedin
má dvě varianty, loggedin
a loggedout
, které potenciálně testují funkci na základě stavu ověření uživatele.GetAllExperimentVariants
API – Experimenty zahrnují hybrid_video_rollout_android_v2
, active_sales
a gql_google_maps_integration
, které poukazují na širokou škálu testů funkcí zahrnujících funkce videa, umístění reklam, vylepšení uživatelského rozhraní a integrace třetích stran.GetAccountDetails
API — Odpověď API obsahuje různá pole s podrobnostmi o stavu účtu uživatele, jako je isSubredditCreationAllowed
, isNameEditable
, isPasswordSet
a stav moderátora uživatele. Kromě toho zahrnuje suspensionExpiresAt
a isSuspended
, které udávají, zda je účet aktuálně pozastaven nebo omezen.Existuje seznam GraphQL API, které jsem studoval, abych pochopil, jak funguje Reddit. Existovala některá další API, stejně jako autentizace, reporting atd. Nezahrnul jsem je do tohoto seznamu.
Obrazovka | GraphQL API | Popis |
---|---|---|
Domov | GetAllDynamicConfigs | Načte více než 400 konfiguračních parametrů, na základě kterých fungují různé funkce aplikace. Konfigurace je v typickém formátu klíčové hodnoty spolu s typem hodnoty, kterou může být JSON, float, řetězec atd. |
| GetAllExperimentVariants | Požadavek obsahuje informace o aplikaci a zařízení k přiřazení experimentů určených pro zařízení a verzi aplikace. Odpověď obsahuje seznam všech experimentů s id, název experimentu, verze a stav. |
| GetAccount | Načte všechny podrobnosti o přihlášeném uživateli. |
| HomeFeedSdui | Načte prvních několik příspěvků s minimálními podrobnostmi, které se zobrazí na domovské stránce. |
| FeedPostDetailsByIds | Předem načte příspěvky pomocí ID se všemi podrobnostmi pro případ, že uživatel na příspěvek klikne. |
| DiscoverBarRecommendations | Objevte data lišty. |
| Předplatné UserPremium | Údaje související s uživatelským prémiovým předplatným |
| GetUserAdEligibility | Získá způsobilost uživatele pro reklamy a případné preference. |
| BadgeCounts | Informace o odznakech, které uživatel získal. |
| | |
Stránka Subreddit | SubredditChannels | Načte všechny základní podrobnosti o komunitě, jako je popis, ikony, počítadla, povolené typy příspěvků a barvy. |
| SubredditTaxonomyTopics | Načte kategorii komunity a zobrazí text, jako když načtu komunitu r/software, zobrazí se #20 v Software & Apps. |
| IsInvitePending | Jak název napovídá, zkontrolujte nevyřízenou pozvánku, ale nejste si jisti, která pozvánka přesně. |
| SubredditChannels | Načte chatovací kanály sub-redditu, zkontroloval jsem mnoho subredditů, ale žádné jsem nenašel. |
| BlockedRedditors | Přináší data, pokud je uživatel blokován. |
| GetModerators | Získá seznam modů. |
| FetchStructuredStyleAndWidgets | Toto API přináší informace o stylu, pravidlech a detailech komunity. |
| FetchRelatedCommunityRecommendations | Toto API přináší související komunity. |
| SubredditMuting | Zkontroluje, zda je sub reddit ztlumený. |
| SubredditFeedElements | Načte zdroj sub-reddit. Přebírá možnosti filtrů a rozložení vybrané pro dílčí reddit. Přináší všechny podrobnosti o příspěvcích, které se mají zobrazit ve zdroji. |
| Komentáře PostInfoById | Tento požadavek předem načte pouze komentáře prvního příspěvku. |
| | |
Stránka příspěvku | GetCustomEmojisStatus | Toto API bylo voláno s id sub-reddit a načítá stav vlastních emotikonů na sub-reddit. Není příliš jasné, proč se toto API nazývá, ale viděl jsem to při mnoha příležitostech. Odpověď byla |
| GetSubredditAchievementFlairsStatus | Podobně jako stav emotikonu převezme sub-reddit id a dostane odpověď isEnabled: false . Účel toho mi není jasný. |
| Komentáře PostInfoById | Toto rozhraní API se používá k načtení komentářů k příspěvku pomocí ID příspěvku předaného v požadavku. |
| CommentsPageAds | Načte reklamu těsně nad komentáře. |
| | |
Stránka profilu | RedditorByName | Načte detaily profilu přihlášeného uživatele. |
| PostSetSettings | Počet příspěvků k načtení. |
| GetTopKarmaSubreddits | Získejte seznam nejlepších subredditů s body karmy v každé komunitě, toto API odhaluje, kolik komentářů a post karmy jsme získali z naší aktivity v každém sub-redditu. |
| UserProfileFeed | Zdroj pro uživatelský profil obsahující komentáře a příspěvky. |
| UserPublicTrophy | Seznam úspěchů a trofejí získaných uživatelským jménem předaným v žádosti s ID, jménem a obrázkem, které se mají zobrazit. |
| TippingProfileMigred | Podrobnosti o profilu sklápění, tuto funkci jsem příliš nevyužíval. Na mém profilu to ukazovalo 0 zůstatek 😄. |
Na závěr tohoto experimentu bych rád uvedl několik poznámek.