paint-brush
Reddit හි iOS යෙදුම ඉරා දැමීම - APIs, කාර්ය සාධනය, ආරක්ෂාව සහ A/B අත්හදා බැලීම් පිළිබඳ තීක්ෂ්ණ බුද්ධියවිසින්@hackercm3ebf0le00003b7n7h2a5k7d
නව ඉතිහාසය

Reddit හි iOS යෙදුම ඉරා දැමීම - APIs, කාර්ය සාධනය, ආරක්ෂාව සහ A/B අත්හදා බැලීම් පිළිබඳ තීක්ෂ්ණ බුද්ධිය

විසින් 7m2024/11/26
Read on Terminal Reader

දිග වැඩියි; කියවීමට

මගේ කුතුහලය Reddit iOS යෙදුමේ තිරය පිටුපස විශ්ලේෂණ කිරීමට මා යොමු කළ අතර Reddit API පිළිබඳ හොඳ අවබෝධයක් හෙළිදරව් කළේය.
featured image - Reddit හි iOS යෙදුම ඉරා දැමීම - APIs, කාර්ය සාධනය, ආරක්ෂාව සහ A/B අත්හදා බැලීම් පිළිබඳ තීක්ෂ්ණ බුද්ධිය
undefined HackerNoon profile picture
0-item

Reddit හි iOS යෙදුම් අත්දැකීම වෙබ් අනුවාදයට වඩා හොඳ බව මට පෙනී ගියේය, එබැවින් මම එය වේගයෙන් දත්ත පූරණය කරන්නේ කෙසේදැයි පරීක්ෂා කිරීමට සිතුවෙමි. Reddit හි iOS යෙදුමේ ඉරීම මෙන්න.


මෙන්න විශේෂ අවස්ථා කිහිපයක්:

  • එය ටෝකන් මත පදනම් වූ සත්‍යාපනය භාවිතා කරයි.
  • එය වින්‍යාස කිරීම සහ අත්හදා බැලීම්වල සිට තොරතුරු පළ කිරීම දක්වා සෑම දෙයකටම පාහේ GraphQL API භාවිත කරයි.
  • එය w3-reporting නම් API භාවිතා කරමින් එහි පරිශීලකයන් අත්විඳින පරිදි එහි API පද්ධතියේ ක්‍රියාකාරීත්වය නිරීක්ෂණය කරයි.
  • බොහෝ GraphQL API ඇමතුම් වලදී විචල්‍ය නොමැතිව මෙහෙයුම් නාමය පමණක් සම්මත වේ, මම උපකල්පනය කරන්නේ ඔවුන් විචල්‍යවල වින්‍යාසය ඉදිරිපස අන්තයෙන් වියුක්ත කිරීමට මිඩ්ල්වෙයාර් භාවිතා කරන බවයි. පසුපෙළ සේවාවක් මෙහෙයුම් නාමය මත පදනම්ව තොරතුරු පුරවයි.
  • Reddit සජීවී අදහස් දැක්වීමේ විශේෂාංගය සඳහා Web Socket භාවිතා කරයි.


API ඇමතුම්වල සවිස්තරාත්මක ඉරීම මෙන්න. Reddit හි iOS යෙදුමට බාධා කිරීමට මම Requestly's Desktop App භාවිතා කළෙමි, සැකසීමේ උපදෙස් මෙහි සපයා ඇත.

භාවිතා කරන තාක්ෂණය

Reddit යෙදුම නිර්මාණය කර ඇත

  • Reddit හි iOS යෙදුම සියලු අන්තර්ගතයන් පූරණය කිරීමට GraphQL API භාවිතා කරයි.
  • පරිශීලකයන් වලංගු කිරීම සඳහා ටෝකන් මත පදනම් වූ සත්‍යාපනය භාවිතා වේ.
  • පරිශීලක අන්තයේ API කාර්ය සාධනය වාර්තා කිරීමෙන් කාර්ය සාධන අධීක්ෂණය.
  • WebSocket භාවිතයෙන් සජීවී අදහස් දැක්වීමට සහය දක්වයි.
  • නව අනුවාදයන් යෙදවීමකින් තොරව දුරස්ථව යෙදුම් හැසිරීම් පාලනය කිරීමට ගතික වින්‍යාසය.
  • අත්හදා බැලීම් දුරස්ථව පාලනය කිරීම සඳහා ගතික අත්හදා බැලීම්, අත්හදා බැලීමක තත්ත්වය වෙනස් කිරීමට නව යෙදවීමක් අවශ්‍ය නොවේ.

