Сматрао сам да је искуство Реддит иОС апликације боље од веб верзије, па сам помислио да проверим како тако брзо учитава податке. Ево рушења Реддит-ове иОС апликације.
Ево неких најважнијих ствари:
Ево детаљног растављања АПИ позива. Користио сам Рекуестли-ову Десктоп апликацију да пресретнем Реддит-ову иОС апликацију, упутства за подешавање су дата овде .
Апликација Реддит је креирана са
Главно питање које сам имао било је како апликација ради тако брзо, одговорено је када сам проверио одговор ФеедПостДетаилсБиИдс АПИ-ја. Овај АПИ се позива на почетном екрану са приказаним ИД-овима постова и долази са детаљним информацијама које се приказују након што кликнете на објаву. Ово претходно учитавање најбољих постова помогло је у тренутном приказивању екрана са детаљима објаве без икаквог учитача.
ГрапхКЛ упити се састоје од података и структуре потребног одговора. Име операције је генерално опционо. Већина Реддит АПИ-ја има само имена операција у упитима, а променљиве су доступне само када постоје променљиве/филтери на екрану као што је феед са врућим и најновијим опцијама за објаве.
Ово даје мање контроле фронтенд програмерима да самостално уносе промене, али већу контролу над злоупотребом АПИ-ја за дохваћање непотребних података након свих АПИ-ја окренутих према корисницима.
Покретање експеримената на изворним иОС апликацијама је тешко, потребно је поновно постављање да би се експерименти омогућили или онемогућили, али Реддит је подесио апликацију на такав начин да се експерименти могу контролисати на даљину. Сви експерименти се учитавају у АПИ заједно са њиховим вредностима и статусима. Апликација аутоматски активира варијанту експеримента који јој је доделила.
Са толико корисника, експеримената и функција, боље је контролисати их на даљину. Реддит одлично контролише ове функције на даљину.
Приликом сваког покретања апликације, она ће позвати конфигурациони АПИ за учитавање 400+ конфигурационих варијабли. На основу ових варијабли приказује различите карактеристике и варијанте карактеристика.
АПИ са именом операције GetTopKarmaSubreddits
добија листу најбољих субреддитова са карма поенима зарађеним у сваком. Овај АПИ открива колико смо коментара и карме постова стекли нашим активностима у сваком под-реддиту. Никада нисам могао да пронађем ове информације унутар Реддит-овог веб и мобилног корисничког интерфејса.
Док сам читао АПИ-је да бих открио коју врсту података доноси, открио сам SubredditFeedElements
АПИ учитава фид изабраног подреддит-а, али са сваким постом има угнежђени ЈСОН детаљних информација о суб-реддит-у. Ове информације су сувишне и могу се уклонити како би се смањило мрежно оптерећење АПИ-ја и додатно побољшале његове перформансе.
Напомена: SubredditFeedElements
АПИ је сада замењен SubredditFeedSdui
АПИ-јем и проблем је решен.
Покушао сам да користим ЦхатГПТ да добијем неке увиде из АПИ-ја. Тако је креиран фајл са свим АПИ-јима са њиховим цурл и њиховим одговорима у њему. Отпремио сам ову датотеку у ЦустомГПТ тако да могу да поставим било коју врсту упита. Дао је неке увиде који су били очигледни, попут врсте употребе АПИ-ја и структуре одговора, али је доста халуцинирало, највероватније због много АПИ-ја или ја нисам стручњак за подстицање. Неки од увида које је дала АИ:
GetAllExperimentVariants
АПИ — Многи експерименти имају специфичне називе „варијанти“, укључујући опције као што су enabled
, variant_1
, control_model
и one_feed_ph_bridge_new_users
. Ова сегментација сугерише да Реддит тестира функције на одређеним сегментима корисника како би утврдио њихов утицај. На пример, експеримент d2x_avatar_in_comments_loggedin
има две варијанте, loggedin
и loggedout
, потенцијално тестирајући функцију на основу стања аутентификације корисника.GetAllExperimentVariants
АПИ — Експерименти укључују hybrid_video_rollout_android_v2
, active_sales
и gql_google_maps_integration
, који указују на широк спектар тестова функција који покривају видео функционалност, пласман огласа, побољшања корисничког интерфејса и интеграције трећих странаGetAccountDetails
АПИ — АПИ одговор садржи различита поља са детаљима о статусу налога корисника, као што су isSubredditCreationAllowed
, isNameEditable
, isPasswordSet
и статус модератора корисника. Поред тога, укључује suspensionExpiresAt
и isSuspended
, који показују да ли је налог тренутно суспендован или ограниченПостоји листа ГрапхКЛ АПИ-ја које сам проучавао да бих разумео како Реддит функционише. Постојали су и неки други АПИ-ји као што су аутентификација, извештавање итд. Нисам их укључио у ову листу.
Екран | ГрапхКЛ АПИ | Опис |
---|---|---|
Хоме | ГетАллДинамицЦонфигс | Учитава 400+ конфигурационих параметара на основу којих различите функције апликације раде. Конфигурација је у типичном формату вредности кључа заједно са типом вредности који може бити ЈСОН, флоат, стринг итд. |
| ГетАллЕкпериментВариантс | Захтев садржи информације о апликацији и уређају за додељивање експеримената намењених верзији уређаја и апликације. Одговор садржи листу свих експеримената са ИД-ом, именом експеримента, верзијом и статусом. |
| ГетАццоунт | Учитава све детаље пријављеног корисника. |
| ХомеФеедСдуи | Учитава првих неколико постова са минималним детаљима за приказ на почетној страници. |
| ФеедПостДетаилсБиИдс | Унапред учитава постове користећи ИД-ове са свим детаљима, у случају да корисник кликне на објаву. |
| ДисцоверБарРецоммендатионс | Откријте податке траке. |
| УсерПремиумСубсцриптион | Подаци који се односе на корисничку премијум претплату |
| ГетУсерАдЕлигибилити | Добија квалификованост корисника за оглас и сва подешавања. |
| БадгеЦоунтс | Информације о беџевима које је корисник зарадио. |
| | |
Субреддит Паге | СубреддитЦханнелс | Учитава све основне детаље о заједници као што су опис, иконе, бројачи, дозвољени типови објава и боје. |
| СубреддитТакономиТопицс | Учитава категорију заједнице и текст на екрану, као ако учитам заједницу р/софтвер, приказаће се #20 у софтверу и апликацијама. |
| ИсИнвитеПендинг | Као што име сугерише, проверите да ли постоји позив на чекању, али нисте сигурни који је то позив. |
| СубреддитЦханнелс | Учитава канале за ћаскање суб-реддит-а, проверио сам много субреддита, али нисам могао да нађем ниједан. |
| БлоцкедРеддорс | Доноси податке ако је корисник блокиран. |
| ГетМодераторс | Добија листу модова. |
| ФетцхСтруцтуредСтилеАндВидгетс | Овај АПИ доноси информације о стилу, правилима и детаљима заједнице. |
| ФетцхРелатедЦоммунитиРецоммендатионс | Овај АПИ доноси сродне заједнице. |
| СубреддитМутинг | Проверава да ли је суб реддит искључен. |
| СубреддитФеедЕлементс | Учитава фид суб-реддит-а. Потребни су филтери и опције изгледа изабране за подреддит. Доноси све детаље о објавама које ће бити приказане у фиду. |
| ПостИнфоБиИдЦомментс | Овај захтев унапред учитава само коментаре првог поста. |
| | |
Пост Паге | ГетЦустомЕмојисСтатус | Овај АПИ је позван са суб-реддит ИД-ом и учитава статус прилагођених емоџија на суб-реддит. Није баш јасно зашто се овај АПИ зове, али сам га видео у много прилика. Одговор је био |
| ГетСубреддитАцхиевементФлаирсСтатус | Слично статусу емоџија, он узима суб-реддит ИД и добија одговор као исЕнаблед: фалсе . Сврха овога није ми јасна. |
| ПостИнфоБиИдЦомментс | Овај АПИ се користи за учитавање коментара на пост коришћењем ИД-а поста који је прослеђен у захтеву. |
| ЦомментсПагеАдс | Учитава оглас одмах изнад коментара. |
| | |
Страница профила | РеддиторБиНаме | Учитава детаље профила пријављеног корисника. |
| ПостСетСеттингс | Број постова за учитавање. |
| ГетТопКармаСубреддитс | Набавите листу најбољих субредита са карма поенима у свакој заједници, овај АПИ открива колико смо коментара и карме постова зарадили од наших активности у сваком подредиту. |
| УсерПрофилеФеед | Фид за кориснички профил који садржи коментаре и постове. |
| УсерПублицТропхиес | Листа достигнућа и трофеја зарађених корисничким именом које је прослеђено у захтеву са ИД-ом, именом и сликом за приказ. |
| ТиппингПрофилеМигратед | Детаљи о профилу за напојницу, нисам много користио ову функцију. Показало је 0 стања на мом профилу 😄. |
Желео бих да наведем неколико тачака у закључку овог експеримента рушења.