Tampilan
Bab 40 — Marketing & Growth
ASO membuat orang menemukanmu ketika mereka sudah mencari. Bab ini membahas segala hal lain: bagaimana orang mengetahui aplikasimu ada, dan bagaimana pengguna yang sudah ada membawa pengguna baru.
Seperti bab sebelumnya, ini bukan tentang kode — tetapi keputusan di sini menentukan apakah aplikasi yang kamu bangun selama berbulan-bulan dipakai seratus orang atau seratus ribu.
Meluncurkan dengan benar
Godaan terbesar saat produkmu hampir selesai adalah meluncurkan sebesar mungkin, secepat mungkin. Ada begitu banyak antisipasi yang menumpuk.
Tahan godaan itu.
Alasannya praktis: sebagian besar produk belum benar-benar siap pada saat pembuatnya merasa siap. Peluncuran besar dengan aplikasi yang masih penuh bug akan menghasilkan gelombang ulasan buruk dan uninstall — dan kesan pertama di toko aplikasi sulit diperbaiki.
Ada tiga tahap peluncuran, dan urutannya penting.
┌──────────────────────────────────────────────────────────────┐
│ 1. SOFT LAUNCH (beta) │
│ Teman, keluarga, beberapa orang yang paham bidangmu │
│ Tujuan: MENDAPAT MASUKAN, bukan pengguna │
│ Durasi: sampai masukan penting habis │
└──────────────────────────┬───────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────┐
│ 2. PELUNCURAN TERBATAS │
│ Komunitas relevan, satu wilayah, satu segmen │
│ Tujuan: menguji apakah orang asing juga menyukainya │
└──────────────────────────┬───────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────┐
│ 3. PELUNCURAN BESAR │
│ Media, influencer, iklan berbayar │
│ Tujuan: pertumbuhan. Lakukan HANYA setelah tahap 1 & 2 │
└──────────────────────────────────────────────────────────────┘Soft launch
Luncurkan ke lingkaran terdekat: teman, keluarga, dan beberapa orang yang paham bidang aplikasimu.
Tujuannya bukan mendapat pengguna. Tujuannya mendapat orang yang akan mencari lubang di produkmu, mengkritiknya, dan memberitahumu apa yang membingungkan. Kritik itu bukan untuk membuatmu merasa buruk — ia adalah informasi yang paling berharga yang bisa kamu dapat pada tahap ini.
Yang perlu kamu perhatikan saat mengumpulkan masukan:
Jangan menerapkan semua saran. Beberapa masukan datang dari orang yang bukan target penggunamu. Cari pola: kalau tiga orang bingung di tempat yang sama, itu masalah nyata.
Perhatikan apa yang mereka lakukan, bukan apa yang mereka katakan. Orang sering sopan. Amati di mana mereka berhenti, di mana mereka salah ketuk, dan fitur mana yang tidak pernah mereka sentuh.
Iterasi beberapa kali. Perbaiki, minta mereka mencoba lagi, ulangi. Baru lanjut ke tahap berikutnya ketika masukan penting mulai habis.
Peluncuran terbatas
Sekarang kamu butuh orang asing — orang yang tidak punya alasan sosial untuk bersikap baik padamu.
Pilihan yang baik:
- Komunitas online yang relevan dengan aplikasimu.
- Satu wilayah geografis saja (banyak pengembang memulai di pasar kecil).
- Satu segmen pengguna yang sangat spesifik.
Yang kamu cari di tahap ini: apakah orang yang tidak mengenalmu tetap memakainya setelah seminggu? Kalau tidak, peluncuran besar hanya akan memperbesar masalah yang sama.
Peluncuran besar
Baru sekarang: media, influencer, iklan berbayar, Product Hunt.
Kuncinya adalah menumpuk semuanya di hari yang sama. Peringkat toko aplikasi sangat dipengaruhi oleh kecepatan unduhan, bukan hanya totalnya. Seribu unduhan dalam satu hari berdampak jauh lebih besar pada peringkat daripada seribu unduhan yang tersebar selama sebulan.
Virality: pengguna membawa pengguna
Ini cara pertumbuhan yang paling murah dan paling berkelanjutan. Bukan "viral di media sosial" — tetapi orang yang sudah memakai aplikasimu membagikannya ke temannya.
Ada beberapa strategi. Kamu tidak perlu memakai semuanya; pilih yang masuk akal untuk aplikasimu.
1. Buat aplikasi lebih baik ketika dipakai bersama teman
Ini yang paling kuat, karena tidak butuh permintaan sama sekali.
Kalau aplikasimu lebih menyenangkan atau lebih berguna ketika dipakai bersama orang lain, pengguna punya alasan alami untuk mengajak temannya. Kamu tidak perlu memohon.
Contohnya:
- Aplikasi kesehatan → olahraga bersama, tantangan grup.
- Game → mode multipemain, papan peringkat teman.
- Aplikasi polling → polling yang butuh banyak suara agar bermakna.
- Aplikasi keuangan → berbagi tagihan.
Pertanyaan yang perlu kamu jawab: apa yang membuat aplikasi ini lebih baik kalau temanku juga memakainya?
Kalau jawabannya "tidak ada", pertimbangkan apakah ada fitur yang bisa menciptakannya.
2. Berbagi hasil, bukan aplikasi
Orang enggan membagikan "aplikasi bagus, coba deh". Mereka senang membagikan sesuatu yang mereka buat.
dart
// pubspec.yaml
// share_plus: ^10.1.2
import 'package:share_plus/share_plus.dart';
Future<void> bagikanPolling(Poll poll) async {
final tautan = 'https://pollingkita.app/p/${poll.id}';
await Share.share(
'${poll.judul}\n\n'
'Bantu aku memutuskan — kasih suaramu di sini:\n$tautan',
subject: poll.judul,
);
}Perhatikan bahwa yang dibagikan adalah polling milik pengguna, bukan aplikasinya. Penerima mengklik karena tertarik pada isinya, lalu menemukan aplikasimu sebagai efek samping.
Membagikan gambar hasil bekerja lebih baik lagi:
dart
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter/rendering.dart';
import 'package:path_provider/path_provider.dart';
Future<void> bagikanGambarHasil(GlobalKey kunciWidget, Poll poll) async {
// Ubah widget menjadi gambar
final batas = kunciWidget.currentContext!.findRenderObject()
as RenderRepaintBoundary;
final gambar = await batas.toImage(pixelRatio: 3.0);
final byteData = await gambar.toByteData(format: ui.ImageByteFormat.png);
final bytes = byteData!.buffer.asUint8List();
// Simpan sementara
final dir = await getTemporaryDirectory();
final berkas = File('${dir.path}/hasil_${poll.id}.png');
await berkas.writeAsBytes(bytes);
await Share.shareXFiles(
[XFile(berkas.path)],
text: 'Hasil polling "${poll.judul}"\n'
'Buat pollingmu sendiri: https://pollingkita.app',
);
}Widget yang akan diubah menjadi gambar dibungkus RepaintBoundary:
dart
final _kunciHasil = GlobalKey();
RepaintBoundary(
key: _kunciHasil,
child: KartuHasilPolling(poll: poll),
)3. Deep link yang mulus
Berbagi hanya berguna kalau tautannya bekerja dengan baik. Penerima yang mengklik tautan harus langsung sampai ke isinya — bukan ke halaman beranda.
yaml
dependencies:
app_links: ^6.3.2dart
// lib/data/services/layanan_deep_link.dart
import 'dart:async';
import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart';
class LayananDeepLink {
LayananDeepLink(this.kunciNavigator);
final GlobalKey<NavigatorState> kunciNavigator;
final _appLinks = AppLinks();
StreamSubscription<Uri>? _langganan;
Future<void> mulai() async {
// Tautan yang membuka aplikasi dari keadaan tertutup
final awal = await _appLinks.getInitialLink();
if (awal != null) _tangani(awal);
// Tautan yang tiba saat aplikasi sudah berjalan
_langganan = _appLinks.uriLinkStream.listen(_tangani);
}
void _tangani(Uri uri) {
// https://pollingkita.app/p/{id}
final segmen = uri.pathSegments;
if (segmen.length >= 2 && segmen[0] == 'p') {
kunciNavigator.currentState?.pushNamed('/poll', arguments: segmen[1]);
}
}
void hentikan() => _langganan?.cancel();
}Sama seperti push notification di Bab 30, ada dua jalur yang harus ditangani: aplikasi tertutup dan aplikasi sudah berjalan.
Konfigurasi Android:
xml
<!-- android/app/src/main/AndroidManifest.xml -->
<activity ...>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="pollingkita.app" />
</intent-filter>
</activity>Kalau aplikasi belum terpasang
Deep link hanya bekerja kalau aplikasinya sudah ada di perangkat. Untuk penerima yang belum memasangnya, kamu butuh deferred deep link — mereka diarahkan ke toko aplikasi, lalu setelah memasang, dibawa langsung ke konten yang tadi diklik.
Firebase Dynamic Links dulu menyediakan ini tetapi sudah dihentikan. Alternatif yang tersedia: Branch.io, AppsFlyer OneLink, atau halaman web sederhana yang mendeteksi perangkat dan mengarahkan ke toko yang tepat.
4. Program rujukan
Beri manfaat nyata kepada kedua pihak.
❌ "Ajak temanmu!" (tidak ada alasan)
⚠️ "Ajak teman, dapat 1 kredit" (hanya pengirim untung)
✅ "Ajak teman — kalian berdua dapat 1 bulan Pro gratis"Struktur dua arah bekerja jauh lebih baik karena pengirim tidak merasa sedang memanfaatkan temannya.
dart
Future<void> bagikanKodeRujukan(String kode) async {
await Share.share(
'Aku pakai Polling Kita untuk minta pendapat teman-teman.\n\n'
'Pakai kodeku "$kode" saat daftar, dan kita berdua dapat '
'1 bulan Pro gratis:\n'
'https://pollingkita.app/undang/$kode',
);
}Rujukan mudah disalahgunakan
Orang akan membuat akun palsu untuk mendapat hadiah. Beberapa perlindungan:
- Beri hadiah setelah pengguna baru melakukan sesuatu, bukan hanya mendaftar.
- Batasi jumlah rujukan yang bisa dihadiahi per akun.
- Verifikasi lewat Cloud Function, jangan lewat aplikasi.
- Pantau pola mencurigakan — banyak pendaftaran dari satu perangkat.
5. Watermark pada konten yang keluar
Kalau aplikasimu menghasilkan gambar, video, atau berkas, sertakan nama aplikasimu di sana secara halus. Setiap kali konten itu dibagikan, aplikasimu ikut terlihat.
Kuncinya: halus. Watermark besar yang menutupi konten membuat orang enggan membagikannya sama sekali.
Website untuk aplikasi
Situs web sederhana memberi beberapa manfaat sekaligus: tempat menaruh kebijakan privasi (wajib untuk kedua toko), halaman tujuan untuk deep link, dan sumber lalu lintas dari mesin pencari.
Halaman yang perlu ada:
/ Beranda — apa aplikasi ini, tombol unduh
/privasi Kebijakan privasi (WAJIB)
/syarat Syarat & ketentuan
/dukungan Cara menghubungi (WAJIB untuk App Store)
/p/{id} Halaman konten untuk deep link
/blog Opsional, untuk SEOMembuatnya tidak harus rumit. Beberapa opsi cepat:
- Halaman statis di GitHub Pages, Netlify, atau Vercel — gratis.
- Pembuat situs seperti Carrd atau Framer.
- Flutter Web — kamu bisa membangunnya dengan keterampilan yang sudah ada.
Untuk SEO, targetkan kata kunci yang sama dengan ASO-mu. Orang yang mencari "aplikasi polling" di Google adalah orang yang sama yang mencarinya di Play Store.
Kebijakan privasi bukan opsional
Kedua toko menolak aplikasi tanpa URL kebijakan privasi yang bisa diakses publik. Ia juga harus jujur — Play Store membandingkannya dengan deklarasi Data Safety dan izin yang dipakai aplikasimu.
Kalau aplikasimu mengumpulkan email, lokasi, dan foto, semuanya harus disebutkan.
Saluran pemasaran
Media sosial
Yang bekerja: membangun sesuatu di depan umum. Membagikan proses, masalah yang kamu temui, dan bagaimana kamu menyelesaikannya menarik lebih banyak perhatian daripada mengiklankan produk jadi.
Yang tidak bekerja: memposting "unduh aplikasiku" berulang kali.
Pilih satu atau dua platform tempat target penggunamu benar-benar berada, lalu konsisten di sana. Hadir setengah-setengah di enam platform lebih buruk daripada hadir sungguhan di satu.
YouTube
Video demo yang baik bertahan lama dan terus mendatangkan pengguna selama bertahun-tahun — berbeda dari postingan media sosial yang hilang dalam sehari.
Jenis video yang bekerja:
- Demo singkat (30–60 detik) untuk halaman toko aplikasi.
- Tutorial yang menyelesaikan masalah nyata, dengan aplikasimu sebagai solusinya.
- Video di balik layar tentang cara kamu membangunnya.
Optimalkan judul dan deskripsi untuk pencarian YouTube — ia adalah mesin pencari terbesar kedua setelah Google.
Influencer
Kesalahan umum adalah mengejar akun dengan pengikut terbanyak. Yang lebih efektif adalah mikro-influencer — akun dengan 5.000 sampai 50.000 pengikut di bidang yang sangat relevan.
Alasannya: keterlibatan mereka jauh lebih tinggi, audiensnya lebih spesifik, dan biayanya jauh lebih rendah. Sering kali mereka bersedia mencoba aplikasimu gratis kalau memang relevan.
Cara menghubungi yang bekerja:
❌ "Halo, tolong promosikan aplikasi saya."
✅ "Halo [nama], saya lihat video kamu tentang [topik spesifik].
Saya baru membuat aplikasi yang menyelesaikan [masalah yang
kamu sebutkan di video itu]. Kalau tertarik, saya senang
memberikan akses Pro gratis — tanpa kewajiban apa pun untuk
membuat konten tentangnya."Yang membedakan: menunjukkan kamu benar-benar mengenal kontennya, dan tidak menuntut apa pun.
Iklan berbayar
Jangan memulai dari sini. Iklan memperkuat apa yang sudah ada — kalau retensimu buruk, iklan hanya membuatmu membayar untuk pengguna yang langsung pergi.
Syarat sebelum mulai beriklan:
- Retensi hari ke-1 di atas 25%
- Retensi hari ke-7 di atas 10%
- Kamu tahu berapa nilai satu pengguna bagimu (LTV)
- Ada cara mengukur dari mana pengguna datang
Kalau salah satu belum terpenuhi, perbaiki dulu produknya.
Ketika sudah siap:
Google Ads (Universal App Campaigns) untuk Android — kamu memberi materi iklan dan anggaran, Google mengoptimalkan penempatannya.
Apple Search Ads untuk iOS — muncul di hasil pencarian App Store. Sering punya biaya per pemasangan yang lebih rendah karena menargetkan orang yang sudah mencari.
Mulai dengan anggaran kecil untuk mengukur biaya per pemasangan, lalu tingkatkan hanya kalau angkanya masuk akal dibandingkan nilai seumur hidup pengguna.
Menjaga pengguna tetap kembali
Mendapat pengguna itu mahal. Mempertahankannya jauh lebih murah, dan lebih menentukan.
PERTUMBUHAN NYATA = akuisisi > kehilangan
Menambah 1.000 pengguna per bulan tetapi kehilangan 900
= pertumbuhan 100 per bulan
Menambah 500 per bulan dan kehilangan 100
= pertumbuhan 400 per bulanAplikasi kedua tumbuh empat kali lebih cepat dengan separuh biaya akuisisi.
Onboarding
Sebagian besar pengguna yang hilang, hilang di lima menit pertama.
❌ ONBOARDING BURUK ✅ ONBOARDING BAIK
────────────────────── ──────────────────────
Wajib daftar sebelum Boleh mencoba dulu,
melihat apa pun daftar saat diperlukan
Minta semua izin Minta izin saat fitur
di layar pertama itu benar-benar dipakai
5 layar tutorial Tunjukkan sambil jalan
Layar kosong Data contoh atau
setelah masuk ajakan yang jelasPoin kedua penting dan sering dilanggar: meminta izin lokasi, kamera, dan notifikasi sekaligus di layar pertama menyebabkan penolakan yang jauh lebih tinggi daripada memintanya saat pengguna mengklik fitur yang membutuhkannya — seperti dibahas di Bab 32.
Notifikasi yang tidak mengganggu
Push notification bisa mengembalikan pengguna, atau membuat mereka menghapus aplikasimu. Perbedaannya ada pada relevansi.
❌ "Kami merindukanmu! Buka aplikasi sekarang"
❌ "Diskon 50%! Jangan lewatkan!" (kirim setiap hari)
✅ "Polling kamu 'Makan di mana?' sudah dapat 12 suara"
✅ "Budi memberi suara pada pollingmu"
✅ "Polling kamu berakhir dalam 1 jam"Yang membedakan: notifikasi kedua tentang sesuatu yang pengguna lakukan, bukan tentang keinginanmu agar mereka kembali.
Beri pengguna kendali penuh atas jenis notifikasi yang mereka terima. Pengguna yang bisa mematikan sebagian notifikasi lebih jarang mematikan semuanya.
Mengukur retensi
Retensi D1 = pengguna yang kembali keesokan harinya
Retensi D7 = kembali dalam 7 hari
Retensi D30 = kembali dalam 30 hariAngka acuan yang umum dipakai:
| Retensi | Buruk | Sedang | Baik |
|---|---|---|---|
| D1 | < 20% | 20–35% | > 40% |
| D7 | < 8% | 8–15% | > 20% |
| D30 | < 3% | 3–8% | > 10% |
Angka ini bervariasi menurut kategori — game punya D1 lebih tinggi, aplikasi utilitas punya D30 lebih tinggi. Yang lebih penting daripada membandingkan dengan orang lain adalah memperbaiki angkamu sendiri dari waktu ke waktu.
Yang perlu diukur
Pasang analitik sejak awal, tetapi ukur hal yang benar.
dart
import 'package:firebase_analytics/firebase_analytics.dart';
final analitik = FirebaseAnalytics.instance;
// Peristiwa yang benar-benar berarti
await analitik.logEvent(
name: 'polling_dibuat',
parameters: {
'jumlah_opsi': poll.opsi.length,
'punya_gambar': poll.urlGambar != null ? 1 : 0,
'punya_lokasi': poll.lokasi != null ? 1 : 0,
},
);
await analitik.logEvent(name: 'polling_dibagikan');
await analitik.logEvent(name: 'suara_diberikan');
await analitik.logEvent(name: 'onboarding_selesai');Ukur peristiwa, bukan tampilan layar
Menghitung berapa kali sebuah layar dibuka jarang memberi tahu apa pun yang berguna.
Yang berguna adalah peristiwa yang menandakan nilai: pengguna membuat polling, membagikannya, mendapat suara pertama. Metrik ini yang menjawab "apakah aplikasiku benar-benar berguna?"
Tetapkan satu metrik utama yang paling mewakili keberhasilan aplikasimu, dan pantau itu di atas segalanya.
Ikhtisar
- Tahan godaan meluncurkan besar terlalu cepat. Urutannya: soft launch (masukan) → peluncuran terbatas (orang asing) → peluncuran besar (pertumbuhan).
- Soft launch bertujuan mendapat masukan, bukan pengguna. Cari pola dalam kritik; jangan terapkan semua saran.
- Saat peluncuran besar, tumpuk semua saluran di hari yang sama — peringkat toko dipengaruhi kecepatan unduhan, bukan hanya total.
- Virality terkuat: buat aplikasi lebih baik ketika dipakai bersama teman. Ini menghilangkan kebutuhan meminta.
- Orang membagikan hasil yang mereka buat, bukan aplikasinya. Bagikan polling, bukan "aplikasi bagus, coba deh".
- Deep link harus menangani dua jalur: aplikasi tertutup dan aplikasi sudah berjalan.
- Program rujukan harus menguntungkan kedua pihak, dan diverifikasi di server agar tidak disalahgunakan.
- Situs web wajib untuk kebijakan privasi — kedua toko menolak tanpa itu.
- Mikro-influencer (5–50 ribu pengikut) sering lebih efektif daripada akun besar: keterlibatan lebih tinggi, biaya jauh lebih rendah.
- Jangan beriklan sebelum retensi sehat. Iklan memperkuat apa yang sudah ada, termasuk kebocoran.
- Sebagian besar pengguna hilang di lima menit pertama. Izinkan mencoba sebelum daftar, dan minta izin saat fiturnya dipakai — bukan di layar pertama.
- Notifikasi yang baik tentang sesuatu yang pengguna lakukan, bukan tentang keinginanmu agar mereka kembali.
- Ukur peristiwa yang menandakan nilai, bukan tampilan layar. Tetapkan satu metrik utama.
- Retensi lebih menentukan daripada akuisisi: menambah 500 dan kehilangan 100 mengalahkan menambah 1.000 dan kehilangan 900.
Berikutnya: Bab 41 — Model Bisnis & Perlindungan IP.
Transkrip asli
Disintesis dari 3_flutter-monetize/6_launching-your-app-like-a-pro.md, 9_virality-from-inside-the-app.md, 10_website-for-your-app-with-ai.md, 11_influencer-marketing-for-apps.md, 12_additional-hacks-to-promote-your-app.md, 16_social-media-automation.md, 17_youtube-marketing-for-apps.md, 18_google-ads-for-android-app.md, 19_apple-search-ads-for-ios-app.md, dan 5_google-seo-for-your-app.md. Lihat PDF Monetize.