Preloading සමඟ වඩා හොඳ UX

මට තිබූ ප්‍රධාන ප්‍රශ්නය වූයේ යෙදුම මෙතරම් වේගයෙන් ක්‍රියා කරන්නේ කෙසේද යන්නයි, FeedPostDetailsByIds API හි ප්‍රතිචාරය පරීක්ෂා කිරීමෙන් පිළිතුරු ලැබුණි. මෙම API පෙන්වන්නේ පළ කිරීම් වල ids සමඟ මුල් තිරය මත කැඳවනු ලබන අතර පළ කිරීම ක්ලික් කිරීමෙන් පසු පෙන්වන සවිස්තරාත්මක තොරතුරු සමඟ පැමිණේ. මෙම ඉහළ පළ කිරීම් පූර්ව පූරණය කිරීම කිසිදු පූරණයකින් තොරව පළ කිරීම් විස්තර තිරය ක්ෂණිකව පෙන්වීමට උපකාරී විය.


  • සංග්‍රහයේ පූර්ව පැටවීමේ පළ කිරීම් පෙන්වයි.
  • API වල ප්‍රතිචාර කාලය ද ඉතා වේගවත් වේ.

GraphQL API ආරක්ෂාව

GraphQL විමසුම් අවශ්‍ය ප්‍රතිචාරයේ දත්ත සහ ව්‍යුහයෙන් සමන්විත වේ. මෙහෙයුමේ නම සාමාන්යයෙන් විකල්ප වේ. බොහෝ Reddit API වල විමසුම්වල මෙහෙයුම් නාමයන් පමණක් ඇති අතර විචල්‍යයන් ලබා ගත හැක්කේ උණුසුම් සහ නවතම පළ කිරීම් විකල්ප සමඟ සංග්‍රහය වැනි තිරයේ විචල්‍යයන්/පෙරහන් ඇති විට පමණි.


මෙමගින් ඉදිරිපස සංවර්ධකයින්ට ස්වාධීනව වෙනස්කම් කිරීමට අඩු පාලනයක් ලබා දෙන නමුත් එහි සියලුම පරිශීලක-මුහුණු API පසු අනවශ්‍ය දත්ත ලබා ගැනීම සඳහා API අනිසි ලෙස භාවිතා කිරීම පාලනය කරයි.

දුරස්ථ පාලක අත්හදා බැලීම්

ස්වදේශීය iOS යෙදුම් මත අත්හදා බැලීම් ධාවනය කිරීම දුෂ්කර වන අතර අත්හදා බැලීම් සබල කිරීමට හෝ අක්‍රිය කිරීමට නැවත යෙදවීම් අවශ්‍ය වේ, නමුත් Reddit විසින් පරීක්ෂණ දුරස්ථව පාලනය කළ හැකි ආකාරයෙන් යෙදුම සකසා ඇත. සියලුම අත්හදා බැලීම් ඒවායේ අගයන් සහ තත්ත්‍වයන් සමඟ API එකක පටවනු ලැබේ. යෙදුම එය පවරා ඇති අත්හදා බැලීමේ ප්‍රභේදය ස්වයංක්‍රීයව සක්‍රීය කරයි.

ධජ මත පදනම් වූ විශේෂාංග පාලනය

බොහෝ පරිශීලකයින්, අත්හදා බැලීම් සහ විශේෂාංග සමඟ ඒවා දුරස්ථව පාලනය කිරීම වඩා හොඳය. Reddit මෙම විශේෂාංග දුරස්ථව පාලනය කිරීමේ විශිෂ්ට කාර්යයක් කරයි.

GetAllDynamicConfigs API ඇමතුම Requestly හි පෙන්වා ඇත


යෙදුමේ සෑම දියත් කිරීමකදීම, එය 400+ වින්‍යාස විචල්‍යයන් පූරණය කිරීමට වින්‍යාස API අමතනු ඇත. මෙම විචල්‍යයන් මත පදනම්ව එය විවිධ ලක්ෂණ සහ විශේෂාංගවල ප්‍රභේද පෙන්වයි.

configs API ප්‍රතිචාරය

කර්මවල රහස

GetTopKarmaSubreddits මෙහෙයුම් නාමය සහිත API හට එක් එක් උපයාගත් කර්ම ලකුණු සහිත ඉහළම උපසිරසි ලැයිස්තුව ලැබේ. මෙම API මඟින් එක් එක් sub-reddit හි අපගේ ක්‍රියාකාරකම් වලින් අප කොපමණ අදහස් සහ පසු කර්ම ලබා ගෙන තිබේද යන්න හෙළි කරයි. Reddit හි වෙබ් සහ ජංගම UI තුළ මෙම තොරතුරු මට කිසිදා සොයාගත නොහැකි විය.


