Native App — müəyyən platforma üçün nəzərdə tutulmuş dillərdə və SDK-lardan istifadə edilərək yazılmış tətbiqdir: iOS üçün Swift/Objective-C və Android üçün Kotlin/Java. Çarpaz platforma həllərindən (Flutter, React Native) fərqli olaraq, nativ tətbiq əməliyyat sistemi ilə birbaşa işləyir, heç bir ara qat olmadan cihazın API-lərinə — kameraya, Bluetooth, NFC, sensorlara, qrafik prosessora tam giriş əldə edir. Bu, maksimum performans (animasiyada 60 fps), minimal işəsalma vaxtı (0.2–0.5 saniyə) və ən yeni platforma funksiyalarını çıxdığı gün istifadə etmək imkanı təmin edir. Statista (2026) məlumatına görə, istifadəçilərin 67%-i tətbiqdən dərhal cavab gözləyir — nativ inkişaf mürəkkəb layihələr üçün belə təcrübəni zəmanət etməyin yeganə yoludur.
Əsas məqamlar
Native App — bir platforma üçün onun doğma proqramlaşdırma dilindən və alətlərindən istifadə edilərək xüsusi olaraq hazırlanmış mobil tətbiqdir. iOS üçün bu Swift və ya Objective-C Xcode ilə, Android üçün — Kotlin və ya Java Android Studio ilə. Kod birbaşa platformanın maşın koduna (iOS üçün LLVM, Android üçün ART vasitəsilə) kompilyasiya olunur ki, bu da maksimum icra sürətini təmin edir.
Nativ tətbiqin arxitekturası üç qatdan ibarətdir. Presentation Layer — UI komponentləri (iOS-da UIKit/SwiftUI, Android-də Jetpack Compose/Android Views). Domain Layer — use cases və repository interfeysləri ilə biznes məntiqi. Data Layer — məlumat mənbələri: şəbəkə (iOS-da URLSession/Alamofire, Android-də Retrofit/OkHttp), verilənlər bazası (CoreData/SwiftData, Room), fayl sistemi. Hər qat nativ SDK-lardan istifadə edir — məsələn, iOS tətbiqi geolokasiya üçün CoreLocation, BLE üçün CoreBluetooth, kamera üçün AVFoundation, 3D qrafika üçün Metal-ı çağıra bilər. Android analoqlar təklif edir: geo üçün FusedLocationProvider, BLE üçün BluetoothAdapter, kamera üçün CameraX, qrafika üçün OpenGL ES/Vulkan.
Native app-in həyat dövrü platformalarda fərqlənir. iOS AppDelegate və SceneDelegate ilə ciddi modeldən istifadə edir: tətbiq notRunning → foregroundInactive → foregroundActive → background → suspended vəziyyətlərindən keçir. Android Activity və Fragment ilə daha çevik modeldən istifadə edir: onCreate → onStart → onResume → onPause → onStop → onDestroy, üstəlik proseslər yaddaş çatışmazlığında sistem tərəfindən öldürülə bilər. Tərtibatçı fasiləsiz istifadəçi təcrübəsi üçün vəziyyətin saxlanmasını (iOS: state restoration, Android: onSaveInstanceState) düzgün idarə etməlidir.
iOS inkişafı yalnız macOS-da Xcode mühitində aparılır — Apple-ın kod redaktoru, Interface Builder, iOS simulyatoru və profilinq alətləri (Instruments) daxil olan inteqrasiya olunmuş inkişaf mühiti. Əsas dil — Swift, Apple tərəfindən 2014-cü ildə təqdim edilmişdir. Swift tip təhlükəsizliyini C-yə yaxın performansla birləşdirir və OOP, funksional və protokol-yönümlü proqramlaşdırma paradiqmalarını dəstəkləyir.
Əsas iOS freymvorkları:
Xcode alətləri daxildir: UI-nin vizual dizaynı üçün Interface Builder, resursların idarə edilməsi üçün Asset Catalog, asılılıqlar üçün Swift Package Manager, vahid və UI testləri üçün Test Navigator (XCTest), App Store-da nəşr üçün Organizer. Instruments CPU, yaddaş, şəbəkə, qrafika və enerji sərfiyyatını profilləşdirməyə imkan verir. CI/CD üçün Xcode Cloud və ya üçüncü tərəf xidmətləri (GitHub Actions, Bitrise, Fastlane) istifadə olunur.
Android inkişafı Android Studio-da aparılır — Google-un IntelliJ IDEA-ya əsaslanan IDE-si. Əsas dil — Kotlin, 2017-ci ildə üstünlük verilən dil olmuşdur. Kotlin Java ilə tam uyğundur, lakin daha yığcam sintaksis, elvis-operator vasitəsilə null-təhlükəsizlik, asinxronluq üçün korutinlər və extension-funksiyalar təklif edir. Android Studio Layout Editor vizual dizayn, Google Play Services ilə Android emulyatoru, APK Analyzer və Profiler daxildir.
Əsas Android komponentləri:
Android arxitektura nümunələri: Google Repository qatı ilə MVVM tövsiyə edir. ViewModel vəziyyəti saxlayır (StateFlow), Repository məlumat mənbələrini abstraksiya edir, Use Cases biznes məntiqini inkapsulə edir. Navigation Component naviqasiya qrafiki vasitəsilə ekranlar arasında keçidləri idarə edir. Test üçün JUnit, MockK, Compose UI Test və Espresso istifadə olunur.
SwiftUI-də iOS üçün sadə tətbiqin yaradılmasını nəzərdən keçirək — SwiftData vasitəsilə məlumatların saxlanması ilə tapşırıq siyahısı. Tətbiq nativ iOS inkişafının əsas nümunələrini nümayiş etdirir: deklarativ UI, reaktiv yeniləmə, məlumatlarla iş.
import SwiftUI
import SwiftData
// 1. SwiftData ilə məlumat modeli
@Model
final class TaskItem {
var title: String
var isCompleted: Bool
var createdAt: Date
init(title: String) {
self.title = title
self.isCompleted = false
self.createdAt = Date()
}
}
// 2. Biznes məntiqi ilə ViewModel
@Observable
final class TaskViewModel {
var tasks: [TaskItem] = []
func addTask(title: String, context: ModelContext) {
let task = TaskItem(title: title)
context.insert(task)
tasks.append(task)
}
func toggleTask(task: TaskItem) {
task.isCompleted.toggle()
}
}
// 3. Tətbiqin əsas ekranı
struct ContentView: View {
@Environment(\.modelContext) private var context
@State private var viewModel = TaskViewModel()
@State private var newTaskTitle = ""
@Query private var tasks: [TaskItem]
var body: some View {
NavigationStack {
List {
Section(header: Text("Yeni tapşırıq")) {
HStack {
TextField("Ad daxil edin", text: $newTaskTitle)
Button("Əlavə et") {
addTask()
}
.disabled(newTaskTitle.isEmpty)
}
}
Section(header: Text("Tapşırıq siyahısı")) {
ForEach(tasks) { task in
HStack {
Image(systemName: task.isCompleted ? "checkmark.circle.fill" : "circle")
.onTapGesture { viewModel.toggleTask(task: task) }
Text(task.title)
.strikethrough(task.isCompleted)
Spacer()
Text(task.createdAt, style: .date)
.font(.caption)
.foregroundColor(.secondary)
}
}
.onDelete { indexSet in
for index in indexSet {
context.delete(tasks[index])
}
}
}
}
.navigationTitle("Mənim tapşırıqlarım")
}
}
private func addTask() {
guard !newTaskTitle.isEmpty else { return }
viewModel.addTask(title: newTaskTitle, context: context)
newTaskTitle = ""
}
}
Koddakı əsas nümunələr: @Model — davamlı yaddaşın avtomatik generasiyası üçün SwiftData makrosu; @Observable — UI-nin reaktiv yeniləməsi üçün Observable makrosu; @Query — SwiftData-dan məlumatların avtomatik yüklənməsi üçün property wrapper. Tətbiq biznes məntiqini idarə edən ViewModel və göstərmək üçün SwiftUI View ilə MVVM arxitekturasından istifadə edir. SwiftData model dəyişdikdə məlumatları avtomatik saxlayır — tərtibatçı SQL sorğuları yazmalı deyil.
Jetpack Compose və Room ilə Android üçün Kotlin-də analoji tətbiq. Platformalar arasında arxitektura və yanaşmalardakı fərqləri göstərir.
// 1. Entity Room — məlumat modeli
@Entity(tableName = "tasks")
data class TaskEntity(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val title: String,
val isCompleted: Boolean = false,
val createdAt: Long = System.currentTimeMillis()
)
// 2. DAO — bazaya sorğular
@Dao
interface TaskDao {
@Query("SELECT * FROM tasks ORDER BY createdAt DESC")
fun getAllTasks(): Flow<List<TaskEntity>>
@Insert
suspend fun insertTask(task: TaskEntity)
@Delete
suspend fun deleteTask(task: TaskEntity)
}
// 3. Biznes məntiqi ilə ViewModel
class TaskViewModel(private val dao: TaskDao) : ViewModel() {
val tasks: StateFlow<List<TaskEntity>> = dao
.getAllTasks()
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
fun addTask(title: String) {
viewModelScope.launch {
dao.insertTask(TaskEntity(title = title))
}
}
fun toggleTask(task: TaskEntity) {
viewModelScope.launch {
dao.insertTask(task.copy(isCompleted = !task.isCompleted))
}
}
}
// 4. Compose UI
@Composable
fun TaskScreen(viewModel: TaskViewModel = viewModel()) {
val tasks by viewModel.tasks.collectAsState()
var newTitle by remember { mutableStateOf("") }
Column(modifier = Modifier.padding(16.dp)) {
Text("Mənim tapşırıqlarım", style = MaterialTheme.typography.headlineMedium)
Row(
modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp)
) {
OutlinedTextField(
value = newTitle,
onValueChange = { newTitle = it },
label = { Text("Yeni tapşırıq") },
modifier = Modifier.weight(1f)
)
Button(
onClick = { viewModel.addTask(newTitle); newTitle = "" },
enabled = newTitle.isNotBlank()
) {
Text("Əlavə et")
}
}
LazyColumn {
items(tasks, key = { it.id }) { task ->
Row(
modifier = Modifier
.fillMaxWidth()
.clickable { viewModel.toggleTask(task) }
.padding(vertical = 4.dp),
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(checked = task.isCompleted, onCheckedChange = { viewModel.toggleTask(task) })
Text(
text = task.title,
textDecoration = if (task.isCompleted) TextDecoration.LineThrough else TextDecoration.None
)
}
}
}
}
}
iOS-dan əsas fərqlər: Room SQLite ilə iş üçün @Entity, @Dao və @Query annotasiyalarından istifadə edir; ViewModel korutinlərlə viewModelScope vasitəsilə həyat dövrünü idarə edir; StateFlow collectAsState vasitəsilə Compose UI-nin reaktiv yeniləməsini təmin edir. Android-də məlumatlar Flow vasitəsilə ötürülür — Combine Publisher-in analoqu, lakin viewModelScope vasitəsilə ekran dəyişdikdə ləğv edilir.
Native app-in üstünlükləri çarpaz platforma həlləri qarşısında bir neçə əsas aspekti əhatə edir. Performans: Metal (iOS) və Vulkan (Android) vasitəsilə GPU-ya birbaşa giriş mürəkkəb animasiyada 60 fps verir. API-ə giriş: iOS və Android-in yeni funksiyaları çıxdığı gün, freymvorkda dəstək gözləmədən əlçatandır. İstifadəçi təcrübəsi: nativ UI komponentləri (iOS-da NavigationStack, TabView, Sheet; Android-də Scaffold, NavigationBar, BottomSheet) tanış davranış təmin edir. Enerji sərfiyyatı: nativ kod fon tapşırıqlarında batareya yükünü 15–25% az sərf edir.
Native app-in çatışmazlıqları: iki ayrı komanda ehtiyacı səbəbindən inkişaf dəyəri 1.5–2 dəfə yüksəkdir. Bazar çıxış vaxtı artır: iki paralel inkişaf koordinasiya tələb edir və test həcmini ikiqat artırır. Dəstək: yeniləmələr iki platforma üçün eyni vaxtda buraxılmalıdır ki, bu da CI/CD-ni çətinləşdirir. Sadə tətbiqlər (kataloqlar, lentlər, formalar) üçün çarpaz platforma həlləri daha qənaətcil və sürətli ola bilər.
| Meyar | Native App | Cross-Platform |
|---|---|---|
| Performans | Maksimum (60 fps) | Orta (55–60 fps) |
| API-ə giriş | Tam, çıxdığı gün | Pluginlər vasitəsilə, gecikmə ilə |
| Qiymət (2 platforma) | 2 komanda × 100% | 1 komanda × 60–70% |
| İnkişaf vaxtı | 4–6 ay | 2–4 ay |
| UI/UX | Nativ, HIG/Material Design | Vahid dizayn, kompromislər |
| Test | XCTest + Espresso | Flutter Test + Detox |
| CI/CD | Xcode Cloud + Fastlane | Codemagic + Fastlane |
| Dəstək mürəkkəbliyi | İki kod bazası | Bir kod bazası |
Native app nə vaxt seçilməli: intensiv qrafikalı oyunlar və tətbiqlər (Metal, Vulkan, ARKit, ARCore); əməliyyat sisteminə dərin inteqrasiyalı tətbiqlər (Bluetooth LE, NFC, CoreBluetooth, HealthKit, Google Fit); təhlükəsizlik və sertifikatlaşdırma tələbləri olan maliyyə, tibb və korporativ tətbiqlər; hər millisaniyə gecikmənin kritik olduğu layihələr (ticarət, striminq, videozənglər). MVP, startaplar və sadə tətbiqlər üçün çarpaz platforma inkişafı daha rasional seçim ola bilər.
Tez-tez verilən suallar
Native App platformanın dillərində (Swift/Kotlin) yazılır və nativ SDK-lardan istifadə edir ki, bu da maksimum performans və cihazın bütün API-lərinə giriş verir. Çarpaz platforma tətbiqi (Flutter, React Native) ümumi koddan performans və platforma funksiyalarına girişdə kompromislərlə istifadə edir.
iOS üçün — Swift və Objective-C, Android üçün — Kotlin və Java. Swift 2014-cü ildən iOS üçün əsas dil, Kotlin isə 2017-dən Android üçün əsas dil olmuşdur. Objective-C və Java əsasən köhnə versiyaları dəstəkləyən legacy layihələrdə istifadə olunur.
Qiymət mürəkkəblikdən asılıdır: sadə tətbiq — $20000-dən $50000-dək, orta mürəkkəblik — $50000-dən $120000-dək, mürəkkəb — $120000-dən. Nativ inkişaf çarpaz platformadan 30–50% bahadır, lakin daha yaxşı performans təmin edir.
Native App yüksək performans tələbləri olan layihələr (oyunlar, AR/VR), platforma API-lərindən dərin istifadə (kamera, Bluetooth, NFC), mürəkkəb 60 fps animasiya, həmçinin maliyyə və tibb tətbiqləri üçün təhlükəsizlik tələbləri ilə seçilir.
iOS üçün Xcode (yalnız macOS-da) iOS simulyatoru və Instruments sazlama alətləri ilə istifadə olunur. Android üçün — Android Studio (Windows, macOS, Linux-da) Android emulyatoru, profilinqçi və Layout Inspector ilə.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun