{"id":122327,"date":"2024-02-01T11:43:27","date_gmt":"2024-02-01T11:43:27","guid":{"rendered":"https:\/\/wp-prod-new.adapty.io\/for-developers\/"},"modified":"2025-05-28T14:23:00","modified_gmt":"2025-05-28T14:23:00","slug":"for-developers","status":"publish","type":"page","link":"https:\/\/adapty.io\/ru\/for-developers\/","title":{"rendered":"For developers"},"content":{"rendered":"\n <\/p>\n","protected":false},"excerpt":{"rendered":" \u0421\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u044c\u0442\u0435\u0441\u044c \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 — \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435. \u041f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0441\u043a\u0443\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u043c.<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"page-builder":[],"page-type":[34],"class_list":["post-122327","page","type-page","status-publish","hentry","page-type-role"],"acf":[],"rankMath":{"parentDomain":"adapty.io","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":true,"featuredImageNotice":"\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 200 \u043d\u0430 200 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0433\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c Facebook \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0430\u0439\u0442\u044b \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439.","pluginReviewed":true,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"for-developers","permalinkFormat":"https:\/\/adapty.io\/ru\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/adapty.io\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445: \u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u043d\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432","description":"\u0421\u044d\u043a\u043e\u043d\u043e\u043c\u044c\u0442\u0435 \u0447\u0430\u0441\u044b \u043d\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 IAPs \u0438 \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c SDK, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 SDK \u0438 \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e\u0439 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439.","focusKeywords":"\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438,\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f,\u0440\u043e\u043b\u044c,\u043f\u043e\u043a\u0443\u043f\u043a\u0438","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"AdaptyTeam","primaryTerm":0,"authorName":"Vladimir Mihalevich","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":[],"diacritics":{"A":"[\\u0410\\u0430]","B":"[\\u0411\\u0431]","V":"[\\u0412\\u0432]","G":"[\\u0413\\u0433]","D":"[\\u0414\\u0434]","YE":"[\\u0415\\u0435]","YO":"[\\u0401\\u0451]","ZH":"[\\u0416\\u0436]","Z":"[\\u0417\\u0437]","EE":"[\\u0418\\u0438]","YI":"[\\u0419\\u0439]","K":"[\\u041A\\u043A]","L":"[\\u041B\\u043B]","M":"[\\u041C\\u043c]","P":"[\\u041F\\u043F]","T":"[\\u0422\\u0442]","U":"[\\u0423\\u0443]","F":"[\\u0424\\u0444]","H":"[\\u0425\\u0445]","TS":"[\\u0426\\u0446]","CH":"[\\u0427\\u0447]","SH":"[\\u0428\\u0448\\u0429\\u0449]","I":"[\\u042B\\u044B]","E":"[\\u042D\\u044D]","YU":"[\\u042E\\u044E]","YA":"[\\u042F\\u044F]","N":"[\\u041D\\u043D]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":true,"hasBreadcrumb":false},"homeUrl":"https:\/\/adapty.io\/ru\/","objectID":122327,"objectType":"post","locale":"ru","localeFull":"ru_RU","overlayImages":{"play":{"name":"Play \u0438\u043a\u043e\u043d\u043a\u0430","url":"https:\/\/adapty.io\/assets\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/var\/www\/html\/assets\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"GIF \u0438\u043a\u043e\u043d\u043a\u0430","url":"https:\/\/adapty.io\/assets\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/var\/www\/html\/assets\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/wp-prod-new.adapty.io\/assets\/uploads\/2024\/01\/opengraph-default-crop.webp","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fadapty.io%2Fru%2F&r=https%3A%2F%2Fadapty.io%2Fru%2Fwp-json%2Fwp%2Fv2%2Fpages%2F122327%3Fnonce%3D46f83de193&pro=1","maxTags":100,"trendsIcon":".activate()<\/summary>\n
\/\/ Your app's code<\/span><\/span>\r\nimport<\/span> Adapty<\/span><\/span>\r\n \r\nAdapty.<\/span>activate<\/span>(<\/span>\"<\/span>PUBLIC_SDK_KEY<\/span>\"<\/span>, <\/span>customerUserId<\/span>:<\/span> \"<\/span>YOUR_USER_ID<\/span>\"<\/span>)<\/span><\/span>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<\/code><\/pre>\r\nSwift<\/span>\r\n\r\n<\/div>\n<\/details>\n\n
.getPaywall()<\/summary>\n
\/\/ Use Locale.preferredLanguages to find out <\/span><\/span>\r\n\/\/ which languages the user prefers using<\/span><\/span>\r\nlet<\/span> locale <\/span>=<\/span> Locale.current.identifier<\/span><\/span>\r\n\r\nAdapty.<\/span>getPaywall<\/span>(<\/span>\"<\/span>YOUR_PAYWALL_ID<\/span>\"<\/span>, <\/span>locale<\/span>:<\/span> locale<\/span>)<\/span> {<\/span> result <\/span>in<\/span><\/span>\r\n switch<\/span> result <\/span>{<\/span><\/span>\r\n case<\/span> let<\/span> .<\/span>success<\/span>(<\/span>paywall<\/span>):<\/span><\/span>\r\n \/\/ the requested paywall<\/span><\/span>\r\n case<\/span> let<\/span> .<\/span>failure<\/span>(<\/span>error<\/span>):<\/span><\/span>\r\n \/\/ handle the error<\/span><\/span>\r\n }<\/span><\/span>\r\n}<\/span><\/span>\r\n\r\n\r\n\r\n\r\n<\/code><\/pre>\r\nSwift<\/span>\r\n\r\n<\/div>\n<\/details>\n\n
.makePurchase()<\/summary>\n
\/\/ Your app's code<\/span><\/span>\r\ndo<\/span> {<\/span><\/span>\r\n let<\/span> purchaseResult <\/span>=<\/span> try<\/span> await<\/span> Adapty.<\/span>makePurchase<\/span>(<\/span>product<\/span>:<\/span> product<\/span>)<\/span><\/span>\r\n\r\n switch<\/span> purchaseResult <\/span>{<\/span><\/span>\r\n case<\/span> .userCancelled<\/span>:<\/span><\/span>\r\n \/\/ handle the user cancelled purchase<\/span><\/span>\r\n case<\/span> .pending<\/span>:<\/span><\/span>\r\n \/\/ handle the pending purchase<\/span><\/span>\r\n case<\/span> let<\/span> .<\/span>success<\/span>(<\/span>profile, transaction<\/span>):<\/span><\/span>\r\n if<\/span> profile.accessLevels<\/span>[<\/span>\"<\/span>YOUR_ACCESS_LEVEL<\/span>\"<\/span>]?<\/span>.isActive <\/span>??<\/span> false<\/span> {<\/span><\/span>\r\n \/\/ successful purchase<\/span><\/span>\r\n }<\/span><\/span>\r\n }<\/span><\/span>\r\n}<\/span> catch<\/span> {<\/span><\/span>\r\n \/\/ handle the error<\/span><\/span>\r\n}<\/span><\/span><\/code><\/pre>\r\nSwift<\/span>\r\n\r\n<\/div>\n<\/details>\n\n
.getProfile()<\/summary>\n
\/\/ Your app's code<\/span><\/span>\r\nAdapty.<\/span>getProfile<\/span> {<\/span> result <\/span>in<\/span><\/span>\r\n if<\/span> let<\/span> profile <\/span>=<\/span> try<\/span>?<\/span> result.<\/span>get<\/span>()<\/span> {<\/span><\/span>\r\n \/\/ check the access<\/span><\/span>\r\n }<\/span><\/span>\r\n}<\/span><\/span>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<\/code><\/pre>\r\nSwift<\/span>\r\n\r\n<\/div>\n<\/details>\n\n
.restorePurchases()<\/summary>\n
\/\/ Your app's code<\/span><\/span>\r\ndo<\/span> {<\/span><\/span>\r\n let<\/span> profile <\/span>=<\/span> try<\/span> await<\/span> Adapty.<\/span>restorePurchases<\/span>()<\/span><\/span>\r\n if<\/span> profile.accessLevels<\/span>[<\/span>\"<\/span>YOUR_ACCESS_LEVEL<\/span>\"<\/span>]?<\/span>.isActive <\/span>??<\/span> false<\/span> {<\/span><\/span>\r\n \/\/ successful access restore<\/span><\/span>\r\n }<\/span><\/span>\r\n}<\/span> catch<\/span> {<\/span><\/span>\r\n \/\/ handle the error<\/span><\/span>\r\n}<\/span><\/span>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<\/code><\/pre>\r\nSwift<\/span>\r\n\r\n<\/div>\n<\/details>\n\n
HTML \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/summary>\n
<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#EEFFFF;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:1;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Your app's code\nimport Adapty\n \nAdapty.activate("PUBLIC_SDK_KEY", customerUserId: "YOUR_USER_ID")\n\" style=\"color:#EEFFFF;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-darker\" style=\"background-color: #212121\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ Your app's code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">import<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #FFCB6B\">Adapty<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line\"><span style=\"color: #EEFFFF\">Adapty.<\/span><span style=\"color: #82AAFF\">activate<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #C3E88D\">PUBLIC_SDK_KEY<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #EEFFFF\">, <\/span><span style=\"color: #82AAFF\">customerUserId<\/span><span style=\"color: #89DDFF\">:<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #C3E88D\">YOUR_USER_ID<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span><\/code><\/pre><\/div>\n\n\n\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#EEFFFF;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:1;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Use Locale.preferredLanguages to find out \n\/\/ which languages the user prefers using\nlet locale = Locale.current.identifier\n\nAdapty.getPaywall("YOUR_PAYWALL_ID", locale: locale) { result in\n switch result {\n case let .success(paywall):\n \/\/ the requested paywall\n case let .failure(error):\n \/\/ handle the error\n }\n}\n\" style=\"color:#EEFFFF;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-darker\" style=\"background-color: #212121\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ Use Locale.preferredLanguages to find out <\/span><\/span>\n<span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ which languages the user prefers using<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> locale <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #EEFFFF\"> Locale.current.identifier<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line\"><span style=\"color: #EEFFFF\">Adapty.<\/span><span style=\"color: #82AAFF\">getPaywall<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #C3E88D\">YOUR_PAYWALL_ID<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #EEFFFF\">, <\/span><span style=\"color: #82AAFF\">locale<\/span><span style=\"color: #89DDFF\">:<\/span><span style=\"color: #EEFFFF\"> locale<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><span style=\"color: #EEFFFF\"> result <\/span><span style=\"color: #89DDFF; font-style: italic\">in<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">switch<\/span><span style=\"color: #EEFFFF\"> result <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> .<\/span><span style=\"color: #82AAFF\">success<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #EEFFFF\">paywall<\/span><span style=\"color: #89DDFF\">):<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ the requested paywall<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> .<\/span><span style=\"color: #82AAFF\">failure<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #EEFFFF\">error<\/span><span style=\"color: #89DDFF\">):<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ handle the error<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#EEFFFF;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:1;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Your app's code\ndo {\n let purchaseResult = try await Adapty.makePurchase(product: product)\n\n switch purchaseResult {\n case .userCancelled:\n \/\/ handle the user cancelled purchase\n case .pending:\n \/\/ handle the pending purchase\n case let .success(profile, transaction):\n if profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false {\n \/\/ successful purchase\n }\n }\n} catch {\n \/\/ handle the error\n}\" style=\"color:#EEFFFF;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-darker\" style=\"background-color: #212121\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ Your app's code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">do<\/span><span style=\"color: #89DDFF\"> {<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> purchaseResult <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">try<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">await<\/span><span style=\"color: #EEFFFF\"> Adapty.<\/span><span style=\"color: #82AAFF\">makePurchase<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">product<\/span><span style=\"color: #89DDFF\">:<\/span><span style=\"color: #EEFFFF\"> product<\/span><span style=\"color: #89DDFF\">)<\/span><\/span>\n<span class=\"line tab tabs-2\"> <\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">switch<\/span><span style=\"color: #EEFFFF\"> purchaseResult <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #EEFFFF\"> .userCancelled<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ handle the user cancelled purchase<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #EEFFFF\"> .pending<\/span><span style=\"color: #89DDFF\">:<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ handle the pending purchase<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">case<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> .<\/span><span style=\"color: #82AAFF\">success<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #EEFFFF\">profile, transaction<\/span><span style=\"color: #89DDFF\">):<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #EEFFFF\"> profile.accessLevels<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #C3E88D\">YOUR_ACCESS_LEVEL<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #89DDFF\">]?<\/span><span style=\"color: #EEFFFF\">.isActive <\/span><span style=\"color: #89DDFF\">??<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #FF9CAC\">false<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-4\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ successful purchase<\/span><\/span>\n<span class=\"line tab tabs-3\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">catch<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ handle the error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#EEFFFF;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:1;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Your app's code\nAdapty.getProfile { result in\n if let profile = try? result.get() {\n \/\/ check the access\n }\n}\n\" style=\"color:#EEFFFF;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-darker\" style=\"background-color: #212121\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ Your app's code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #EEFFFF\">Adapty.<\/span><span style=\"color: #82AAFF\">getProfile<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><span style=\"color: #EEFFFF\"> result <\/span><span style=\"color: #89DDFF; font-style: italic\">in<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> profile <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">try<\/span><span style=\"color: #89DDFF\">?<\/span><span style=\"color: #EEFFFF\"> result.<\/span><span style=\"color: #82AAFF\">get<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ check the access<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span><\/code><\/pre><\/div>\n\n\n\n\n\n\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#EEFFFF;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:1;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Your app's code\ndo {\n let profile = try await Adapty.restorePurchases()\n if profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false {\n \/\/ successful access restore\n }\n} catch {\n \/\/ handle the error\n}\n\" style=\"color:#EEFFFF;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-darker\" style=\"background-color: #212121\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #545454; font-style: italic\">\/\/ Your app's code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">do<\/span><span style=\"color: #89DDFF\"> {<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #F78C6C\">let<\/span><span style=\"color: #EEFFFF\"> profile <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">try<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">await<\/span><span style=\"color: #EEFFFF\"> Adapty.<\/span><span style=\"color: #82AAFF\">restorePurchases<\/span><span style=\"color: #89DDFF\">()<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #EEFFFF\"> profile.accessLevels<\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #C3E88D\">YOUR_ACCESS_LEVEL<\/span><span style=\"color: #89DDFF\">"<\/span><span style=\"color: #89DDFF\">]?<\/span><span style=\"color: #EEFFFF\">.isActive <\/span><span style=\"color: #89DDFF\">??<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #FF9CAC\">false<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-2\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ successful access restore<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">catch<\/span><span style=\"color: #EEFFFF\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line tab tabs-1\"><span style=\"color: #89DDFF\"> <\/span><span style=\"color: #545454; font-style: italic\">\/\/ handle the error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span>\n<span class=\"line tab tabs-1\"> <\/span><\/code><\/pre><\/div>\n<\/code><\/pre>\n<\/details>\n\n