එක් එක් Subreddit සඳහා කර්ම

වැඩිදියුණු කිරීමේ විෂය පථය

එය ගෙන එන්නේ කුමන ආකාරයේ දත්තදැයි සොයා ගැනීමට APIs කියවන අතරතුර, SubredditFeedElements API තෝරාගත් උප-reddit හි සංග්‍රහය පූරණය කරන බව මට පෙනී ගිය නමුත් සෑම පළ කිරීමක් සමඟම, එහි සවිස්තරාත්මක උප-රෙඩිට් තොරතුරුවල කැදලි JSON ඇත. මෙම තොරතුරු අතිරික්ත වන අතර API හි ජාල භාරය අඩු කිරීමට සහ එහි කාර්ය සාධනය තවදුරටත් වැඩිදියුණු කිරීමට ඉවත් කළ හැක.


සටහන: SubredditFeedElements API දැන් SubredditFeedSdui API මගින් ප්‍රතිස්ථාපනය කර ඇති අතර ගැටළුව විසඳා ඇත.

තීක්ෂ්ණ බුද්ධිය සඳහා AI භාවිත කරන්න

මම API වලින් යම් අවබෝධයක් ලබා ගැනීමට ChatGPT භාවිතා කිරීමට උත්සාහ කළෙමි. ඒ නිසා සියලුම API වල curl සහ ඒවායේ ප්‍රතිචාර සහිත ගොනුවක් නිර්මාණය කළා. මෙම ගොනුව CustomGPT වෙත උඩුගත කරන ලද අතර එමඟින් මට ඕනෑම ආකාරයක විමසුමක් තැබිය හැකිය. එය API එකක කුමන ආකාරයේ භාවිතයක් තිබිය හැකිද සහ ප්‍රතිචාරයේ ව්‍යුහය වැනි පැහැදිලි වූ සමහර අවබෝධයක් ලබා දුන් නමුත් එය බොහෝ APIs නිසා හෝ මා ප්‍රේරකයේ ප්‍රවීණයෙකු නොවන නිසා බොහෝ දුරට මායාවට පත් විය. AI විසින් ලබා දී ඇති සමහර අදහස්:


  1. GetAllExperimentVariants API — බොහෝ අත්හදා බැලීම් වලට enabled , variant_1 , control_model , සහ one_feed_ph_bridge_new_users වැනි විකල්ප ඇතුළුව විශේෂිත "විචල්‍ය" නම් ඇත. මෙම ඛණ්ඩනය යෝජනා කරන්නේ Reddit ඒවායේ බලපෑම තීරණය කිරීම සඳහා විශේෂිත පරිශීලක කොටස්වල විශේෂාංග පරීක්ෂා කරන බවයි. උදාහරණයක් ලෙස, d2x_avatar_in_comments_loggedin අත්හදා බැලීමේ ප්‍රභේද දෙකක් ඇත, loggedin , සහ loggedout , පරිශීලක සත්‍යාපන තත්ත්වය මත පදනම්ව විශේෂාංගය පරීක්ෂා කළ හැකිය.
  2. GetAllExperimentVariants API — අත්හදා බැලීම්වලට hybrid_video_rollout_android_v2 , active_sales , සහ gql_google_maps_integration ඇතුළත් වන අතර, ඒවා වීඩියෝ ක්‍රියාකාරීත්වය, දැන්වීම් ස්ථානගත කිරීම්, පරිශීලක අතුරුමුහුණත් වැඩි දියුණු කිරීම් සහ තෙවන පාර්ශවීය ඒකාබද්ධ කිරීම් ආවරණය වන පුළුල් පරාසයක විශේෂාංග පරීක්ෂණ වෙත යොමු කරයි.
  3. GetAccountDetails API — API ප්‍රතිචාරයේ isSubredditCreationAllowed , isNameEditable , isPasswordSet , සහ පරිශීලකයාගේ ප්‍රමිතිකරණ තත්ත්වය වැනි පරිශීලකගේ ගිණුම් තත්ත්වය විස්තර කරන විවිධ ක්ෂේත්‍ර අඩංගු වේ. අතිරේක වශයෙන්, එහි ගිණුමක් දැනට අත්හිටුවා හෝ සීමා කර තිබේද යන්න පෙන්නුම් කරන, suspensionExpiresAt සහ isSuspended ඇතුළත් වේ.

