תגובה ל-AWS ו-AWS Ampl

(התגובה הפכה למסגרת מובילה לפיתוח יישומים ניידים חוצה פלטפורמות באמצעות JavaScript ותגובה.היכולת שלה לייצר חוויות דמויות ילידות על iOS ואנדרואיד מקוד אחד בסיס עושה את זה מועדף בין סטארט-אפים וארגונים כאחד.עם זאת, בניית השירותים האחוריים כי יישומים ניידים מודרניים צריכים - הידבקות, רצף נתונים, עדכונים בזמן אמת, אחסון, ו- APIs - יכול להיות זמן-cons-cons-umrevedreveds-reveds-a-revetremeveds-upremeveds-upremeveds-upa-upremeveds-upa-upa-upa-upa-up-upe-upa-up-up-up-upa-upremevetremevetremeremeremeremeremeremeremeremeve-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-to-to-to-to-up-up-to-to-to-to-to-to-

מאמר זה מספק צלילה עמוקה לתוך שילוב של React Native עם AWS Ampl עבור שילוב ענן בחזרה.אתה תלמד כיצד להגדיר ampl בפרויקט Native React, אימות הגדרה, אחסון נתונים, ו APIs, ולחקור תכונות מתקדמות כמו נתונים סטטיסטיים לא מקוון ו בזמן אמת.עד הסוף, יהיה לך אדריכלות מוכנה לייצור עבור בניית יישומים ניידים מדרגים מינימלי עם נתונים אחוריים מינימליים.

מה זה AWS Ampl?

(א) [ה] הרחבה היא מסגרת פיתוח מלאת-שלמה המפשטת את תהליך הבנייה והפצה של יישומים שניתן לענן, והיא מספקת מערכת של ספריות בנויות תכלית (מעלה ליברה) למקרים של שימוש משותף כגון אימות, אחסון נתונים, AI/ML תחזיות, ודוחפת הודעות של קונסולת ה-ALTFIRD (ALT5) LT5AvA)

יתרונות מרכזיים של שימוש ב-Ampl כוללים:

  • (ב) ,0) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) מקורות הגנה באמצעות פקודות פשוטות CLI; מגבירים את ניהול הענן של AWS מאחורי הקלעים.
  • (FLT:0) שיטות הטובות ביותר של LT:1) - Ampl חלה על אבטחת AWS וחילונות קנה מידה באופן אוטומטי.
  • (FLT:0) יכולות רשמיות ויכולות בזמן אמת 1) – מנוע הנתוניםסטרורה מאפשר אחסון מקומי עם פתרון סכסוכים אוטומטיים והסנכרון.
  • (FLT:0)Multi-platformFLT:1 - אותו חזרה עובד על פני React Native, iOS, Android, Web, ו- Flutter.

הקמת פרויקט תגובה עם AWS Ampl

Prerequisites

לפני שתתחיל, ודא שיש לך את ההתקנה הבאה:

  • Node.js (גרסה 16 ואילך)
  • AWS CLI ו-AWS מגבירים את CLILIIR (FLT:1)
  • חשבון AWS עם הרשאות IAM מתאימות
  • React Native CLI או Expo עובד טוב עם Ampl for Simple Project

אם אתה מתחיל מאפס, ליצור פרויקט חדש של React Native:

npx react-native init MyAmplifyApp
// or for Expo
npx create-expo-app MyAmplifyApp

התקנת Ampl Libraries

בתוך תיקיית הפרויקט שלך, להתקין את ספריית ה-Ampl ואת חבילת ההתמדה הספציפית של React Native (לאחסון אסימונים ונתונים לא במצב לא מקוון):

npm install aws-amplify @react-native-async-storage/async-storage

עבור iOS, ייתכן גם צריך להתקין את התלויים של קוקופוד:

cd ios && pod install && cd ..

ההרחבה של הפרויקט שלך

הפעל את ה- CLI כדי ליצור פרויקט חדש של החזרת ה-CLI יגרור אותך לבחור את משאבי הענן שאתה רוצה:

amplify init

(הופנה מהדף הטקסט המועדף עליך, בחר את סוג האפליקציה (JavaScript), וציין את מקור מנהל (למשל, FLT 6 עבור React Native) לאחר ההתחלתיזציה, Ampl יוצר תיקיה (FLT 7) וקובץ ALT:8 המכיל את התצורה.

amplify add auth

בחר את תצורה ברירת המחדל (Cognito User Pool) ולאחר מכן לדחוף את השינויים כדי ליצור את המשאבים בחשבון AWS שלך:

amplify push

ה-Automate יעדכן את קובץ ה-FLT:11 עם נקודות קצה משאבים חדשות.

ההרחבה The App

בקובץ הכניסה הראשי שלך (למשל, FLT:12), יבוא והגדרת Ampl:

import { Amplify } from 'aws-amplify';
import awsconfig from './src/aws-exports'; // adjust path as needed
Amplify.configure(awsconfig);

עכשיו האפליקציה React Native שלך מוכנה להשתמש בתכונות של Aלהגדיל.

שילוב

Authentication

הגדלת ניהול משתמשים Auth מפשט באמצעות ההרשמה, Sign-in, שחזור סיסמה ואימות רב-ספקי (MFA) תחת הhood, הוא משתמש ב-AWS Cognito User Pools.

שם מקור:0.10.10.18

import { Auth } from 'aws-amplify';

async function signIn(username, password) {
 try {
 const user = await Auth.signIn(username, password);
 console.log('Sign-in successful', user);
 } catch (error) {
 console.log('Error signing in', error);
 }
}

כדי לבדוק אם משתמש הוא אותנטי כיום, אתה יכול לקרוא ל-FLT:15 גם מטפל רענון אוטומטי, כך שאתה אף פעם לא צריך לנהל את JWT Expiry באופן ידני.

עבור זרם אימות מלא (sign-up, לאשר את ההרשמה, Sign-in, Sign-out), להתייעץ עם ה- 0 רשמי תגובה Native Auth MonumentFLT:1.

איסוף נתונים עם GraphQL (AppSync)

הפתרון העיקרי של הנתונים הוא FLT:0GraphQL עם AWS AppSyncveFLT:1 .הוא מספק API גמיש עם מנויים בזמן אמת, אישורים עתירי קנס, וסינכרון נתונים אוטומטיים.

amplify add api

בחר GraphQL, ואת CLI תבקש ממך להגדיר את הschema שלך. Ampl מייצרת דגימה מדגם כי אתה יכול לשנות.

type Todo @model {
 id: ID!
 name: String!
 description: String
 createdAt: AWSDateTime!
}

הוראות ה-FLT:18 יוצרות באופן אוטומטי טבלאות דינמיות, פותרים, ופעולות CRUD לאחר לחיצה (ראה FLT:19), Ampl מייצרת קבצים TypeScript / JavaScript (כמו FLT:20 ו- ; שאילתות FLT:21) שניתן לייבא לתוך האפליקציה שלך.

(ב) ,0) , ⁇ (ב) , ⁇ ⁇ ⁇

import { API, graphqlOperation } from 'aws-amplify';
import { listTodos } from './graphql/queries';
import { createTodo } from './graphql/mutations';

async function fetchTodos() {
 const result = await API.graphql(graphqlOperation(listTodos));
 return result.data.listTodos.items;
}

async function addTodo(name, description) {
 const todo = { name, description };
 const result = await API.graphql(graphqlOperation(createTodo, { input: todo }));
 return result.data.createTodo;
}

עבור עדכונים בזמן אמת, השתמש במנויים:

import { onCreateTodo } from './graphql/subscriptions';

const subscription = API.graphql(graphqlOperation(onCreateTodo)).subscribe({
 next: (event) => console.log('New todo:', event.value.data.onCreateTodo),
});

גרףQL APIs תומך גם בדפוסי אישור מורכבים באמצעות קבוצות קוגניטו, IAM, או API מפתחות.See the FLT:0GraphQL API GuideveFLT:1 לפרטים.

DataStore - Offline-First & Real-Time Sync

Ampl DataStore הוא מנוע רב עוצמה המספק אחסון מקומי, פתרון סכסוכים אוטומטיים, וסנכרון חלקה עם הענן (באמצעות AppSync).זה אידיאלי עבור יישומים הזקוקים לתמיכה לא מקוונת חזקה ללא כתיבת לוגיקה סנכרון אישית.

כדי להשתמש ב-DataStore, ראשית להגדיר את המודלים שלך באמצעות Ampl CLI (אשר יוצר תיקיה ההרחבה :24 ).

import { DataStore } from 'aws-amplify';
import { Todo } from './models';

async function saveTodo() {
 await DataStore.save(new Todo({
 name: 'Buy groceries',
 description: 'Milk, eggs, bread'
 }));
}

async function queryTodos() {
 const todos = await DataStore.query(Todo);
 return todos;
}

DataStore מסנכרנת באופן אוטומטי שינויים בענן כאשר חיבור זמין.סכסוכים (למשל, עריכה לא מקוונת משני מכשירים) נפתרים באמצעות אסטרטגיה של אחרון מכונות-wins כברירת מחדל, אבל אתה יכול להתאים אישית את החלטת הסכסוך עם מטפלים מותאמים אישית.

אחסון תמונה וקובץ (S3)

הגדלת קובץ הסימולציות של אחסון והורדת באמצעות אמזון S3. כדי להוסיף אחסון:

amplify add storage

בחר תוכן (תמונות, אודיו, וידאו וכו ') ולהגדיר רמות גישה ציבוריות / פרטיות. ולאחר מכן להעלות קבצים מהאפליקציית React Native:

import { Storage } from 'aws-amplify';

async function uploadPhoto(uri) {
 const response = await fetch(uri);
 const blob = await response.blob();
 const result = await Storage.put('photo.jpg', blob, {
 contentType: 'image/jpeg',
 });
 console.log('File uploaded at:', result.key);
}

כדי לשחזר כתובת URL סגורה לתצוגה:

const imageUrl = await Storage.get('photo.jpg');
// Use imageUrl in an Image component

גם מגבירה מטפלות בהתחדשות ובטרנספורמציה (כמו יצירת אגודל) כאשר אתה מגדיר אותו באמצעות CLI.

פונקציות ללא תשלום (Lambda)

עבור לוגיקה חוזרת אישית, Ampl משלב עם AWS Lambda. הוסף פונקציה:

amplify add function

בחר תבנית (למשל, פונקציה פשוטה CRUD או משימה מתוכננת) Ampl ייצור פונקציה Lambda מקומית ויסלול אותה עם ה- API שלך או משאבים אחרים.You יכול להשתמש בו באמצעות ממשק API GraphQL (כפתור) או ישירות באמצעות ספריית Amplfunctions:

import { Func } from 'aws-amplify';

const result = await Func.invoke('myFunction', { input: 'data' });

זה אידיאלי עבור משימות כמו עיבוד תשלום, טרנספורמציה תמונה או שילוב עם API של צד שלישי.

שימוש במקרים מתקדמים ועיסוקים טובים ביותר

מצב Offline ופתרון סכסוכים

להגביר את השימוש ב-DataStore מטפל במצב לא מקוון באופן שקוף, אבל עבור יישומי ייצור אתה צריך לשקול:

  • (FLT:0) אסטרטגיות לפתרון החלטות של קונסולת 1 (DataStore) משתמשות במטבע קונפלימי אופטימי אם שני לקוחות משנים את אותו שיא במצב לא מקוון, ניתן לפתור את הסכסוך באופן אוטומטי (הסופר האחרון מנצח) או עם לוגיקה אישית באמצעות לוגיקה אישית באמצעות לוגיקה (FLT:31).
  • (FLT:0SelectiveSyncFLT:1) - השתמש ב-Predicates לסנכרן רק תת-קבוצה של נתונים (למשל, "רק לנדו על ידי המשתמש הנוכחי").
  • (ב) [15] ,[[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]]

אישור מאובטח עם Multi-Factor Authentication (MFA)

ה-UTP תומך ב-SMS או ב- MFA מבוסס על TP, ניתן יהיה להעלות את ה-MFA במהלך ה-FLT:33 ולאחר מכן באפליקציית שלך משתמשים מהירים כדי להגדיר את MFA לאחר ההרשמה:

import { Auth } from 'aws-amplify';

async function setupMFA() {
 const user = await Auth.currentAuthenticatedUser();
 const code = await Auth.setupTOTP(user);
 // Show QR code to user
}

סליחות בזמן אמת עם אמזון Pinpoint

בנוסף, הגדלה משלבת עם אמזון Pinpoint עבור הודעות דחיפה.הוספת ניתוח (ראה FLT:35), ולאחר מכן להשתמש בקטגוריית ההזנה:

import { Notifications } from 'aws-amplify';

Notifications.Push.onNotificationOpened((notification) => {
 console.log('Notification opened:', notification);
});

זה עובד עם iOS (APNs) ואנדרואיד (FCM).

אופטימיזציה

  • (ב) ויקרא י"ד: "ה', ב': "ה', ב', ב', ב', ב', ב', ב', ב', ב', ב', ב')" (במדבר כ"ד).
  • (ב) ויקרא י"א: "ה' (ב"ד)" (שם כ"ד, כ"ד)
  • (ב) ויקרא י"א: "ב"ה' (ב"ב) ב[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]
  • (ב) [ה]התמ"ג]: לפני שעלתה ל-S3, גודל או דחיסות של תמונות בצד הלקוח באמצעות ספריות כמו FLT:41.

מלכודות נפוצות להימנע

  • (ב) לא לטפל ברשת:0) לא טיפול ב-UI.
  • (ב) ,0) ,Over-fetching in GraphQLearFLT:1 , תמיד לציין את השדות שאתה צריך בשאילתות. השתמש בפיצולי שדה הניתנים להחלפה.
  • (ה)התרשות IAMFLT:1) - בעת שימוש ב- IAM מבוסס Auth (למשל, עבור גישה ל- API ציבורי), להבטיח כי תפקידי ה-Cognito Identity Pool יש את המדיניות הנכונה עבור AppSync ו-S3.
  • (FLT:0) השימוש ב-Excel של אקספונדנד 1 (בעוד ש-Expo Works, כמה תכונות Ampl (כמו הודעות דחיפה ומודולים מקומיים מסוימים) דורשות את זרימת העבודה החשופה או EAS לבנות עם תוספים מותאמים אישית.
  • (ב) ,0) ,העברה של ה-CLI's Local TestveFLT:1 - השתמש ב-FLT:42 כדי לבחון את ממשקי ה-GRAFQL ותפקודים מקומיים לפני שדוחפים אל הענן.

