paint-brush
Reddit இன் iOS பயன்பாட்டைக் கிழித்தல் - APIகள், செயல்திறன், பாதுகாப்பு மற்றும் A/B சோதனைகள் பற்றிய நுண்ணறிவுமூலம்@hackercm3ebf0le00003b7n7h2a5k7d
புதிய வரலாறு

Reddit இன் iOS பயன்பாட்டைக் கிழித்தல் - APIகள், செயல்திறன், பாதுகாப்பு மற்றும் A/B சோதனைகள் பற்றிய நுண்ணறிவு

மூலம் 7m2024/11/26
Read on Terminal Reader

மிக நீளமானது; வாசிப்பதற்கு

எனது ஆர்வம் Reddit iOS செயலியின் திரைக்குப் பின்னால் உள்ள பகுப்பாய்வுக்கு என்னை அழைத்துச் சென்றது மற்றும் Reddit APIகளைப் பற்றிய சில நல்ல நுண்ணறிவுகளை வெளிப்படுத்தியது.
featured image - Reddit இன் iOS பயன்பாட்டைக் கிழித்தல் - APIகள், செயல்திறன், பாதுகாப்பு மற்றும் A/B சோதனைகள் பற்றிய நுண்ணறிவு
undefined HackerNoon profile picture
0-item

Reddit இன் iOS ஆப்ஸ் அனுபவமானது வலைப் பதிப்பை விட சிறப்பாக இருப்பதைக் கண்டேன், எனவே இது எவ்வாறு டேட்டாவை மிக வேகமாக ஏற்றுகிறது என்பதைச் சரிபார்க்க நினைத்தேன். Reddit இன் iOS செயலியின் கிழிசல் இதோ.


இதோ சில சிறப்பம்சங்கள்:

  • இது டோக்கன் அடிப்படையிலான அங்கீகாரத்தைப் பயன்படுத்துகிறது.
  • உள்ளமைவு மற்றும் சோதனைகள் முதல் தகவல் இடுகை வரை கிட்டத்தட்ட எல்லாவற்றுக்கும் இது GraphQL APIகளைப் பயன்படுத்துகிறது.
  • இது அதன் API அமைப்பின் செயல்திறனை w3-reporting எனப் பெயரிடப்பட்ட API ஐப் பயன்படுத்தி அதன் பயனர்கள் அனுபவிக்கும் வகையில் கண்காணிக்கிறது.
  • பெரும்பாலான GraphQL API அழைப்புகளில், செயல்பாட்டின் பெயர் மட்டுமே மாறிகள் இல்லாமல் அனுப்பப்படுகிறது, அவர்கள் முன்-இறுதியில் இருந்து மாறிகளின் உள்ளமைவைச் சுருக்க, மிடில்வேரைப் பயன்படுத்துகிறார்கள் என்று கருதுகிறேன். செயல்பாட்டின் பெயரின் அடிப்படையில் ஒரு பின்தள சேவை தகவலை நிரப்புகிறது.
  • நேரடி கருத்துகள் அம்சத்திற்காக ரெடிட் வலை சாக்கெட்டைப் பயன்படுத்துகிறது.


API அழைப்புகளின் விரிவான கிழிப்பு இங்கே உள்ளது. Reddit இன் iOS பயன்பாட்டை இடைமறிக்க நான் Requestly இன் டெஸ்க்டாப் பயன்பாட்டைப் பயன்படுத்தினேன், அமைவு வழிமுறைகள் இங்கே வழங்கப்பட்டுள்ளன.

தொழில்நுட்பம் பயன்படுத்தப்பட்டது