API ලැයිස්තුව

Reddit ක්‍රියා කරන ආකාරය තේරුම් ගැනීමට මා අධ්‍යයනය කළ GraphQL API ලැයිස්තුවක් තිබේ. සත්‍යාපනය, වාර්තා කිරීම වැනි තවත් API කිහිපයක් තිබුණා. මම ඒවා මෙම ලැයිස්තුවට ඇතුළත් කළේ නැහැ.

තිරය

GraphQL API
(මෙහෙයුම් නම)

විස්තරය

නිවස

GetAllDynamicConfigs

යෙදුමේ විවිධ විශේෂාංග ක්‍රියා කරන 400+ වින්‍යාස පරාමිති පූරණය කරයි. වින්‍යාසය JSON, float, string යනාදිය විය හැකි අගයේ වර්ගය සමඟ සාමාන්‍ය යතුරු අගය ආකෘතියෙන් ඇත.


GetAllExperimentVariants

උපාංගය සහ යෙදුම් අනුවාදය සඳහා වන අත්හදා බැලීම් පැවරීම සඳහා යෙදුම සහ උපාංගය පිළිබඳ තොරතුරු ඉල්ලීමෙහි අඩංගු වේ. ප්‍රතිචාරයේ හැඳුනුම්පත, අත්හදා බැලීමේ නම, අනුවාදය සහ තත්ත්‍වය සහිත සියලු අත්හදා බැලීම් ලැයිස්තුවක් අඩංගු වේ.


GetAccount

ලොග් වී ඇති පරිශීලකයාගේ සියලු විස්තර පූරණය කරයි.


HomeFeedSdui

මුල් පිටුවේ පෙන්වීමට අවම විස්තර සහිත පළමු පළ කිරීම් කිහිපය පූරණය කරයි.


FeedPostDetailsByIds

පරිශීලකයෙකු පළ කිරීම මත ක්ලික් කළහොත්, සියලු විස්තර සහිත id භාවිතා කරමින් පළ කිරීම් පූර්ව පූරණය කරයි.


DiscoverBar නිර්දේශ

තීරු දත්ත සොයා ගන්න.


UserPremiumSubscription

පරිශීලක වාරික දායකත්වයට අදාළ දත්ත


GetUserAdEligibility

පරිශීලකයාගේ දැන්වීම් සුදුසුකම් සහ ඕනෑම මනාප ලබා ගනී.


BadgeCounts

පරිශීලකයා විසින් උපයාගත් ලාංඡන පිළිබඳ තොරතුරු.




Subreddit පිටුව

SubredditChannels

විස්තරය, අයිකන, කවුන්ටර, අවසර ලත් පළ කිරීම් වර්ග සහ වර්ණ වැනි ප්‍රජාව පිළිබඳ සියලු මූලික විස්තර පූරණය කරයි.


SubredditTaxonomy මාතෘකා

ප්‍රජාවේ ප්‍රවර්ගය පූරණය කරන අතර මම ප්‍රජාව r/මෘදුකාංගය පූරණය කළහොත් එය මෘදුකාංග සහ යෙදුම්වල #20 පෙන්වයි වැනි සංදර්ශක පෙළ.


InvitePending වේ

නම යෝජනා කරන පරිදි පොරොත්තු ආරාධනයක් සඳහා පරීක්ෂා කරන්න, නමුත් කුමන ආරාධනයදැයි නිශ්චිතවම විශ්වාස නැත.


SubredditChannels

sub-reddit හි කතාබස් නාලිකා පූරණය කරයි, මම බොහෝ subreddits පරීක්ෂා කළ නමුත් කිසිවක් සොයා ගැනීමට නොහැකි විය.


BlockedRedditors

පරිශීලකයා අවහිර කර ඇත්නම් දත්ත ගෙන එයි.


GetModerators

මාදිලි ලැයිස්තුවක් ලබා ගනී.


FetchStructuredStyleAndWidgets

මෙම API ප්‍රජාවේ ශෛලිය, රීති සහ විස්තර පිළිබඳ තොරතුරු ගෙන එයි.


FetchRelatedCommunityRecommendations

මෙම API අදාළ ප්‍රජාවන් ගෙන එයි.


SubredditMuting

sub reddit නිශ්ශබ්ද වී ඇත්දැයි පරීක්ෂා කරයි.


SubredditFeedElements

