Інтеграція AWS Amplify в мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція AWS Amplify в мобільний додаток
Середній
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція AWS Amplify в мобільний додаток

AWS Amplify — набір бібліотек та CLI для підключення мобільного додатку до хмарних сервісів AWS: аутентифікація через Cognito, API через AppSync (GraphQL) або REST Gateway, сховище через S3, push-сповіщення через Pinpoint. Amplify Gen 2 (2024) перейшов на TypeScript-based конфігурацію замість JSON, що спростило типізацію та CI/CD-інтеграцію.

Аутентифікація через Cognito + Amplify Auth

Найпоширеніша точка входу — Auth. Налаштування займає 20 хвилин, алеховає нюанси.

React Native:

import { Amplify } from 'aws-amplify';
import { signIn, signUp, confirmSignUp, fetchAuthSession } from 'aws-amplify/auth';
import outputs from './amplify_outputs.json';

Amplify.configure(outputs);

// Вход
const { isSignedIn } = await signIn({ username: email, password });

// JWT токен для API-запитів
const session = await fetchAuthSession();
const token = session.tokens?.idToken?.toString();

Amplify UI Components (@aws-amplify/ui-react-native) дає готовий Authenticator-компонент — LoginForm + SignUp + MFA за одну строку. Виглядає за замовчуванням, але кастомізується через components prop.

Flutter:

await Amplify.addPlugins([AmplifyAuthCognito()]);
await Amplify.configure(amplifyconfig);

final result = await Amplify.Auth.signIn(
  username: email,
  password: password,
);

AppSync GraphQL: де легко стати не там

AppSync — управляємий GraphQL з підпиской на зміни через WebSocket. Amplify генерує типізований клієнт з схеми:

import { generateClient } from 'aws-amplify/data';
import type { Schema } from './amplify/data/resource';

const client = generateClient<Schema>();

// Запит з реальним часом
const sub = client.models.Post.observeQuery().subscribe({
  next: ({ items }) => setPosts(items),
});

Проблема N+1 в AppSync. Якщо resolver не налаштований з batch resolver або DynamoDB Single Table Design, кожен елемент списку робить окремий запит до базі. На 50 постах — 51 запит. Рішення: BatchInvoke в AppSync resolver або Pipeline resolvers.

Offline-режим. Amplify DataStore синхронізує дані з AppSync та зберігає локально у SQLite. При втраті з'єднання мутації попадають у чергу та відправляються при відновленні. Налаштування вимагає @model директив у GraphQL схемі та DataStore.configure(). Конфлікти вирішуються через ConflictResolutionStrategy (Auto Merge, Optimistic Concurrency, Custom Lambda).

S3: завантаження файлів

import { uploadData, getUrl } from 'aws-amplify/storage';

const result = await uploadData({
  key: `avatars/${userId}.jpg`,
  data: fileBlob,
  options: {
    accessLevel: 'protected',
    contentType: 'image/jpeg',
    onProgress: ({ loaded, total }) => setProgress(loaded / total),
  },
}).result;

const { url } = await getUrl({ key: result.key, options: { accessLevel: 'protected' } });

accessLevel: 'protected' — файл доступен тільки власнику (через Cognito Identity ID у шляху). 'public' — всім. 'private' — тільки власнику без публічного URL. Неправильний accessLevel — часта причина 403 при спробі отримати чужий файл.

Типові грабли при інтеграції

Розмір бандла React Native. aws-amplify з повною конфігурацією додає ~500KB до JS-бандла. Використовуємо модульні імпорти: import { signIn } from 'aws-amplify/auth' замість import Amplify from 'aws-amplify'.

CORS при REST API. Amplify CLI створює API Gateway з CORS, але якщо додавати ресурси вручну — CORS потрібно налаштовувати окремо для кожного методу + preflight OPTIONS.

Refresh tokens на iOS. Amplify зберігає токени у Keychain. При оновленні через TestFlight без видалення додатку старі токени залишаються. signOut({ global: true }) інвалідує всі сесії на бекенді.

Що входить в інтеграцію

Налаштування Amplify CLI / Gen 2 конфігурації. Підключення Auth (Cognito) з необхідними флоу (email/Google/Apple Sign In). Налаштування API (AppSync або REST). Offline-режим через DataStore (якщо потрібно). Storage для файлів. Налаштування Amplify у CI/CD.

Термін

Базова інтеграція Auth + API: 3–4 дні. Повна інтеграція з DataStore + Storage + Push: 1–2 тижні. Вартість — після аналізу вимог та вибору сервісів.