Reddit App உடன் உருவாக்கப்பட்டது

  • Reddit இன் iOS பயன்பாடு அனைத்து உள்ளடக்கத்தையும் ஏற்ற GraphQL APIகளைப் பயன்படுத்துகிறது.
  • பயனர்களை சரிபார்க்க டோக்கன் அடிப்படையிலான அங்கீகாரம் பயன்படுத்தப்படுகிறது.
  • பயனர் முடிவில் API செயல்திறனைப் புகாரளிப்பதன் மூலம் செயல்திறன் கண்காணிப்பு.
  • WebSocket ஐப் பயன்படுத்தி நேரலையில் கருத்துத் தெரிவிப்பது ஆதரிக்கப்படுகிறது.
  • புதிய பதிப்புகளைப் பயன்படுத்தாமல், ஆப்ஸின் நடத்தையை தொலைவிலிருந்து கட்டுப்படுத்த டைனமிக் உள்ளமைவு.
  • சோதனைகளை தொலைவிலிருந்து கட்டுப்படுத்தும் டைனமிக் பரிசோதனைகள், பரிசோதனையின் நிலையை மாற்ற புதிய வரிசைப்படுத்தல் தேவையில்லை.

முன் ஏற்றுதல் மூலம் சிறந்த UX

எனக்கு இருந்த முக்கிய கேள்வி என்னவென்றால், இந்த ஆப்ஸ் எப்படி வேகமாக செயல்படுகிறது என்பதுதான் FeedPostDetailsByIds API இன் பதிலைச் சரிபார்த்ததில் பதில் கிடைத்தது. இந்த ஏபிஐ முகப்புத் திரையில் காட்டப்படும் இடுகைகளின் ஐடிகளுடன் அழைக்கப்படுகிறது மற்றும் இடுகையைக் கிளிக் செய்த பிறகு காட்டப்படும் விரிவான தகவலுடன் வருகிறது. உயர்மட்ட இடுகைகளின் இந்த முன் ஏற்றுதல், எந்த ஏற்றியும் இல்லாமல் இடுகை விவரங்கள் திரையை உடனடியாகக் காண்பிக்க உதவியது.


  • முன் ஏற்றும் இடுகைகள் ஊட்டத்தில் காட்டப்படுகின்றன.
  • APIகளின் மறுமொழி நேரமும் மிக வேகமாக உள்ளது.

GraphQL APIகள் பாதுகாப்பு

GraphQL வினவல்கள் தேவையான பதிலின் தரவு மற்றும் கட்டமைப்பைக் கொண்டிருக்கும். செயல்பாட்டின் பெயர் பொதுவாக விருப்பமானது. பெரும்பாலான Reddit APIகள் வினவல்களில் செயல்பாட்டுப் பெயர்களை மட்டுமே கொண்டுள்ளன மற்றும் சூடான மற்றும் சமீபத்திய இடுகை விருப்பங்களுடன் ஊட்டம் போன்ற திரையில் மாறிகள்/வடிப்பான்கள் இருக்கும்போது மட்டுமே மாறிகள் கிடைக்கும்.


இது ஃப்ரண்டென்ட் டெவலப்பர்களுக்கு சுதந்திரமாக மாற்றங்களைச் செய்வதற்குக் குறைவான கட்டுப்பாட்டை அளிக்கிறது, ஆனால் அதன் அனைத்து பயனர் எதிர்கொள்ளும் APIக்குப் பிறகு தேவையற்ற தரவைப் பெற APIகளின் தவறான பயன்பாடு மீது அதிக கட்டுப்பாட்டை வழங்குகிறது.

ரிமோட் கண்ட்ரோல்ட் பரிசோதனைகள்

சொந்த iOS பயன்பாடுகளில் சோதனைகளை இயக்குவது கடினம், சோதனைகளை இயக்க அல்லது முடக்க மறு-பயன்பாடுகள் தேவை, ஆனால் Reddit சோதனைகளை தொலைவிலிருந்து கட்டுப்படுத்தும் வகையில் பயன்பாட்டை அமைத்துள்ளது. அனைத்து சோதனைகளும் அவற்றின் மதிப்புகள் மற்றும் நிலைகளுடன் API இல் ஏற்றப்படுகின்றன. ஆப்ஸ் அது ஒதுக்கப்பட்ட பரிசோதனையின் மாறுபாட்டை தானாகவே செயல்படுத்துகிறது.

கொடி அடிப்படையிலான அம்சங்கள் கட்டுப்பாடு