උප-reddit හි සංග්‍රහය පූරණය කරයි. එය උප-රෙඩිට් සඳහා තෝරාගත් පෙරහන් සහ පිරිසැලසුම් විකල්ප ගනී. සංග්‍රහයේ ප්‍රදර්ශනය කළ යුතු පළ කිරීම් පිළිබඳ සියලු විස්තර ගෙන එයි.


PostInfoByIdComments

මෙම ඉල්ලීම ප්‍රථම පෝස්ටුවෙහි අදහස් පමණක් පූර්ව පූරණය කරයි.




තැපැල් පිටුව

GetCustomEmojisStatus

මෙම API උප-රෙඩිට් හැඳුනුම්පත සමඟින් කැඳවා ඇති අතර උප-රෙඩිට් මත අභිරුචි ඉමෝජිවල තත්ත්වය පූරණය කරයි. මෙම API හඳුන්වන්නේ ඇයිද යන්න පිළිබඳව එය ඉතා පැහැදිලි නැත, නමුත් මම එය බොහෝ අවස්ථාවලදී දැක ඇත. ප්‍රතිචාරය isEnabled: false .


GetSubredditAchievementFlairsStatus

ඉමොජි තත්ත්වයට සමානව එය උප-රෙඩිට් හැඳුනුම්පතක් ගන්නා අතර isEnabled: false ලෙස ප්‍රතිචාරයක් ලබා ගනී. මේකේ අරමුණ මට පැහැදිලි නෑ.


PostInfoByIdComments

මෙම API ඉල්ලීමෙහි සම්මත කර ඇති තැපැල් හැඳුනුම්පත භාවිතා කිරීමෙන් පළකිරීමේ අදහස් පූරණය කිරීමට භාවිතා කරයි.


CommentsPageAds

අදහස්වලට ඉහළින් දැන්වීම පූරණය කරයි.




පැතිකඩ පිටුව

RedditorByName

පුරනය වී ඇති පරිශීලකයාගේ පැතිකඩ විස්තර පූරණය කරයි.


PostSetSettings

පූරණය කළ යුතු තනතුරු ගණන.


GetTopKarmaSubreddits

එක් එක් ප්‍රජාව මත කර්ම ලකුණු සහිත ඉහළම උපසිරසි ලැයිස්තුව ලබා ගන්න, මෙම API මඟින් එක් එක් උප-රෙඩිට් තුළ අපගේ ක්‍රියාකාරකම් වලින් අප කොපමණ අදහස් සහ පසු කර්ම උපයා තිබේද යන්න හෙළි කරයි.


UserProfileFeed

අදහස් සහ පළ කිරීම් අඩංගු පරිශීලක පැතිකඩ සඳහා සංග්‍රහය.


UserPublicTropies

පරිශීලක නාමයෙන් ඉපැයූ ජයග්‍රහණ සහ කුසලාන ලැයිස්තුව ප්‍රදර්ශනය කිරීමට හැඳුනුම්පත, නම සහ රූපය සමඟ ඉල්ලීමකදී සම්මත කර ඇත.


TippingProfileMigrate කරන ලදී

ඉඟි පැතිකඩ පිළිබඳ විස්තර, මෙම විශේෂාංගය වැඩිපුර භාවිතා කර නැත. එය මගේ පැතිකඩෙහි 0 ශේෂයක් පෙන්නුම් කළේය 😄.

නිගමනය

මෙම ඉරා දැමීමේ අත්හදා බැලීම අවසානයේ මම කරුණු කිහිපයක් ඉදිරිපත් කිරීමට කැමැත්තෙමි.

  • Reddit හි API ඉතා වේගවත් නොවේ, ඒ වෙනුවට වඩා හොඳ පරිශීලක අත්දැකීමක් ලබා දීමට පෙර පැටවීම භාවිතා කරයි.
  • APIs වැඩ කිසිවිටෙක සම්පූර්ණ නොවේ, Reddit හි ඉංජිනේරුවාට පවා එය තව දුරටත් වැඩිදියුණු කිරීමට යම් වැඩ කොටසක් කිරීමට තිබේ.
  • යෙදුම් සහ අත්හදා බැලීම් වින්‍යාසයන් දුරස්ථව තබා ගැනීමෙන් පරිශීලක අත්දැකීම මත හොඳ පාලනයක් ලබා දිය හැක.
  • Requestly හි ඉංජිනේරුවන් සෑම GraphQL ඉල්ලීමක් සමඟම මෙහෙයුම් නාමය පෙන්වීමට විශිෂ්ට කාර්යයක් ඉටු කළ අතර, devs හි ජීවිතය වඩාත් පහසු කරයි.