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 මෙම විශේෂාංග දුරස්ථව පාලනය කිරීමේ විශිෂ්ට කාර්යයක් කරයි.
යෙදුමේ සෑම දියත් කිරීමකදීම, එය 400+ වින්යාස විචල්යයන් පූරණය කිරීමට වින්යාස API අමතනු ඇත. මෙම විචල්යයන් මත පදනම්ව එය විවිධ ලක්ෂණ සහ විශේෂාංගවල ප්රභේද පෙන්වයි.
කර්මවල රහස
GetTopKarmaSubreddits
මෙහෙයුම් නාමය සහිත API හට එක් එක් උපයාගත් කර්ම ලකුණු සහිත ඉහළම උපසිරසි ලැයිස්තුව ලැබේ. මෙම API මඟින් එක් එක් sub-reddit හි අපගේ ක්රියාකාරකම් වලින් අප කොපමණ අදහස් සහ පසු කර්ම ලබා ගෙන තිබේද යන්න හෙළි කරයි. Reddit හි වෙබ් සහ ජංගම UI තුළ මෙම තොරතුරු මට කිසිදා සොයාගත නොහැකි විය.
වැඩිදියුණු කිරීමේ විෂය පථය
එය ගෙන එන්නේ කුමන ආකාරයේ දත්තදැයි සොයා ගැනීමට APIs කියවන අතරතුර, SubredditFeedElements
API තෝරාගත් උප-reddit හි සංග්රහය පූරණය කරන බව මට පෙනී ගිය නමුත් සෑම පළ කිරීමක් සමඟම, එහි සවිස්තරාත්මක උප-රෙඩිට් තොරතුරුවල කැදලි JSON ඇත. මෙම තොරතුරු අතිරික්ත වන අතර API හි ජාල භාරය අඩු කිරීමට සහ එහි කාර්ය සාධනය තවදුරටත් වැඩිදියුණු කිරීමට ඉවත් කළ හැක.
සටහන: SubredditFeedElements
API දැන් SubredditFeedSdui
API මගින් ප්රතිස්ථාපනය කර ඇති අතර ගැටළුව විසඳා ඇත.
තීක්ෂ්ණ බුද්ධිය සඳහා AI භාවිත කරන්න
මම API වලින් යම් අවබෝධයක් ලබා ගැනීමට ChatGPT භාවිතා කිරීමට උත්සාහ කළෙමි. ඒ නිසා සියලුම API වල curl සහ ඒවායේ ප්රතිචාර සහිත ගොනුවක් නිර්මාණය කළා. මෙම ගොනුව CustomGPT වෙත උඩුගත කරන ලද අතර එමඟින් මට ඕනෑම ආකාරයක විමසුමක් තැබිය හැකිය. එය API එකක කුමන ආකාරයේ භාවිතයක් තිබිය හැකිද සහ ප්රතිචාරයේ ව්යුහය වැනි පැහැදිලි වූ සමහර අවබෝධයක් ලබා දුන් නමුත් එය බොහෝ APIs නිසා හෝ මා ප්රේරකයේ ප්රවීණයෙකු නොවන නිසා බොහෝ දුරට මායාවට පත් විය. AI විසින් ලබා දී ඇති සමහර අදහස්:
-
GetAllExperimentVariants
API — බොහෝ අත්හදා බැලීම් වලටenabled
,variant_1
,control_model
, සහone_feed_ph_bridge_new_users
වැනි විකල්ප ඇතුළුව විශේෂිත "විචල්ය" නම් ඇත. මෙම ඛණ්ඩනය යෝජනා කරන්නේ Reddit ඒවායේ බලපෑම තීරණය කිරීම සඳහා විශේෂිත පරිශීලක කොටස්වල විශේෂාංග පරීක්ෂා කරන බවයි. උදාහරණයක් ලෙස,d2x_avatar_in_comments_loggedin
අත්හදා බැලීමේ ප්රභේද දෙකක් ඇත,loggedin
, සහloggedout
, පරිශීලක සත්යාපන තත්ත්වය මත පදනම්ව විශේෂාංගය පරීක්ෂා කළ හැකිය. -
GetAllExperimentVariants
API — අත්හදා බැලීම්වලටhybrid_video_rollout_android_v2
,active_sales
, සහgql_google_maps_integration
ඇතුළත් වන අතර, ඒවා වීඩියෝ ක්රියාකාරීත්වය, දැන්වීම් ස්ථානගත කිරීම්, පරිශීලක අතුරුමුහුණත් වැඩි දියුණු කිරීම් සහ තෙවන පාර්ශවීය ඒකාබද්ධ කිරීම් ආවරණය වන පුළුල් පරාසයක විශේෂාංග පරීක්ෂණ වෙත යොමු කරයි. -
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 හඳුන්වන්නේ ඇයිද යන්න පිළිබඳව එය ඉතා පැහැදිලි නැත, නමුත් මම එය බොහෝ අවස්ථාවලදී දැක ඇත. ප්රතිචාරය |
| GetSubredditAchievementFlairsStatus | ඉමොජි තත්ත්වයට සමානව එය උප-රෙඩිට් හැඳුනුම්පතක් ගන්නා අතර isEnabled: false ලෙස ප්රතිචාරයක් ලබා ගනී. මේකේ අරමුණ මට පැහැදිලි නෑ. |
| PostInfoByIdComments | මෙම API ඉල්ලීමෙහි සම්මත කර ඇති තැපැල් හැඳුනුම්පත භාවිතා කිරීමෙන් පළකිරීමේ අදහස් පූරණය කිරීමට භාවිතා කරයි. |
| CommentsPageAds | අදහස්වලට ඉහළින් දැන්වීම පූරණය කරයි. |
| | |
පැතිකඩ පිටුව | RedditorByName | පුරනය වී ඇති පරිශීලකයාගේ පැතිකඩ විස්තර පූරණය කරයි. |
| PostSetSettings | පූරණය කළ යුතු තනතුරු ගණන. |
| GetTopKarmaSubreddits | එක් එක් ප්රජාව මත කර්ම ලකුණු සහිත ඉහළම උපසිරසි ලැයිස්තුව ලබා ගන්න, මෙම API මඟින් එක් එක් උප-රෙඩිට් තුළ අපගේ ක්රියාකාරකම් වලින් අප කොපමණ අදහස් සහ පසු කර්ම උපයා තිබේද යන්න හෙළි කරයි. |
| UserProfileFeed | අදහස් සහ පළ කිරීම් අඩංගු පරිශීලක පැතිකඩ සඳහා සංග්රහය. |
| UserPublicTropies | පරිශීලක නාමයෙන් ඉපැයූ ජයග්රහණ සහ කුසලාන ලැයිස්තුව ප්රදර්ශනය කිරීමට හැඳුනුම්පත, නම සහ රූපය සමඟ ඉල්ලීමකදී සම්මත කර ඇත. |
| TippingProfileMigrate කරන ලදී | ඉඟි පැතිකඩ පිළිබඳ විස්තර, මෙම විශේෂාංගය වැඩිපුර භාවිතා කර නැත. එය මගේ පැතිකඩෙහි 0 ශේෂයක් පෙන්නුම් කළේය 😄. |
නිගමනය
මෙම ඉරා දැමීමේ අත්හදා බැලීම අවසානයේ මම කරුණු කිහිපයක් ඉදිරිපත් කිරීමට කැමැත්තෙමි.
- Reddit හි API ඉතා වේගවත් නොවේ, ඒ වෙනුවට වඩා හොඳ පරිශීලක අත්දැකීමක් ලබා දීමට පෙර පැටවීම භාවිතා කරයි.
- APIs වැඩ කිසිවිටෙක සම්පූර්ණ නොවේ, Reddit හි ඉංජිනේරුවාට පවා එය තව දුරටත් වැඩිදියුණු කිරීමට යම් වැඩ කොටසක් කිරීමට තිබේ.
- යෙදුම් සහ අත්හදා බැලීම් වින්යාසයන් දුරස්ථව තබා ගැනීමෙන් පරිශීලක අත්දැකීම මත හොඳ පාලනයක් ලබා දිය හැක.
- Requestly හි ඉංජිනේරුවන් සෑම GraphQL ඉල්ලීමක් සමඟම මෙහෙයුම් නාමය පෙන්වීමට විශිෂ්ට කාර්යයක් ඉටු කළ අතර, devs හි ජීවිතය වඩාත් පහසු කරයි.