பல பயனர்கள், சோதனைகள் மற்றும் அம்சங்கள் இருப்பதால், அவற்றை தொலைவிலிருந்து கட்டுப்படுத்துவது நல்லது. Reddit இந்த அம்சங்களை ரிமோட் மூலம் கட்டுப்படுத்தும் ஒரு சிறந்த வேலை செய்கிறது.

GetAllDynamicConfigs API அழைப்பு கோரிக்கையில் காட்டப்பட்டுள்ளது


பயன்பாட்டின் ஒவ்வொரு வெளியீட்டின் போதும், 400+ உள்ளமைவு மாறிகளை ஏற்றுவதற்கு உள்ளமைவு API ஐ அழைக்கும். இந்த மாறிகளின் அடிப்படையில் இது பல்வேறு அம்சங்களையும் அம்சங்களின் மாறுபாடுகளையும் காட்டுகிறது.

configs API பதில்

கர்மங்களின் ரகசியம்

GetTopKarmaSubreddits என்ற செயல்பாட்டுப் பெயருடன் API ஆனது, ஒவ்வொன்றிலும் பெறப்பட்ட கர்மா புள்ளிகளுடன் சிறந்த சப்ரெடிட்களின் பட்டியலைப் பெறுகிறது. ஒவ்வொரு துணை-ரெடிட்டிலும் எங்கள் செயல்பாட்டிலிருந்து எத்தனை கருத்துகள் மற்றும் இடுகை கர்மாவைப் பெற்றுள்ளோம் என்பதை இந்த API வெளிப்படுத்துகிறது. Reddit இன் வலை மற்றும் மொபைல் UI இல் இந்தத் தகவலை என்னால் கண்டுபிடிக்க முடியவில்லை.


ஒவ்வொரு சப்ரெடிட்டுக்கும் கர்மா

முன்னேற்றத்தின் நோக்கம்

அது எந்த வகையான தரவைக் கொண்டுவருகிறது என்பதைக் கண்டறிய APIகளைப் படிக்கும் போது, SubredditFeedElements API தேர்ந்தெடுக்கப்பட்ட சப்-ரெடிட்டின் ஊட்டத்தை ஏற்றுவதைக் கண்டேன், ஆனால் ஒவ்வொரு இடுகையிலும், அது விரிவான துணை-ரெடிட் தகவலின் உள்ளமைக்கப்பட்ட JSON ஐக் கொண்டுள்ளது. இந்தத் தகவல் தேவையற்றது மற்றும் API இன் நெட்வொர்க் சுமையைக் குறைக்கவும் அதன் செயல்திறனை மேலும் மேம்படுத்தவும் அகற்றலாம்.


குறிப்பு: SubredditFeedElements API இப்போது SubredditFeedSdui API ஆல் மாற்றப்பட்டு சிக்கல் சரி செய்யப்பட்டது.

நுண்ணறிவுகளுக்கு AI ஐப் பயன்படுத்தவும்

API களில் இருந்து சில நுண்ணறிவுகளைப் பெற ChatGPT ஐப் பயன்படுத்த முயற்சித்தேன். எனவே அனைத்து API களுடன் அவற்றின் சுருட்டை மற்றும் அவற்றின் பதில்களுடன் ஒரு கோப்பை உருவாக்கியது. இந்தக் கோப்பை CustomGPTக்கு பதிவேற்றினேன், அதனால் நான் எந்த வகையான வினவலையும் வைக்க முடியும். இது ஒரு API எந்த வகையான பயன்பாடு மற்றும் பதிலின் அமைப்பு போன்ற தெளிவான சில நுண்ணறிவுகளை அளித்தது, ஆனால் அது நிறைய மாயையை ஏற்படுத்தியது, பெரும்பாலும் ஏபிஐகளின் காரணமாக இருக்கலாம் அல்லது நான் தூண்டுவதில் நிபுணன் இல்லை. 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