היתרונות של שילוב React Native עם AWS Ampl

  • (FLT:0) שיפור פיתוח של ההרחבה:1 - הגדלת משאבים ומייצר קוד לקוח, כך שתוכל להתמקד בממשק המשתמש.
  • (FLT:0)ScalabilityFLT:1 - כל השירותים (Cognito, AppSync, DynamoDB, S3) מנוהלים באופן מלא ואוטומטי כדי לטפל במיליוני משתמשים.
  • (FLT:0)Built-in SecurityFLT:1 - Ampl לאכוף את שיטות העבודה הטובות ביותר של AWS כמו הצפנה במנוחה, תפקידי IAM, ובקרת גישה ספוגה היטב.
  • (FLT:0Cross-platform עקביותFIRLT:1) - אותו backend עובד בצורה חלקה עם React Native, iOS, Android ואפליקציות אינטרנט, צמצום תחזוקה מעל ראש.
  • (FLT:0) יכולות ראשונות של ההרחבה (FLT:1) - DataStore מספק חוויה לא מקוונת ללא קוד מותאם אישית.
  • (ב) ,0) חסכונית (FLT:1) - תשלום רק עבור משאבי AWS שאתה משתמש בהם, עם שכבה חופשית נדיבה לפרויקטים קטנים.

מסקנה

React Native ו-AWS Ampl ליצור זוג חזק לבניית יישומים ניידים מודרניים עם אוזניות ענן.A.A.A.A.E.A.A.E.A.E.A.E.A.A.A.A.A.E.A.A.A.A.A.A.A.A.A.E.A.A.A.A.A.A.E.A.A.A. Pro.A.A.A.E.A.A.A.E.E.A.A.A.A.A.A.A.A.A.A.A.A.A.E.E.A.A.E.E. Pro.A.A.A.A.E.E.A.A.E. ProExtra מבטל מבטל את המשימות שללעבור טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס טופס גרסה של אימות של אימות של אימות של אימות של אימות של אימות של אימות של אימות של אימות של אימות של אימות של אימות של בניית קבצים חזקים עבור בניית קבצים חזקים עבור בניית קבצים יישומים ניידים חזקים עבור בניית יישומים מודרניים עבור בניית יישומים ניידים מודרניים של בניית יישומים ניידים מודרניים עם בניית

למחקר מעמיק יותר, התייחס למשאבים הבאים:

  • (ב) ,0) תגובה של האינדיאנים מתחילים ב-Moderaling GuideveFLT:1
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,"הגדלה של ג'טבו רסטורי" (GateHub Repository) - דוגמאות ונושאים שונים
  • (ב) ,0) ,Using AWS Ampl with ExFigmalLT 1

על ידי אימוץ ערימה זו, הצוות שלך יכול לספק יישומים ניידים חזקים, מאובטחים ורחבים עם מורכבות פחות חזרה.התחל הפרויקט הבא שלך עם React Native ו-AWS Ampl, וחוות את ההבדל של החזר ענן מנוהל במלואו.