# Growth 4: Onboarding va Aktivatsiya — Time-to-Value, Drop-off Funnellari va Ruxsatlar Strategiyasi

> **Holat:** 2026-yil sentabr. Yangi foydalanuvchilarning 70% dan ortig'i birinchi 3 daqiqa ichida ilovani tark etadi. Onboarding — bu shunchaki 3 ta chiroyli rasm (slayd) emas. Bu foydalanuvchini **Time-to-Value (birinchi qiymatga yetishish)** nuqtasiga eng kam ishqalanish (friction) bilan olib boruvchi muhandislik tizimidir. Ushbu darsda zamonaviy onboarding arxitekturasi va tizim ruxsatlarini olish strategiyalari tahlil qilinadi.

## Mundarija

1. [Onboarding turlari: Slayderlar vs Interaktiv Tanlov (Quiz)](#turlari)
2. [Time-to-Value (TTV) qisqartirish tamoyillari](#ttv)
3. [Tizim ruxsatlari (Push, Tracking, Camera): Pre-Permission strategiyasi](#ruxsatlar)
4. [Onboarding Voronkasi (Funnel Drop-off) tahlili](#funnel)
5. [Swift'da xavfsiz Pre-Permission boshqaruvi](#swift-permission)
6. [Amaliy Python: Voronka tahlili va to'siqlarni (Bottlenecks) topish](#python-funnel)
7. [Xulosa](#xulosa)
8. [Manbalar](#manbalar)

---

## 1. Onboarding turlari: Slayderlar vs Interaktiv Tanlov (Quiz) {#turlari}

Ilovalar tajribasida 3 xil onboarding modeli uchraydi:

| Model | Qanday ishlaydi | Konversiya samarasi |
|---|---|---|
| **Klassik Slayder (Carousel)** | 3 ta rasm va "Keyingi" tugmasi | **Eng past (deyarli 0%)**. Foydalanuvchilar o'qimasdan "O'tkazib yuborish"ni bosadi. |
| **Interaktiv Harakat (Learning by doing)** | Birinchi vazifani darhol boshlash | **Yuqori**. Foydalanuvchi ilova vazifasini zudlik bilan tushunadi. |
| **Shaxsiylashtirilgan Quiz (Duolingo uslubi)** | 3-5 ta savol (maqsadi, darajasi, vaqti) | **Eng yuqori**. Psixologik jalb etish (Endowed Progress) hisobiga to'lovga tayyorlik oshadi. |

---

## 2. Time-to-Value (TTV) qisqartirish tamoyillari {#ttv}

**Time-to-Value** — ilovani o'rnatgandan boshlab uning asosiy foydasini (Aha moment) his qilguncha ketgan soniyalar miqdori.

TTV'ni kamaytirish qoidalari:
1. **Majburiy ro'yxatdan o'tishni orqaga surish:** Foydalanuvchiga avval mehmon (Guest mode) rejimida ilovani ko'rishga ruxsat bering.
2. **Sekin-asta to'ldirish (Progressive Profiling):** Barcha savollarni bir vaqtda bermasdan, kerak bo'lganda so'rash.
3. **Muvaffaqiyat tuyg'usi (Endowed Progress Effect):** Birinchi qadamni tizimning o'zi bajarib berishi (masalan, "Hisobingiz 25% tayyor!").

---

## 3. Tizim ruxsatlari (Push, Tracking, Camera): Pre-Permission strategiyasi {#ruxsatlar}

iOS'da Apple'ning tizim ruxsat dialogi (System Permission Alert) **faqat bir marta** ko'rsatiladi. Agar foydalanuvchi "Rad etish" (Don't Allow)ni bossa, siz uni qayta ko'rsata olmaysiz — uni faqat sozlamalarga jo'natish qoladi (bu esa 95% konversiya yo'qotilishiga olib keladi).

### Pre-Permission (Soft Prompt) Qoidasi:
Tizim dialogidan oldin doimo o'zingizning chiroyli UI ekranchangizni chiqaring:

```text
Sizning Ekranchangiz (Soft Prompt) ──► Foydalanuvchi "Keyinroq" dedi ──► Tizim dialogi ko'rsatilmaydi! (Zaxirada qoladi)
                 │
                 ▼
 Foydalanuvchi "Ha, xabardor qiling" dedi ──► Apple Tizim Dialogi ──► 85%+ Konversiya!
```

---

## 4. Onboarding Voronkasi (Funnel Drop-off) tahlili {#funnel}

Har bir ekranga telemetriya hodisasi qo'yiladi:
- `onboarding_step_1_viewed`
- `onboarding_step_2_quiz_answered`
- `onboarding_step_3_push_prompt`
- `onboarding_completed`

Eng ko'p foydalanuvchi yo'qotilayotgan (drop-off) qadam asosiy diqqat markazida bo'ladi.

---

## 5. Swift'da xavfsiz Pre-Permission boshqaruvi {#swift-permission}

```swift
import UserNotifications
import UIKit

@MainActor
public final class NotificationPermissionService {
  public static let shared = NotificationPermissionService()

  public func requestPushNotification() async -> Bool {
    let center = UNUserNotificationCenter.current()
    do {
      let granted = try await center.requestAuthorization(options: [.alert, .sound, .badge])
      return granted
    } catch {
      return false
    }
  }
}
```

---

## 6. Amaliy Python: Voronka tahlili va to'siqlarni (Bottlenecks) topish {#python-funnel}

Quyidagi skript har bir onboarding qadamidagi drop-off (yo'qotish) ko'rsatkichini hisoblab beradi:

```python
def analyze_funnel(steps):
    print("Onboarding voronkasi tahlili:")
    initial_users = steps[0][1]

    for i in range(len(steps) - 1):
        step_name, current_count = steps[i]
        next_name, next_count = steps[i+1]

        conversion = (next_count / current_count) * 100
        overall_conversion = (next_count / initial_users) * 100
        drop_off = 100 - conversion

        print(f"  {step_name} -> {next_name}:")
        print(f"    Konversiya: {conversion:.1f}% | Yo'qotish (Drop-off): {drop_off:.1f}% | Jami: {overall_conversion:.1f}%")

funnel_data = [
    ("1. Welcome Ekrani", 10000),
    ("2. Maqsadni Tanlash", 8200),
    ("3. Push Ruxsatini So'rash", 4100),  # Eng katta to'siq (50% drop-off!)
    ("4. Birinchi Darsni Boshlash", 3800)
]

analyze_funnel(funnel_data)
```

---

## 7. Xulosa {#xulosa}

- Zerikarli slayderlarni olib tashlang va foydalanuvchini interaktiv savollar orqali jalb qiling.
- Tizim ruxsatlarini to'g'ridan-to'g'ri chaqirmang — Soft Prompt orqali birinchi bo'lib qiymatni tushuntiring.
- Voronka tahlili orqali eng ko'p odam chiqib ketayotgan to'siqni topib, tajribalar o'tkazing.

---

## 8. Manbalar {#manbalar}

1. [Reforge — The Three Types of Onboarding](https://www.reforge.com/)
2. [Apple Human Interface Guidelines — Requesting Permissions](https://developer.apple.com/design/human-interface-guidelines/requesting-permission)
3. [Nielsen Norman Group — Mobile Onboarding Design](https://www.nngroup.com/articles/mobile-onboarding/)