சாதனம் மற்றும் பயன்பாட்டின் பதிப்பிற்கான சோதனைகளை ஒதுக்குவதற்கான பயன்பாடு மற்றும் சாதனம் பற்றிய தகவல் கோரிக்கையில் உள்ளது. பதிலில் ஐடி, பரிசோதனைப் பெயர், பதிப்பு & நிலை ஆகியவற்றுடன் அனைத்து சோதனைகளின் பட்டியல் உள்ளது.


கணக்கு பெறவும்

உள்நுழைந்த பயனரின் அனைத்து விவரங்களையும் ஏற்றுகிறது.


HomeFeedSdui

முகப்புப்பக்கத்தில் காட்ட குறைந்தபட்ச விவரங்களுடன் முதல் சில இடுகைகளை ஏற்றுகிறது.


FeedPostDetailsByIds

ஒரு பயனர் இடுகையைக் கிளிக் செய்தால், எல்லா விவரங்களுடனும் ஐடிகளைப் பயன்படுத்தி இடுகைகளை முன்கூட்டியே ஏற்றுகிறது.


DiscoverBar பரிந்துரைகள்

பார் தரவைக் கண்டறியவும்.


பயனர் பிரீமியம் சந்தா

பயனர் பிரீமியம் சந்தா தொடர்பான தரவு


GetUserAdEligibility

பயனரின் விளம்பரத் தகுதி மற்றும் விருப்பத்தேர்வுகளைப் பெறுகிறது.


பேட்ஜ்கவுண்ட்ஸ்

பயனர் பெற்ற பேட்ஜ்கள் பற்றிய தகவல்.




சப்ரெடிட் பக்கம்

SubredditChannels

விளக்கம், சின்னங்கள், கவுண்டர்கள், அனுமதிக்கப்பட்ட இடுகை வகைகள் மற்றும் வண்ணங்கள் போன்ற சமூகத்தைப் பற்றிய அனைத்து அடிப்படை விவரங்களையும் ஏற்றுகிறது.


SubredditTaxonomyTopics

சமூகத்தின் வகையையும் காட்சி உரையையும் ஏற்றுகிறது.


அழைப்பு நிலுவையில் உள்ளது

பெயர் குறிப்பிடுவது போல, நிலுவையில் உள்ள அழைப்பைச் சரிபார்க்கவும், ஆனால் எந்த அழைப்பை சரியாகச் செய்ய வேண்டும் என்று தெரியவில்லை.


SubredditChannels

சப்-ரெடிட்டின் அரட்டை சேனல்களை ஏற்றுகிறது, நான் பல சப்ரெடிட்களைச் சரிபார்த்தேன், ஆனால் எதையும் கண்டுபிடிக்க முடியவில்லை.


தடுக்கப்பட்ட ரெடிட்டர்கள்

பயனர் தடுக்கப்பட்டால் தரவைக் கொண்டுவருகிறது.


GetModerators

மோட்களின் பட்டியலைப் பெறுகிறது.


FetchStructuredStyleAndWidgets

இந்த API ஆனது சமூகத்தின் நடை, விதிகள் மற்றும் விவரங்கள் பற்றிய தகவலைக் கொண்டுவருகிறது.


Fetch Related Community Recommendations

இந்த API தொடர்புடைய சமூகங்களைக் கொண்டுவருகிறது.


SubredditMuting

சப் ரெடிட் முடக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்கிறது.


SubredditFeedElements

துணை-ரெடிட்டின் ஊட்டத்தை ஏற்றுகிறது. துணை-ரெடிட்டுக்கு தேர்ந்தெடுக்கப்பட்ட வடிப்பான்கள் மற்றும் தளவமைப்பு விருப்பங்களை இது எடுக்கும். ஊட்டத்தில் காட்டப்பட வேண்டிய இடுகைகள் பற்றிய அனைத்து விவரங்களையும் கொண்டு வரும்.


PostInfoByIdComments

இந்தக் கோரிக்கையானது முதல் இடுகையின் கருத்துகளை மட்டும் முன் ஏற்றுகிறது.




இடுகை பக்கம்

GetCustomEmojisStatus

