Różnice platformowe
AI zna różnice iOS/Android i generuje kod specyficzny dla platform
Rozwój mobilny przedstawia unikalne wyzwania: API specyficzne dla platform, ograniczenia wydajnościowe, aspekty UI/UX i fragmentację urządzeń. Ta lekcja demonstruje jak możliwości AI Cursor przekształcają rozwój mobilny, czyniąc go szybszym i bardziej efektywnym na wszystkich głównych platformach.
Niezależnie od tego, czy budujesz z React Native, Flutter czy platformami natywnymi, pomoc AI dramatycznie przyspiesza rozwój mobilny poprzez obsługę boilerplate’u, sugerowanie optymalizacji specyficznych dla platform i zapewnianie natychmiastowego dostępu do dokumentacji API.
Różnice platformowe
AI zna różnice iOS/Android i generuje kod specyficzny dla platform
Optymalizacja wydajności
AI sugeruje optymalizacje specyficzne dla mobilnych pod kątem baterii, pamięci i szybkości
Wzorce UI/UX
AI implementuje wzorce projektowe i komponenty odpowiednie dla platform
API urządzeń
AI pomaga integrować kamerę, GPS, czujniki i inne możliwości urządzeń
Inicjalizacja z pomocą AI
# Poproś AI o optymalną konfigurację"Stwórz nowy projekt React Native z:- Konfiguracją TypeScript- Konfiguracją nawigacji (React Navigation)- Zarządzaniem stanem (Redux Toolkit)- Frameworkiem testowym (Jest + React Native Testing Library)- Lintingiem i formatowaniem"
Konfiguracja specyficzna dla platform
// Uzyskaj pomoc w konfiguracji specyficznej dla platform"Skonfiguruj projekt iOS dla:- Push notifications- Wdrożenia App Store- Właściwych ustawień Info.plist- Wymaganych możliwości"
"Skonfiguruj projekt Android dla:- Usług Google Play- Reguł ProGuard- Optymalizacji Gradle- Wymaganych uprawnień"
Środowisko deweloperskie
// AI pomaga z konfiguracją środowiska"Skonfiguruj środowisko deweloperskie dla React Native:- Integrację Flipper do debugowania- Konfigurację Reactotron- Optymalizację hot reload- Monitorowanie wydajności"
// Poproś AI o implementację nawigacji"Stwórz strukturę nawigacji z:- Nawigacją tab dla głównych ekranów- Nawigacją stack wewnątrz tabów- Przepływem autentykacji z nawigacją warunkową- Wsparciem deep linking"
// AI generuje kompletną konfigurację nawigacjiimport { NavigationContainer } from '@react-navigation/native';import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';import { createNativeStackNavigator } from '@react-navigation/native-stack';
const Tab = createBottomTabNavigator();const Stack = createNativeStackNavigator();
// ... kompletna implementacja nawigacji
// AI implementuje konfigurację Redux Toolkit"Skonfiguruj Redux Toolkit dla:- Stanu autentykacji użytkownika- Persystencji danych offline- Zarządzania cache API- Aktualizacji optymistycznych"
// AI tworzy konfigurację storeimport { configureStore } from '@reduxjs/toolkit';import { persistStore, persistReducer } from 'redux-persist';import AsyncStorage from '@react-native-async-storage/async-storage';
// ... kompletna konfiguracja Redux z persystencją
// AI tworzy solidną warstwę API"Stwórz serwis API z:- Interceptorami Axios dla auth- Kolejką offline dla nieudanych żądań- Automatycznym retry z exponential backoff- Cache'owaniem odpowiedzi"
// AI generuje serwis APIclass APIService { private offlineQueue: Request[] = [];
constructor() { this.setupInterceptors(); this.setupOfflineHandling(); }
// ... kompletna implementacja}
// Integracja kamery"Zaimplementuj funkcję kamery z:- Przechwytywaniem zdjęć- Nagrywaniem wideo- Dostępem do galerii- Kompresją obrazów- Uprawnieniami specyficznymi dla platform"
// AI zapewnia kompletną implementacjęimport { launchCamera, launchImageLibrary } from 'react-native-image-picker';import { request, PERMISSIONS, RESULTS } from 'react-native-permissions';
const CameraService = { async requestPermissions() { const permission = Platform.OS === 'ios' ? PERMISSIONS.IOS.CAMERA : PERMISSIONS.ANDROID.CAMERA;
const result = await request(permission); return result === RESULTS.GRANTED; },
async capturePhoto(options = {}) { const hasPermission = await this.requestPermissions(); if (!hasPermission) throw new Error('Odmowa dostępu do kamery');
// ... kompletna implementacja }};
// Optymalizacja list"Optymalizuj ten FlatList renderujący 1000+ elementów z:- Właściwym keyExtractor- Implementacją getItemLayout- Ustawieniami wirtualizacji- Zarządzaniem pamięci"
// AI zapewnia zoptymalizowaną implementację<FlatList data={data} keyExtractor={(item) => item.id} getItemLayout={(data, index) => ({ length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index, })} removeClippedSubviews={true} maxToRenderPerBatch={10} updateCellsBatchingPeriod={50} windowSize={10} initialNumToRender={10} renderItem={renderItem}/>
// Poproś AI o najlepsze praktyki Flutter"Skonfiguruj projekt Flutter z:- Clean architecture (warstwy presentation, domain, data)- Zarządzaniem stanem Riverpod- Nawigacją Go Router- Dio do networkingu- Freezed dla klas danych"
// AI tworzy strukturę projektulib/├── core/│ ├── error/│ ├── network/│ └── utils/├── features/│ ├── auth/│ │ ├── data/│ │ ├── domain/│ │ └── presentation/│ └── home/└── main.dart
// AI pomaga z responsywnymi layoutami"Stwórz responsywny layout który:- Adaptuje się do telefonów, tabletów i web- Obsługuje zmiany orientacji- Skaluje tekst odpowiednio- Utrzymuje proporcje"
// AI generuje responsywny widgetclass ResponsiveBuilder extends StatelessWidget { final Widget mobile; final Widget? tablet; final Widget? desktop;
@override Widget build(BuildContext context) { return LayoutBuilder( builder: (context, constraints) { if (constraints.maxWidth < 600) { return mobile; } else if (constraints.maxWidth < 1200) { return tablet ?? mobile; } else { return desktop ?? tablet ?? mobile; } }, ); }}
// AI tworzy złożone animacje"Stwórz niestandardową animację dla:- Przejść stron z hero animations- Animacji zagnieżdżonych list- Gestów interaktywnych- Animacji opartych na fizyce"
// AI implementuje animacjęclass StaggeredListAnimation extends StatefulWidget { // ... kompletna implementacja animacji zagnieżdżonej}
// AI obsługuje różnice platformowe"Stwórz adaptacyjne komponenty UI które:- Używają widgetów Cupertino na iOS- Używają widgetów Material na Android- Respektują konwencje platform- Obsługują funkcje specyficzne dla platform"
// AI tworzy adaptacyjne widgetyclass AdaptiveButton extends StatelessWidget { @override Widget build(BuildContext context) { if (Platform.isIOS) { return CupertinoButton( // Stylizacja iOS ); } return ElevatedButton( // Stylizacja Android ); }}
// AI implementuje wzorce Riverpod"Zaimplementuj przepływ autentykacji z Riverpod:- StateNotifier dla stanu auth- FutureProvider dla danych użytkownika- StreamProvider dla aktualizacji real-time- Właściwą obsługę błędów"
// AI generuje kompletne zarządzanie stanem@riverpodclass Auth extends _$Auth { @override Future<User?> build() async { // Sprawdź zapisane poświadczenia final token = await _storage.getToken(); if (token != null) { return await _api.getCurrentUser(); } return null; }
Future<void> login(String email, String password) async { state = const AsyncValue.loading(); state = await AsyncValue.guard(() async { final user = await _api.login(email, password); await _storage.saveToken(user.token); return user; }); }}
// AI pomaga z SwiftUI"Stwórz widok SwiftUI dla:- Profilu użytkownika z edytowalnymi polami- Integracji image picker- Walidacji formularza- Asynchronicznego ładowania danych"
// AI generuje kod SwiftUIstruct ProfileView: View { @StateObject private var viewModel = ProfileViewModel() @State private var showingImagePicker = false
var body: some View { Form { Section("Zdjęcie profilowe") { // ... kompletna implementacja }
Section("Informacje osobiste") { // ... pola formularza z walidacją } } .navigationTitle("Profil") .task { await viewModel.loadProfile() } }}
// AI pomaga z Jetpack Compose"Stwórz UI Compose dla:- Bottom sheet z dynamiczną zawartością- Lazy column z paginacją- Implementacji niestandardowego motywu- Wzorców podnoszenia stanu"
// AI generuje kod Compose@Composablefun ProfileScreen( viewModel: ProfileViewModel = hiltViewModel()) { val uiState by viewModel.uiState.collectAsStateWithLifecycle()
ProfileContent( uiState = uiState, onEvent = viewModel::handleEvent )}
@Composableprivate fun ProfileContent( uiState: ProfileUiState, onEvent: (ProfileEvent) -> Unit) { // ... kompletna implementacja}
Konfiguracja testów
// AI pomaga skonfigurować testowanie"Skonfiguruj środowisko testowe dla React Native z:- Konfiguracją Jest dla React Native- Konfiguracją testing library- Konfiguracją mock dla modułów natywnych- Konfiguracją snapshot testing"
Pisanie efektywnych testów
// AI generuje kompleksowe testy"Napisz testy dla przepływu autentykacji pokrywające:- Udane logowanie- Nieudane logowanie z różnymi błędami- Logikę odświeżania tokenów- Logout i czyszczenie"
// AI tworzy pakiet testówdescribe('Authentication', () => { // ... kompletna implementacja testów});
Testowanie UI
// AI pomaga z testami UI"Stwórz testy Detox dla:- Kompletnego przepływu onboardingu użytkownika- Scenariuszy deep linking- Obsługi push notifications- Przejść tło/pierwszy plan"
// AI pomaga z XCTest"Napisz XCTest dla:- Operacji Core Data- Warstwy sieciowej z mock odpowiedziami- Testowania UI z XCUITest- Testowania wydajności"
class ProfileViewModelTests: XCTestCase { // ... kompleksowy pakiet testów}
// AI pomaga z testowaniem Android"Stwórz testy używając:- JUnit dla testów jednostkowych- Espresso dla testów UI- Mockito do mockowania- Robolectric do testowania frameworka"
@RunWith(AndroidJUnit4::class)class ProfileViewModelTest { // ... implementacja testów}
// AI generuje testy Flutter"Napisz testy widget dla:- Walidacji formularza- Przepływów nawigacji- Zarządzania stanem- Golden tests dla UI"
void main() { testWidgets('Formularz profilu waliduje email', (tester) async { // ... implementacja testu widget });}
# AI prowadzi wdrażanie"Przygotuj aplikację iOS do App Store:- Wygeneruj właściwe ikony i ekrany splash- Skonfiguruj metadane App Store Connect- Stwórz zrzuty ekranu dla wszystkich urządzeń- Napisz atrakcyjny opis aplikacji- Obsługuj certyfikaty i provisioning"
# AI zapewnia listę kontrolną wdrażania1. Przygotowanie zasobów2. Konfiguracja build3. Testowanie na prawdziwych urządzeniach4. Proces zgłoszenia5. Monitorowanie po uruchomieniu
# AI tworzy pipeline CI/CD"Stwórz workflow GitHub Actions dla:- Automatycznego testowania na PR- Build dla obu platform- Wdrażania do TestFlight/Play Console- Wersjonowania- Generowania notatek wydania"
# AI generuje workflowname: Mobile CI/CDon: push: branches: [main, develop] pull_request: branches: [main]
jobs: # ... kompletna implementacja CI/CD
Raportowanie crashy
Zintegruj Sentry lub Crashlytics z konfiguracją prowadzoną przez AI
Analityka
Zaimplementuj analitykę z śledzeniem świadomym prywatności
Metryki wydajności
Monitoruj wydajność aplikacji, użycie pamięci i wpływ na baterię
Opinie użytkowników
Zaimplementuj systemy opinii i ocen w aplikacji
// AI sugeruje strukturę projektu"Zarekomenduj strukturę folderów dla dużej aplikacji React Native z:- Organizacją opartą na funkcjach- Biblioteką współdzielonych komponentów- Funkcjami użytkowymi- Definicjami typów- Organizacją testów"
src/├── features/│ ├── auth/│ ├── profile/│ └── settings/├── shared/│ ├── components/│ ├── hooks/│ └── utils/├── services/├── types/└── __tests__/
Pipelines danych
Przetwarzaj i synchronizuj dane mobilne efektywnie
Integracja DevOps
Automatyzuj pipeline’y wdrażania mobilnego
Konfiguracja monitorowania
Zaimplementuj kompleksowe monitorowanie aplikacji