{"id":488444,"date":"2026-07-24T11:18:27","date_gmt":"2026-07-24T11:18:27","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488444"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488444","title":{"rendered":"\u041a\u0430\u043a \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SDK \u0432 React Native: \u0440\u0430\u0437\u0431\u043e\u0440 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 MyID"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043d\u043a\u0438\u043d\u0433, \u0444\u0438\u043d\u0442\u0435\u0445 \u0438\u043b\u0438 \u0433\u043e\u0441\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0443\u0437\u0431\u0435\u043a\u0441\u043a\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 MyID \u2014 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442 UZINFOCOM. \u041b\u0438\u0446\u043e \u0432 \u043a\u0430\u043c\u0435\u0440\u0443, liveness-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0441\u0432\u0435\u0440\u043a\u0430 \u0441 \u0433\u043e\u0441\u0431\u0430\u0437\u043e\u0439 \u2014 \u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0447\u0451\u0442\u0430 \u0433\u043e\u0442\u043e\u0432\u043e. MyID \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 SDK \u0434\u043b\u044f iOS \u0438 Android, \u0430 \u0432\u043e\u0442 React Native-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412 2024 \u0433\u043e\u0434\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b React Native-\u043c\u043e\u0441\u0442 \u0434\u043b\u044f MyID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u0438\u0445 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0422\u043e\u0442 \u043c\u043e\u0441\u0442 \u0431\u044b\u043b \u0434\u043b\u044f SDK \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u2014 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u043b: \u0432 3.x \u0441\u0442\u0430\u0440\u044b\u0439 \u0444\u043b\u043e\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0443\u0434\u0430\u043b\u0451\u043d \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u043b\u044e\u0441 Apple \u0437\u0430\u0432\u0451\u0437 privacy manifest, \u0430 Expo \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u2014 \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u0440\u043e \u00abMyID + React Native\u00bb, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f 3.x, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443, \u043a\u0430\u043a\u00a0<em>\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/em>\u00a0\u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 SDK \u0432 React Native \u0432 2026 \u0433\u043e\u0434\u0443: session flow \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442\u0440\u0438 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Expo config plugin \u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u0441\u0451 \u2014 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 MyID \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438<\/h3>\n<p>MyID \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 SDK \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043c\u0435\u0440\u0443, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 liveness-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 (\u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0436\u0438\u0432\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0430 \u043d\u0435 \u0444\u043e\u0442\u043e \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d), \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043d\u0438\u043c\u043e\u043a \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434 MyID, \u0433\u0434\u0435 \u043e\u043d \u0441\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0432\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/p>\n<p>\u0412\u0430\u0436\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u044d\u0442\u043e\u00a0<strong>\u0437\u0430\u043a\u0440\u044b\u0442\u0430\u044f, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f<\/strong>\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (<code>clientHash<\/code>,\u00a0<code>clientHashId<\/code>\u00a0\u0434\u043b\u044f SDK \u0438\u00a0<code>client_id<\/code>\/<code>client_secret<\/code>\u00a0\u0434\u043b\u044f API) \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b \u043f\u0440\u043e\u0434\u0430\u0436 MyID \u0431\u0430\u043d\u043a\u0430\u043c, \u0444\u0438\u043d\u0442\u0435\u0445\u0443, \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0443 \u0438 \u0433\u043e\u0441\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443. \u041d\u0438\u043a\u0430\u043a\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u044d\u0442\u043e\u0442 \u0431\u0430\u0440\u044c\u0435\u0440 \u043d\u0435 \u0443\u0431\u0435\u0440\u0451\u0442 \u2014 \u0438 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u0440\u0435\u0447\u044c \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0433\u0440\u0430\u0436\u0434\u0430\u043d. \u0427\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0443\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0431\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0443\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: SDK \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0<strong>\u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a<\/strong>. \u041f\u043e\u0434\u0441\u043f\u0435\u043a\u0430 iOS-\u043f\u043e\u0434\u0430 \u043f\u0440\u044f\u043c\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442\u00a0<code>license: Commercial<\/code>. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u0451\u0440\u0442\u043a\u0438: \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 SDK \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 npm-\u043f\u0430\u043a\u0435\u0442 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043a\u0430\u043a \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 (CocoaPods trunk \u0434\u043b\u044f iOS, Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MyID \u0434\u043b\u044f Android).<\/p>\n<h3>Session flow: \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 3.x<\/h3>\n<p>\u0414\u043e \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f SDK \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u043e \u0432 SDK\u00a0<code>clientId<\/code>\u00a0\u0438 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u044f\u043c\u043e \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0412 3.x \u044d\u0442\u043e\u0442 \u0444\u043b\u043e\u0443\u00a0<strong>\u0443\u0434\u0430\u043b\u0451\u043d \u0438\u0437 SDK \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/strong>\u00a0\u2014 \u0435\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u0433\u0434\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u043a\u043b\u0430\u0434\u0443\u0442\u00a0<code>passportData<\/code>, \u043e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 API, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u043b\u043e\u0443 \u2014 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439, \u0442\u0440\u0451\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 (\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 three-legged):<\/p>\n<pre><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435  \u2502      \u2502  \u0412\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434   \u2502      \u2502  MyID API   \u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502                    \u2502  POST \/api\/v1\/auth\/ \u2502       \u2502                    \u2502  clients\/access-token       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502                    \u2502   JWT (7 \u0434\u043d\u0435\u0439)      \u2502       \u2502  \u00ab\u0445\u043e\u0447\u0443 \u043f\u0440\u043e\u0439\u0442\u0438      \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502       \u2502   \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e\u00bb   \u2502                     \u2502       \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502  POST \/api\/v2\/sdk\/  \u2502       \u2502                    \u2502  sessions           \u2502       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502    session_id      \u2502  { session_id }     \u2502       \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502       \u2502                    \u2502                     \u2502       \u2502  identify(sessionId, clientHash, \u2026)      \u2502       \u2502  \u2190 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u043b\u043e\u0443: \u043a\u0430\u043c\u0435\u0440\u0430, liveness \u2192     \u2502       \u2502                    \u2502                     \u2502       \u2502  \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 code  \u2502                     \u2502       \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502  GET \/api\/v1\/sdk\/   \u2502       \u2502                    \u2502  data?code=\u2026        \u2502       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502   \u00ab\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d \u2713\u00bb  \u2502  \u043f\u0440\u043e\u0444\u0438\u043b\u044c,           \u2502       \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502  comparison_value   \u2502<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0443\u043c\u0435\u044e\u0442 \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><code>session_id<\/code>\u00a0\u2014 \u044d\u0442\u043e\u00a0<strong>UUID<\/strong>; \u0436\u0438\u0432\u0451\u0442 \u043e\u043a\u043e\u043b\u043e\u00a0<strong>10 \u043c\u0438\u043d\u0443\u0442<\/strong>\u00a0\u0438 \u0441\u0442\u0440\u043e\u0433\u043e\u00a0<strong>\u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439<\/strong>;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 SDK \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0436\u0438\u0432\u0451\u0442\u00a0<strong>5 \u043c\u0438\u043d\u0443\u0442<\/strong>;<\/p>\n<\/li>\n<li>\n<p>\u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0436\u0438\u0432\u0451\u0442 7 \u0434\u043d\u0435\u0439 (<code>expires_in: 604800<\/code>) \u2014 \u043a\u044d\u0448\u0438\u0440\u0443\u0439\u0442\u0435, \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e;<\/p>\n<\/li>\n<li>\n<p><code>client_secret<\/code>\u00a0<strong>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u0431\u044d\u043a\u0435\u043d\u0434<\/strong>. \u0412\u044b\u043f\u0443\u0441\u043a (\u043c\u0438\u043d\u0442\u0438\u043d\u0433) \u0441\u0435\u0441\u0441\u0438\u0439 \u2014 \u0441\u0442\u0440\u043e\u0433\u043e server-to-server.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0442\u0438\u043d\u0433 \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>\/\/ 1. \u0422\u043e\u043a\u0435\u043d (\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c \u043d\u0430 ~7 \u0434\u043d\u0435\u0439)const { access_token } = await fetch(`${MYID_HOST}\/api\/v1\/auth\/clients\/access-token`, {  method: 'POST',  headers: { 'Content-Type': 'application\/json' },  body: JSON.stringify({    client_id: process.env.MYID_CLIENT_ID,    client_secret: process.env.MYID_CLIENT_SECRET, \/\/ \u0442\u043e\u043b\u044c\u043a\u043e env \u0431\u044d\u043a\u0435\u043d\u0434\u0430!  }),}).then(r =&gt; r.json());\/\/ 2. \u0421\u0435\u0441\u0441\u0438\u044f \u2014 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0430\u044f, ~10 \u043c\u0438\u043d\u0443\u0442const { session_id } = await fetch(`${MYID_HOST}\/api\/v2\/sdk\/sessions`, {  method: 'POST',  headers: { Authorization: `Bearer ${access_token}`, 'Content-Type': 'application\/json' },  body: JSON.stringify({}), \/\/ \u043f\u0443\u0441\u0442\u043e\u0435 \u0442\u0435\u043b\u043e = SDK \u0441\u0430\u043c \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u044d\u043a\u0440\u0430\u043d \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445}).then(r =&gt; r.json());<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0432\u0441\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0437\u043e\u0432\u0443:<\/p>\n<pre><code>import { identify, isMyIdError } from '@softwhere-uz\/react-native-myid';const result = await identify({  sessionId,       \/\/ UUID \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u044d\u043a\u0435\u043d\u0434\u0430  clientHash,      \/\/ \u043e\u0442 \u043e\u0442\u0434\u0435\u043b\u0430 \u043f\u0440\u043e\u0434\u0430\u0436 MyID  clientHashId,  environment: 'SANDBOX',  \/\/ \u0438\u043b\u0438 'PRODUCTION'  locale: 'UZ',            \/\/ 'UZ' | 'RU' | 'EN'});\/\/ result.code \u2192 \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434 \u2192 GET \/api\/v1\/sdk\/data?code=\u2026<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e session flow:\u00a0<strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0435 \u0432\u0435\u0440\u044f\u0442<\/strong>.\u00a0<code>result.code<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u044f\u0432\u043a\u0430, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u044f\u043b \u043a\u043e\u0434 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u00a0<code>comparison_value<\/code>\u00a0\u043f\u0440\u043e\u0442\u0438\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430.<\/p>\n<h3>\u0422\u0440\u0438 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438<\/h3>\n<p>\u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u044f \u043f\u0438\u0448\u0443 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430 Android \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0447\u0442\u0438 \u0441\u043a\u0443\u0447\u043d\u0430\u044f: \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u00a0<code>CAMERA<\/code>\/<code>INTERNET<\/code>\u00a0\u2014 \u0432\u0441\u0451. \u041d\u0430 iOS \u0436\u0435 MyID (\u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u0441\u043a\u0438\u0435 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 SDK) \u0441\u043e\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043a\u0443\u0434\u0430 \u043d\u0438 \u0441\u0442\u0443\u043f\u0438 \u2014 \u0433\u0440\u0430\u0431\u043b\u0438.<\/p>\n<h4>\u0413\u0440\u0430\u0431\u043b\u044f \u21161: \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e<\/h4>\n<p><code>MyIdSDK.xcframework<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 Swift-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438\u00a0<strong>\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/strong>:<\/p>\n<pre><code class=\"ruby\">use_frameworks! :linkage =&gt; :static<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u2014 \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0430\u0448 Podfile \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u0441\u0440\u0430\u0437\u0443, \u0438 \u0435\u0441\u043b\u0438 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Firebase \u2014 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u043e non-modular headers. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u043e\u043c\u00a0<code>CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES<\/code>\u00a0\u0432\u00a0<code>post_install<\/code>; \u0432 \u043e\u0431\u0451\u0440\u0442\u043a\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u043f\u00a0<code>firebaseWorkaround<\/code>, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0431\u0435\u0437 Firebase.<\/p>\n<h4>\u0413\u0440\u0430\u0431\u043b\u044f \u21162: privacy manifest, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Apple \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442<\/h4>\n<p>\u0421 2024 \u0433\u043e\u0434\u0430 Apple \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u00abrequired reason API\u00bb \u0432\u00a0<code>PrivacyInfo.xcprivacy<\/code>. MyID SDK \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0433\u043e xcframework \u0438\u043c\u0435\u0435\u0442. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e?<\/p>\n<p>\u041d\u0435\u0442.\u00a0<strong>\u041f\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0435 Apple \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0430<\/strong>\u00a0\u2014 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043d\u0438 \u043e\u0434\u0438\u043d \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e MyID, \u0438 \u044d\u0442\u043e \u0433\u0440\u0430\u0431\u043b\u044f \u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c: \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043d\u0430 \u0440\u0435\u0432\u044c\u044e \u0432 App Store.<\/p>\n<p>\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438, \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 (\u043d\u0435 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u2014 \u043a\u043e\u0434\u044b \u043f\u0440\u0438\u0447\u0438\u043d \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e):<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f API<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u043e\u0434 \u043f\u0440\u0438\u0447\u0438\u043d\u044b<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NSPrivacyAccessedAPICategoryFileTimestamp<\/p>\n<\/td>\n<td>\n<p align=\"left\">0A2A.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NSPrivacyAccessedAPICategorySystemBootTime<\/p>\n<\/td>\n<td>\n<p align=\"left\">35F9.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NSPrivacyAccessedAPICategoryDiskSpace<\/p>\n<\/td>\n<td>\n<p align=\"left\">85F4.1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">NSPrivacyAccessedAPICategoryUserDefaults<\/p>\n<\/td>\n<td>\n<p align=\"left\">CA92.1<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u0413\u0440\u0430\u0431\u043b\u044f \u21163: \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430\u044f, \u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f<\/h4>\n<p><code>NSCameraUsageDescription<\/code>\u00a0\u0432 Info.plist. \u0411\u0435\u0437 \u043d\u0435\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u0430 \u0431\u0438\u043b\u0434 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 App Store Connect. \u041c\u0438\u043a\u0440\u043e\u0444\u043e\u043d, \u043a\u0441\u0442\u0430\u0442\u0438,\u00a0<strong>\u043d\u0435 \u043d\u0443\u0436\u0435\u043d<\/strong>\u00a0\u2014 liveness \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 SDK \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0437\u0440\u044f \u043f\u0443\u0433\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 Expo config plugin<\/h3>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0443\u0442 \u0432\u0435\u0447\u043d\u0430\u044f \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430: \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Expo\u00bb\u00a0<strong>\u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Expo Go<\/strong>. \u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 Expo Go \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u0420\u0435\u0447\u044c \u043f\u0440\u043e Continuous Native Generation: \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439\u00a0<code>npx expo prebuild<\/code>, \u0430 config plugin \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0432\u043d\u043e\u0441\u0438\u0442 \u0432 \u043d\u0438\u0445 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043a\u0430\u043a dev-\u0431\u0438\u043b\u0434 \u0438\u043b\u0438 EAS-\u0431\u0438\u043b\u0434.<\/p>\n<p>Config plugin \u2014 \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430\u0431\u043e\u0440 \u0447\u0438\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439-\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u0414\u043b\u044f MyID \u043d\u0443\u0436\u043d\u043e \u0448\u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 (\u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 + \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 Android) \u2014 \u0432\u043e\u0442 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435:<\/p>\n<pre><code>\/\/ 1. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u2014 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0432 Podfile.properties.jsonconfig = withPodfileProperties(config, (mod) =&gt; {  mod.modResults['ios.useFrameworks'] = 'static';  return mod;});\/\/ 2. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b (+ \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d)config = withInfoPlist(config, (mod) =&gt; {  mod.modResults.NSCameraUsageDescription =    props.cameraPermission ?? DEFAULT_CAMERA_PERMISSION;  return mod;});\/\/ 3. Privacy manifest: \u043c\u0435\u0440\u0434\u0436\u0438\u043c required-reason API \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044fconfig.ios.privacyManifests = {  ...manifests,  NSPrivacyAccessedAPITypes: mergePrivacyAccessedApiTypes(existing),};\/\/ 4. Android: Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MyID \u0432 allprojects.repositories\/\/    (\u0442\u043e\u043b\u044c\u043a\u043e groovy: kts-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438)config = withProjectBuildGradle(config, (mod) =&gt; {  mod.modResults.contents = addMavenRepository(mod.modResults.contents, url);  return mod;});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c:<\/p>\n<p><strong>\u0418\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c.<\/strong>\u00a0<code>prebuild<\/code>\u00a0\u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e (\u0438 \u0441\u00a0<code>--clean<\/code>, \u0438 \u0431\u0435\u0437), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u043b\u0438 \u043e\u043d\u0430 \u0443\u0436\u0435 \u2014 \u0438\u043d\u0430\u0447\u0435 Podfile \u043e\u0431\u0440\u0430\u0441\u0442\u0451\u0442 \u0434\u0443\u0431\u043b\u044f\u043c\u0438. \u041c\u0430\u0440\u043a\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431.<\/p>\n<p><strong>\u041c\u0435\u0440\u0434\u0436, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c.<\/strong>\u00a0Privacy manifest \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 SDK. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u0435\u0440\u0434\u0436\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0438 \u043a\u043e\u0434\u044b \u043f\u0440\u0438\u0447\u0438\u043d, \u0430 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u2014 \u0438\u043d\u0430\u0447\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u043b\u0447\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0<code>app.json<\/code>:<\/p>\n<pre><code class=\"json\">{  \"expo\": {    \"plugins\": [      [\"@softwhere-uz\/react-native-myid\",        { \"cameraPermission\": \"\u041a\u0430\u043c\u0435\u0440\u0430 \u043d\u0443\u0436\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 MyID.\" }]    ]  }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>Bare React Native: \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c \u043e\u0442 Xcode 26<\/h3>\n<p>\u041e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 Expo Modules API, \u0430 \u043e\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u0438 \u0432 bare-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u2014 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c Expo Modules:<\/p>\n<pre><code>npm install @softwhere-uz\/react-native-myidnpx install-expo-modules@latest<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0443\u043a\u0430\u043c\u0438 \u0442\u043e, \u0447\u0442\u043e \u0432 Expo \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d:\u00a0<code>use_frameworks! :linkage =&gt; :static<\/code>\u00a0\u0432 Podfile (\u0441\u0430\u043c \u043f\u043e\u0434 MyIdSDK \u043f\u0440\u0438\u0435\u0434\u0435\u0442 \u0438\u0437 CocoaPods \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u043e\u043d \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0441\u043f\u0435\u043a\u0438),\u00a0<code>NSCameraUsageDescription<\/code>, \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 privacy manifest, Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 root build.gradle.<\/p>\n<p>\u0421\u044e\u0440\u043f\u0440\u0438\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043f\u043e\u0439\u043c\u0430\u043b \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 Xcode 26: \u043a\u043e\u0434\u043c\u043e\u0434\u00a0<code>install-expo-modules<\/code>\u00a0\u043f\u0438\u0448\u0435\u0442 \u0432 AppDelegate.swift \u043e\u0431\u044b\u0447\u043d\u044b\u0439\u00a0<code>import Expo<\/code>, \u0438 \u043f\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439:<\/p>\n<pre><code>ambiguous implicit access level for import of 'Expo';it is imported as 'internal' elsewhere<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u0435\u0436\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b Swift \u043f\u0440\u043e access-level imports. \u041b\u0435\u0447\u0435\u043d\u0438\u0435 \u2014 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430:<\/p>\n<pre><code class=\"swift\">internal import Expo<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0414\u0438\u0437\u0430\u0439\u043d \u043c\u043e\u0441\u0442\u0430: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0435\u0434\u0436\u0435\u043a\u0442\u0438\u0442<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u0430\u044f, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c \u2014 \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u00ab\u043c\u043e\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0434\u0435\u043c\u043e\u00bb \u043e\u0442 \u00ab\u043c\u043e\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043f\u0440\u043e\u0434\u0435\u00bb.<\/p>\n<p>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 SDK \u043e\u0431\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043b\u0431\u044d\u043a\u0430\u043c\u0438 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430:\u00a0<code>onSuccess(result)<\/code>,\u00a0<code>onError(exception)<\/code>,\u00a0<code>onUserExited()<\/code>. \u041d\u0430\u0438\u0432\u043d\u044b\u0439 \u043c\u043e\u0441\u0442 \u043c\u0430\u043f\u043f\u0438\u0442 \u0438\u0445 \u043d\u0430 promise \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u043e: success \u2192 resolve, \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2192 reject \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439. \u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0437\u0430\u0440\u044b\u0442\u044b \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f:\u00a0<strong>\u043e\u0442\u043c\u0435\u043d\u0430 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430<\/strong>. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0437\u0430\u043a\u0440\u044b\u0432\u0448\u0438\u0439 \u044d\u043a\u0440\u0430\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434 \u0432\u043e\u0440\u043e\u043d\u043a\u0438 \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433\u0430. \u0415\u0441\u043b\u0438 \u043c\u043e\u0441\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 generic exception, \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u0441\u043b\u0435\u043f\u043d\u0435\u0442, \u0430 \u0432 Sentry \u0441\u044b\u043f\u0435\u0442\u0441\u044f \u043c\u0443\u0441\u043e\u0440.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f: \u043f\u0440\u0438 reject \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0441\u0442\u00a0<strong>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0443<\/strong>. \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 SDK, \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0444\u043b\u0430\u0433 \u00ab\u044d\u0442\u043e \u043e\u0442\u043c\u0435\u043d\u0430\u00bb \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 message, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u043d\u0430 JS-\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0430\u0440\u0441\u044f\u0442 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438. \u0412\u0438\u0434\u0435\u043b \u0442\u0430\u043a\u043e\u0435 \u0432 \u043f\u0440\u043e\u0434\u0435 \u043d\u0435 \u0440\u0430\u0437.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044f \u043f\u0440\u0438\u0448\u0451\u043b: \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439\u00a0<strong>\u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442<\/strong>\u00a0\u043f\u0440\u043e\u043c\u0438\u0441 \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0441 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u043d\u0442\u043e\u043c, \u0430 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u0441\u0445\u043e\u0434\u043e\u0432 \u0434\u0435\u043b\u0430\u0435\u0442 JS-\u043e\u0431\u0451\u0440\u0442\u043a\u0430:<\/p>\n<pre><code>\/\/ \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b (\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442):type NativeOutcome =  | { status: 'success'; code: string; base64Image?: string; comparison?: number }  | { status: 'cancelled' }  | { status: 'error';      kind: 'permission' | 'network' | 'sdk' | 'no_activity' | 'unknown';      code?: number; message?: string };\/\/ \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API (JS-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442):try {  const result = await identify(config);} catch (e) {  if (isMyIdError(e)) {    switch (e.kind) {      case 'cancelled':  return;                    \/\/ \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430!      case 'permission': return askCameraAccess();  \/\/ \u043a\u043e\u0434 102      case 'network':    return showRetry();      default:           return report(e.kind, e.code, e.nativeMessage);    }  }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043a\u043e\u0434 \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u043c\u043e\u0441\u0442 \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u043c\u0438, \u043e\u0442\u043c\u0435\u043d\u0430 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 first-class \u0438\u0441\u0445\u043e\u0434, \u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u2014 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u043d\u0442\u043e\u043c\u00a0<code>kind<\/code>.<\/p>\n<p>\u0418\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u2014 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0451\u0440\u0442\u043a\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b. \u0421\u043d\u0438\u043c\u043e\u043a \u043b\u0438\u0446\u0430 iOS-SDK \u043e\u0442\u0434\u0430\u0451\u0442 \u043a\u0430\u043a JPEG, Android \u2014 \u043a\u0430\u043a PNG; \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043a PNG base64 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u041f\u043e\u043b\u0435\u00a0<code>comparison<\/code>\u00a0\u043d\u0430 iOS 3.1.3 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0432\u0441\u0435 \u2014 \u0432 \u0442\u0438\u043f\u0430\u0445 \u043e\u043d\u043e \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u0438 \u044d\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u043e.<\/p>\n<h3>\u041e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435<\/h3>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043a\u043e\u0434\u043e\u0432 MyID \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u0434\u0432\u0430 \u043a\u043e\u0434\u0430 \u0432\u044b \u0432\u044b\u0443\u0447\u0438\u0442\u0435 \u0438 \u0431\u0435\u0437 \u043d\u0435\u0451. \u041e\u0431\u0430 \u2014 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 SANDBOX:<\/p>\n<pre><code>kind=sdk  code=103  \"Input should be a valid UUID, invalid character\u2026\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0430\u0448\u00a0<code>sessionId<\/code>\u00a0\u2014 \u043d\u0435 UUID. \u0421\u0435\u0441\u0441\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u043c\u0438\u043d\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 API, \u0430 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c.<\/p>\n<pre><code>kind=sdk  code=103  \"Session is expired\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0435\u0441\u0441\u0438\u044f \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 (\u043e\u043d\u0438 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0435), \u0441\u0442\u0430\u0440\u0448\u0435 10 \u043c\u0438\u043d\u0443\u0442 \u2014 \u0438\u043b\u0438 \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. Sandbox-\u0441\u0435\u0441\u0441\u0438\u044f \u0441 production-\u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c (\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442) \u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043e\u0431\u0430 \u0441\u043b\u0443\u0447\u0430\u044f \u2014\u00a0<code>103<\/code>. \u042d\u0442\u043e \u00ab\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 MyID, \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u2014 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0441\u0442 \u043e\u0431\u044f\u0437\u0430\u043d \u0434\u043e\u043d\u043e\u0441\u0438\u0442\u044c\u00a0<code>nativeMessage<\/code>\u00a0\u0434\u043e JS \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e, \u0430 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c.<\/p>\n<p>\u0415\u0449\u0451 \u0442\u0440\u0438 \u043a\u043e\u0434\u0430, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435:\u00a0<code>101<\/code>\u00a0\u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 SDK,\u00a0<code>102<\/code>\u00a0\u2014 \u043e\u0442\u043a\u0430\u0437 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043a\u0430\u043c\u0435\u0440\u0435 (\u0432 \u043e\u0431\u0451\u0440\u0442\u043a\u0435 \u043c\u0430\u043f\u043f\u0438\u0442\u0441\u044f \u0432\u00a0<code>kind: 'permission'<\/code>), \u0438\u00a0<code>122<\/code>\u00a0\u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0431\u0430\u043d\u0435\u043d, \u043f\u0440\u0438\u0447\u0451\u043c SDK \u043e\u0442\u0434\u0430\u0451\u0442 TTL \u0431\u0430\u043d\u0430.<\/p>\n<p>\u0418 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442:\u00a0<strong>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 root\/\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0432 SDK \u043d\u0435\u0442 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0433\u0440\u043e\u0437 \u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0430\u043c\u0438.<\/p>\n<h3>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0431\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430: \u043c\u043e\u043a-\u0440\u0435\u0436\u0438\u043c<\/h3>\n<p>\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 MyID \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443, \u0438 \u0436\u0434\u0430\u0442\u044c \u0438\u0445, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443, \u2014 \u0440\u0430\u0441\u0442\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e. \u041f\u043b\u044e\u0441 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 liveness (\u043d\u0435\u0442 \u043a\u0430\u043c\u0435\u0440\u044b). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u043c\u043e\u043a-\u0440\u0435\u0436\u0438\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u043e\u043e\u0431\u0449\u0435:<\/p>\n<pre><code>import { setMockMode } from '@softwhere-uz\/react-native-myid';setMockMode({ outcome: 'success', delayMs: 800 }); \/\/ \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 + \u0441\u043d\u0438\u043c\u043e\u043asetMockMode({ outcome: 'cancelled' });             \/\/ \u043e\u0442\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043csetMockMode({ outcome: 'sdk', code: 103 });        \/\/ \u043e\u0448\u0438\u0431\u043a\u0430 SDKsetMockMode(null);                                  \/\/ \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 SDK<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u044f \u0432\u043e\u0440\u043e\u043d\u043a\u0430 \u2014 \u0443\u0441\u043f\u0435\u0445, \u043e\u0442\u043c\u0435\u043d\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u0430\u0445 \u0438 \u043d\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435<\/h3>\n<p>\u0421\u043b\u043e\u0432\u0430 \u00abworks on my machine\u00bb \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0432\u043e\u0434\u0438\u0442 \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, \u0441\u0442\u043e\u044f\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a: \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 iPhone, \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 Expo dev-\u0431\u0438\u043b\u0434 (config plugin \u2192 prebuild) \u0438 bare React Native 0.86, \u0433\u0434\u0435 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u0437\u00a0<strong>\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e npm-\u0442\u0430\u0440\u0431\u043e\u043b\u043b\u0430<\/strong>\u00a0(\u044d\u0442\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c packaging).<\/p>\n<p>\u0412 \u043e\u0431\u043e\u0438\u0445: \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u0432\u0441\u0435 \u043c\u043e\u043a-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u2014 \u0438 \u0436\u0438\u0432\u043e\u0439 \u0432\u044b\u0437\u043e\u0432\u00a0<code>MyIdClient.start<\/code>\u00a0\u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043f\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0443, \u043d\u043e \u043d\u0435 \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c UUID. SDK \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u0445\u043e\u0434\u0438\u043b \u043d\u0430 SANDBOX-\u0431\u044d\u043a\u0435\u043d\u0434 MyID \u0438 \u0432\u0435\u0440\u043d\u0443\u043b \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443\u00a0<code>Session is expired<\/code>\u00a0\u2014 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443 \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u0431\u044d\u043a\u0435\u043d\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0431\u0435\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0440\u043e\u0439\u0442\u0438 \u043d\u0435\u043b\u044c\u0437\u044f: \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u043a\u0430\u043c\u0435\u0440\u0430 \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0435\u0441\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u044d\u043a\u0435\u043d\u0434 MyID \u043f\u0440\u0438\u0437\u043d\u0430\u043b.<\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u043f\u044b\u0442 \u0434\u043e \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u0430 \u00ab\u043a\u0430\u043a \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u043d\u0434\u043e\u0440\u0441\u043a\u0438\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 SDK \u0432 React Native\u00bb:<\/p>\n<ol>\n<li>\n<p><strong>\u0418\u0437\u0443\u0447\u0438\u0442\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043b\u043e\u0443, \u0430 \u043d\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b.<\/strong>\u00a0\u0423 MyID \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 API \u2014 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435 \u0431\u0430\u043d\u0434\u043b\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438.<\/strong>\u00a0\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0438\u0441\u0442\u044b\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0430 iOS \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0431\u043e\u0440\u043a\u0443.<\/strong>\u00a0Static frameworks + privacy manifest \u2014 \u0433\u0440\u0430\u0431\u043b\u044f \u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u0440\u0435\u0432\u044c\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442 \u043f\u0440\u043e\u043c\u0438\u0441, JS \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044b.<\/strong>\u00a0\u041e\u0442\u043c\u0435\u043d\u0430 \u2014 first-class, \u043a\u043e\u0434\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u043c\u043e\u0441\u0442 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u043a-\u0440\u0435\u0436\u0438\u043c \u2014 \u043d\u0435 \u0440\u043e\u0441\u043a\u043e\u0448\u044c.<\/strong>\u00a0\u0414\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 SDK \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438\u0437 \u0442\u0430\u0440\u0431\u043e\u043b\u043b\u0430.<\/strong>\u00a0\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0437\u0430\u0432\u0435\u0434\u0451\u0442 \u043a\u0430\u043c\u0435\u0440\u0443, \u0430 source-linked \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u043b\u043e\u0432\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 packaging.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u0434, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u0442\u0440\u0435\u043a\u0435\u0440 \u2014 \u043d\u0430 GitHub:\u00a0<a href=\"https:\/\/github.com\/softwhere-uz\/react-native-myid\" rel=\"noopener noreferrer nofollow\">github.com\/softwhere-uz\/react-native-myid<\/a>. \u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a: \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439, \u0441 MyID\/UZINFOCOM \u043d\u0435 \u0430\u0444\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d; \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043f\u0440\u043e\u0434\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u0441 MyID.<\/p>\n<p>\u0414\u0432\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043a \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 MyID (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 eKYC) \u0432 React Native \u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435, \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043c\u0438\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0418 \u0448\u0438\u0440\u0435: \u043a\u0430\u043a \u0432\u044b \u0440\u0435\u0448\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 privacy manifest \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 SDK \u2014 \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432 CI \u0438\u043b\u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043b\u0443\u0447\u0448\u0435?<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1062676\/\">https:\/\/habr.com\/ru\/articles\/1062676\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043d\u043a\u0438\u043d\u0433, \u0444\u0438\u043d\u0442\u0435\u0445 \u0438\u043b\u0438 \u0433\u043e\u0441\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0443\u0437\u0431\u0435\u043a\u0441\u043a\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0435\u0441\u044c \u0441 MyID \u2014 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0442 UZINFOCOM. \u041b\u0438\u0446\u043e \u0432 \u043a\u0430\u043c\u0435\u0440\u0443, liveness-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0441\u0432\u0435\u0440\u043a\u0430 \u0441 \u0433\u043e\u0441\u0431\u0430\u0437\u043e\u0439 \u2014 \u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0447\u0451\u0442\u0430 \u0433\u043e\u0442\u043e\u0432\u043e. MyID \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 SDK \u0434\u043b\u044f iOS \u0438 Android, \u0430 \u0432\u043e\u0442 React Native-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.\u0412 2024 \u0433\u043e\u0434\u0443 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b React Native-\u043c\u043e\u0441\u0442 \u0434\u043b\u044f MyID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u0438\u0445 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0422\u043e\u0442 \u043c\u043e\u0441\u0442 \u0431\u044b\u043b \u0434\u043b\u044f SDK \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u2014 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u043b: \u0432 3.x \u0441\u0442\u0430\u0440\u044b\u0439 \u0444\u043b\u043e\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0443\u0434\u0430\u043b\u0451\u043d \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u043b\u044e\u0441 Apple \u0437\u0430\u0432\u0451\u0437 privacy manifest, \u0430 Expo \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u2014 \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u0440\u043e \u00abMyID + React Native\u00bb, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f 3.x, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e.\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443, \u043a\u0430\u043a\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00a0\u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 SDK \u0432 React Native \u0432 2026 \u0433\u043e\u0434\u0443: session flow \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442\u0440\u0438 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Expo config plugin \u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u0441\u0451 \u2014 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435.\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 MyID \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438MyID \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 SDK \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043c\u0435\u0440\u0443, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 liveness-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 (\u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u0436\u0438\u0432\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0430 \u043d\u0435 \u0444\u043e\u0442\u043e \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d), \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043d\u0438\u043c\u043e\u043a \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434 MyID, \u0433\u0434\u0435 \u043e\u043d \u0441\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0432\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.\u0412\u0430\u0436\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u044d\u0442\u043e\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u0430\u044f, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (clientHash,\u00a0clientHashId\u00a0\u0434\u043b\u044f SDK \u0438\u00a0client_id\/client_secret\u00a0\u0434\u043b\u044f API) \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b \u043f\u0440\u043e\u0434\u0430\u0436 MyID \u0431\u0430\u043d\u043a\u0430\u043c, \u0444\u0438\u043d\u0442\u0435\u0445\u0443, \u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0443 \u0438 \u0433\u043e\u0441\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443. \u041d\u0438\u043a\u0430\u043a\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u044d\u0442\u043e\u0442 \u0431\u0430\u0440\u044c\u0435\u0440 \u043d\u0435 \u0443\u0431\u0435\u0440\u0451\u0442 \u2014 \u0438 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u0440\u0435\u0447\u044c \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0433\u0440\u0430\u0436\u0434\u0430\u043d. \u0427\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0443\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0431\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0443\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043d\u043e\u0433\u043e.\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: SDK \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a. \u041f\u043e\u0434\u0441\u043f\u0435\u043a\u0430 iOS-\u043f\u043e\u0434\u0430 \u043f\u0440\u044f\u043c\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u0435\u0442\u00a0license: Commercial. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u0451\u0440\u0442\u043a\u0438: \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 SDK \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 npm-\u043f\u0430\u043a\u0435\u0442 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043a\u0430\u043a \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 (CocoaPods trunk \u0434\u043b\u044f iOS, Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MyID \u0434\u043b\u044f Android).Session flow: \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 3.x\u0414\u043e \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f SDK \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u043e \u0432 SDK\u00a0clientId\u00a0\u0438 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u044f\u043c\u043e \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0412 3.x \u044d\u0442\u043e\u0442 \u0444\u043b\u043e\u0443\u00a0\u0443\u0434\u0430\u043b\u0451\u043d \u0438\u0437 SDK \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e\u00a0\u2014 \u0435\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u0433\u0434\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u043a\u043b\u0430\u0434\u0443\u0442\u00a0passportData, \u043e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 API, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u043b\u043e\u0443 \u2014 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439, \u0442\u0440\u0451\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 (\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 three-legged):\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510      \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435  \u2502      \u2502  \u0412\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434   \u2502      \u2502  MyID API   \u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518      \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518       \u2502                    \u2502  POST \/api\/v1\/auth\/ \u2502       \u2502                    \u2502  clients\/access-token       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502                    \u2502   JWT (7 \u0434\u043d\u0435\u0439)      \u2502       \u2502  \u00ab\u0445\u043e\u0447\u0443 \u043f\u0440\u043e\u0439\u0442\u0438      \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502       \u2502   \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e\u00bb   \u2502                     \u2502       \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502  POST \/api\/v2\/sdk\/  \u2502       \u2502                    \u2502  sessions           \u2502       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502    session_id      \u2502  { session_id }     \u2502       \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502       \u2502                    \u2502                     \u2502       \u2502  identify(sessionId, clientHash, \u2026)      \u2502       \u2502  \u2190 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u043b\u043e\u0443: \u043a\u0430\u043c\u0435\u0440\u0430, liveness \u2192     \u2502       \u2502                    \u2502                     \u2502       \u2502  \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 code  \u2502                     \u2502       \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502  GET \/api\/v1\/sdk\/   \u2502       \u2502                    \u2502  data?code=\u2026        \u2502       \u2502                    \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&gt;\u2502       \u2502   \u00ab\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d \u2713\u00bb  \u2502  \u043f\u0440\u043e\u0444\u0438\u043b\u044c,           \u2502       \u2502&lt;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502  comparison_value   \u2502\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0443\u043c\u0435\u044e\u0442 \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c:session_id\u00a0\u2014 \u044d\u0442\u043e\u00a0UUID; \u0436\u0438\u0432\u0451\u0442 \u043e\u043a\u043e\u043b\u043e\u00a010 \u043c\u0438\u043d\u0443\u0442\u00a0\u0438 \u0441\u0442\u0440\u043e\u0433\u043e\u00a0\u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439;\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 SDK \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0436\u0438\u0432\u0451\u0442\u00a05 \u043c\u0438\u043d\u0443\u0442;\u0442\u043e\u043a\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0436\u0438\u0432\u0451\u0442 7 \u0434\u043d\u0435\u0439 (expires_in: 604800) \u2014 \u043a\u044d\u0448\u0438\u0440\u0443\u0439\u0442\u0435, \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e;client_secret\u00a0\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u0431\u044d\u043a\u0435\u043d\u0434. \u0412\u044b\u043f\u0443\u0441\u043a (\u043c\u0438\u043d\u0442\u0438\u043d\u0433) \u0441\u0435\u0441\u0441\u0438\u0439 \u2014 \u0441\u0442\u0440\u043e\u0433\u043e server-to-server.\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0442\u0438\u043d\u0433 \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:\/\/ 1. \u0422\u043e\u043a\u0435\u043d (\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c \u043d\u0430 ~7 \u0434\u043d\u0435\u0439)const { access_token } = await fetch(`${MYID_HOST}\/api\/v1\/auth\/clients\/access-token`, {  method: &#8216;POST&#8217;,  headers: { &#8216;Content-Type&#8217;: &#8216;application\/json&#8217; },  body: JSON.stringify({    client_id: process.env.MYID_CLIENT_ID,    client_secret: process.env.MYID_CLIENT_SECRET, \/\/ \u0442\u043e\u043b\u044c\u043a\u043e env \u0431\u044d\u043a\u0435\u043d\u0434\u0430!  }),}).then(r =&gt; r.json());\/\/ 2. \u0421\u0435\u0441\u0441\u0438\u044f \u2014 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0430\u044f, ~10 \u043c\u0438\u043d\u0443\u0442const { session_id } = await fetch(`${MYID_HOST}\/api\/v2\/sdk\/sessions`, {  method: &#8216;POST&#8217;,  headers: { Authorization: `Bearer ${access_token}`, &#8216;Content-Type&#8217;: &#8216;application\/json&#8217; },  body: JSON.stringify({}), \/\/ \u043f\u0443\u0441\u0442\u043e\u0435 \u0442\u0435\u043b\u043e = SDK \u0441\u0430\u043c \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u044d\u043a\u0440\u0430\u043d \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445}).then(r =&gt; r.json());\u0410 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0432\u0441\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0437\u043e\u0432\u0443:import { identify, isMyIdError } from &#8216;@softwhere-uz\/react-native-myid&#8217;;const result = await identify({  sessionId,       \/\/ UUID \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u044d\u043a\u0435\u043d\u0434\u0430  clientHash,      \/\/ \u043e\u0442 \u043e\u0442\u0434\u0435\u043b\u0430 \u043f\u0440\u043e\u0434\u0430\u0436 MyID  clientHashId,  environment: &#8216;SANDBOX&#8217;,  \/\/ \u0438\u043b\u0438 &#8216;PRODUCTION&#8217;  locale: &#8216;UZ&#8217;,            \/\/ &#8216;UZ&#8217; | &#8216;RU&#8217; | &#8216;EN&#8217;});\/\/ result.code \u2192 \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434 \u2192 GET \/api\/v1\/sdk\/data?code=\u2026\u0418 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e session flow:\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0435 \u0432\u0435\u0440\u044f\u0442.\u00a0result.code\u00a0\u2014 \u044d\u0442\u043e \u0437\u0430\u044f\u0432\u043a\u0430, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448 \u0431\u044d\u043a\u0435\u043d\u0434 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u044f\u043b \u043a\u043e\u0434 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u00a0comparison_value\u00a0\u043f\u0440\u043e\u0442\u0438\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430.\u0422\u0440\u0438 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438\u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u044f \u043f\u0438\u0448\u0443 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430 Android \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0447\u0442\u0438 \u0441\u043a\u0443\u0447\u043d\u0430\u044f: \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u00a0CAMERA\/INTERNET\u00a0\u2014 \u0432\u0441\u0451. \u041d\u0430 iOS \u0436\u0435 MyID (\u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u0441\u043a\u0438\u0435 \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 SDK) \u0441\u043e\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043a\u0443\u0434\u0430 \u043d\u0438 \u0441\u0442\u0443\u043f\u0438 \u2014 \u0433\u0440\u0430\u0431\u043b\u0438.\u0413\u0440\u0430\u0431\u043b\u044f \u21161: \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043eMyIdSDK.xcframework\u00a0\u2014 \u044d\u0442\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 Swift-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438\u00a0\u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:use_frameworks! :linkage =&gt; :static\u041d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u2014 \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0430\u0448 Podfile \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u0441\u0440\u0430\u0437\u0443, \u0438 \u0435\u0441\u043b\u0438 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Firebase \u2014 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u043e non-modular headers. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u043e\u043c\u00a0CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES\u00a0\u0432\u00a0post_install; \u0432 \u043e\u0431\u0451\u0440\u0442\u043a\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u043f\u00a0firebaseWorkaround, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0431\u0435\u0437 Firebase.\u0413\u0440\u0430\u0431\u043b\u044f \u21162: privacy manifest, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Apple \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0421 2024 \u0433\u043e\u0434\u0430 Apple \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u00abrequired reason API\u00bb \u0432\u00a0PrivacyInfo.xcprivacy. MyID SDK \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0433\u043e xcframework \u0438\u043c\u0435\u0435\u0442. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e?\u041d\u0435\u0442.\u00a0\u041f\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0435 Apple \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0430\u00a0\u2014 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043d\u0438 \u043e\u0434\u0438\u043d \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e MyID, \u0438 \u044d\u0442\u043e \u0433\u0440\u0430\u0431\u043b\u044f \u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c: \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043d\u0430 \u0440\u0435\u0432\u044c\u044e \u0432 App Store.\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438, \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 (\u043d\u0435 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u2014 \u043a\u043e\u0434\u044b \u043f\u0440\u0438\u0447\u0438\u043d \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e):\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f API\u041a\u043e\u0434 \u043f\u0440\u0438\u0447\u0438\u043d\u044bNSPrivacyAccessedAPICategoryFileTimestamp0A2A.1NSPrivacyAccessedAPICategorySystemBootTime35F9.1NSPrivacyAccessedAPICategoryDiskSpace85F4.1NSPrivacyAccessedAPICategoryUserDefaultsCA92.1\u0413\u0440\u0430\u0431\u043b\u044f \u21163: \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430\u044f, \u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044fNSCameraUsageDescription\u00a0\u0432 Info.plist. \u0411\u0435\u0437 \u043d\u0435\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u0430 \u0431\u0438\u043b\u0434 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432 App Store Connect. \u041c\u0438\u043a\u0440\u043e\u0444\u043e\u043d, \u043a\u0441\u0442\u0430\u0442\u0438,\u00a0\u043d\u0435 \u043d\u0443\u0436\u0435\u043d\u00a0\u2014 liveness \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 SDK \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0437\u0440\u044f \u043f\u0443\u0433\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\u041a\u0430\u043a \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 Expo config plugin\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0443\u0442 \u0432\u0435\u0447\u043d\u0430\u044f \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0430: \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Expo\u00bb\u00a0\u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Expo Go. \u041f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 Expo Go \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u0420\u0435\u0447\u044c \u043f\u0440\u043e Continuous Native Generation: \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439\u00a0npx expo prebuild, \u0430 config plugin \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0432\u043d\u043e\u0441\u0438\u0442 \u0432 \u043d\u0438\u0445 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043a\u0430\u043a dev-\u0431\u0438\u043b\u0434 \u0438\u043b\u0438 EAS-\u0431\u0438\u043b\u0434.Config plugin \u2014 \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430\u0431\u043e\u0440 \u0447\u0438\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439-\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u0414\u043b\u044f MyID \u043d\u0443\u0436\u043d\u043e \u0448\u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 (\u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u0439\u043e\u0441\u043d\u044b\u0435 + \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 Android) \u2014 \u0432\u043e\u0442 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435:\/\/ 1. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u2014 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0432 Podfile.properties.jsonconfig = withPodfileProperties(config, (mod) =&gt; {  mod.modResults[&#8216;ios.useFrameworks&#8217;] = &#8216;static&#8217;;  return mod;});\/\/ 2. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b (+ \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d)config = withInfoPlist(config, (mod) =&gt; {  mod.modResults.NSCameraUsageDescription =    props.cameraPermission ?? DEFAULT_CAMERA_PERMISSION;  return mod;});\/\/ 3. Privacy manifest: \u043c\u0435\u0440\u0434\u0436\u0438\u043c required-reason API \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044fconfig.ios.privacyManifests = {  &#8230;manifests,  NSPrivacyAccessedAPITypes: mergePrivacyAccessedApiTypes(existing),};\/\/ 4. Android: Maven-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 MyID \u0432 allprojects.repositories\/\/    (\u0442\u043e\u043b\u044c\u043a\u043e groovy: kts-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438)config = withProjectBuildGradle(config, (mod) =&gt; {  mod.modResults.contents = addMavenRepository(mod.modResults.contents, url);  return mod;});\u0414\u0432\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c:\u0418\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c.\u00a0prebuild\u00a0\u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e (\u0438 \u0441\u00a0&#8212;clean, \u0438 \u0431\u0435\u0437), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 \u043b\u0438 \u043e\u043d\u0430 \u0443\u0436\u0435 \u2014 \u0438\u043d\u0430\u0447\u0435 Podfile \u043e\u0431\u0440\u0430\u0441\u0442\u0451\u0442 \u0434\u0443\u0431\u043b\u044f\u043c\u0438. \u041c\u0430\u0440\u043a\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431.\u041c\u0435\u0440\u0434\u0436, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c.\u00a0Privacy manifest \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 SDK. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u0435\u0440\u0434\u0436\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0438 \u043a\u043e\u0434\u044b \u043f\u0440\u0438\u0447\u0438\u043d, \u0430 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u2014 \u0438\u043d\u0430\u0447\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u043b\u0447\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438.\u0414\u043b\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0432\u0441\u0451 \u044d\u0442\u043e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488444","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=488444"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488444\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}