இந்த ஏபிஐ சப்-ரெடிட் ஐடியுடன் அழைக்கப்படுகிறது மற்றும் சப்-ரெடிட்டில் தனிப்பயன் ஈமோஜிகளின் நிலையை ஏற்றுகிறது. இந்த API ஏன் அழைக்கப்படுகிறது என்பது தெளிவாகத் தெரியவில்லை, ஆனால் நான் அதை பல சந்தர்ப்பங்களில் பார்த்திருக்கிறேன். பதில் isEnabled: false .


GetSubredditAchievementFlairsStatus

ஈமோஜி நிலையைப் போலவே இது சப்-ரெடிட் ஐடியை எடுத்து, isEnabled: false என பதிலைப் பெறுகிறது. இதன் நோக்கம் எனக்கு விளங்கவில்லை.


PostInfoByIdComments

கோரிக்கையில் அனுப்பப்பட்ட இடுகை ஐடியைப் பயன்படுத்தி இடுகையின் கருத்துகளை ஏற்றுவதற்கு இந்த API பயன்படுத்தப்படுகிறது.


CommentsPageAds

கருத்துகளுக்கு மேலே விளம்பரத்தை ஏற்றுகிறது.




சுயவிவரப் பக்கம்

RedditorByName

உள்நுழைந்த பயனரின் சுயவிவர விவரங்களை ஏற்றுகிறது.


PostSetSettings

ஏற்ற வேண்டிய இடுகைகளின் எண்ணிக்கை.


GetTopKarmaSubreddits

ஒவ்வொரு சமூகத்திலும் உள்ள கர்மா புள்ளிகளுடன் சிறந்த சப்ரெடிட்களின் பட்டியலைப் பெறுங்கள், ஒவ்வொரு துணை-ரெடிட்டில் எங்கள் செயல்பாட்டிலிருந்து எத்தனை கருத்துகள் மற்றும் இடுகை கர்மாவைப் பெற்றுள்ளோம் என்பதை இந்த API வெளிப்படுத்துகிறது.


UserProfileFeed

கருத்துகள் மற்றும் இடுகைகளைக் கொண்ட பயனர் சுயவிவரத்திற்கான ஊட்டம்.


UserPublicTrophies

ஐடி, பெயர் மற்றும் படம் காட்டப்பட வேண்டிய கோரிக்கையில் அனுப்பப்பட்ட பயனர் பெயரால் பெற்ற சாதனைகள் மற்றும் கோப்பைகளின் பட்டியல்.


டிப்பிங் சுயவிவரம் இடம்பெயர்ந்தது

டிப்பிங் சுயவிவரத்தைப் பற்றிய விவரங்கள், இந்த அம்சத்தை அதிகம் பயன்படுத்தவில்லை. இது எனது சுயவிவரத்தில் 0 இருப்பைக் காட்டியது 😄.

முடிவுரை

இந்த டீர் டவுன் பரிசோதனையின் முடிவில் நான் இரண்டு புள்ளிகளைக் கூற விரும்புகிறேன்.

  • Reddit இன் APIகள் மிக வேகமாக இல்லை, மாறாக அவை சிறந்த பயனர் அனுபவத்தை வழங்க முன் ஏற்றி பயன்படுத்துகின்றன.
  • API களின் வேலை ஒருபோதும் முழுமையடையாது, Reddit இன் பொறியாளர் கூட அதை மேலும் மேம்படுத்த சில வேலைகளைச் செய்ய வேண்டும்.
  • ஆப்ஸ் & பரிசோதனை உள்ளமைவுகளை தொலைவிலிருந்து வைத்திருப்பது பயனர் அனுபவத்தின் மீது நல்ல கட்டுப்பாட்டை அளிக்கும்.
  • Requestly இன் பொறியாளர்கள் ஒவ்வொரு GraphQL கோரிக்கையிலும் செயல்பாட்டு பெயரைக் காண்பிப்பதில் ஒரு சிறந்த வேலையைச் செய்தார்கள், இது devs இன் வாழ்க்கையை மிகவும் எளிதாக்குகிறது.