Lompat ke konten

Membuat Penawaran Awal Pembelian iOS

GitHub

Tawaran awal memungkinkan Anda menyediakan pengguna yang layak dengan uji coba gratis atau harga awal diskon untuk mengurangi hambatan masuk dan meningkatkan konversi langganan.

Tawaran awal adalah salah satu alat paling efektif untuk meningkatkan basis pelanggan Anda. Mereka memungkinkan pengguna untuk:

  • Mencoba fitur premium Anda dengan risiko nol
  • Mengalami nilai sebelum berkomitmen
  • Mulai dari titik harga yang lebih rendah
  • Membangun kepercayaan pada produk Anda

iOS mendukung tiga jenis tawaran awal:

Pelanggan mendapatkan akses gratis selama periode tertentu. Setelah masa uji coba berakhir, mereka akan dikenakan tarif standar jika mereka tidak membatalkan.

Contoh:

  • 7 hari gratis
  • 14 hari gratis
  • 1 bulan gratis

Terbaik untuk:

  • Langganan berharga tinggi
  • Aplikasi yang kaya fitur
  • Membangun kebiasaan pengguna

Pelanggan membayar harga diskon yang ditetapkan untuk periode pengenalan.

Contoh:

  • $1.99 untuk 2 bulan (kemudian $9.99/bulan)
  • $9.99 untuk 3 bulan (kemudian $19.99/bulan)

Terbaik untuk:

  • Tanda komitmen
  • Kebutuhan arus kas
  • Menguji sensitivitas harga

Pelanggan membayar harga yang lebih rendah untuk beberapa siklus pembayaran.

Contoh:

  • 1,99$/bulan selama 3 bulan (kemudian 9,99$/bulan)
  • 4,99$/bulan selama 6 bulan (kemudian 14,99$/bulan)

Terbaik untuk:

  • Komitmen bertahap
  • Pengujian nilai jangka panjang
  • Mengurangi risiko yang dipahami

Pengguna hanya dapat menerima tawaran intro jika mereka:

  • Tidak pernah menerima tawaran intro untuk produk ini sebelumnya
  • Tidak pernah menerima tawaran intro untuk produk apa pun di kelompok langganan yang sama
  • Belum pernah memiliki langganan aktif pada produk ini

Anda harus terlebih dahulu membuat langganan auto-renewable sebelum menambahkan penawaran pengenalan.

  1. Navigasikan ke Langganan

    Di App Store Connect, pergi ke bagian Monetize > Langganan dan pilih langganan yang ingin Anda tambahkan tawaran ke.

  2. Tambah Harga Langganan

    Klik tombol + di samping “Harga Langganan” untuk membuka modal harga.

  3. Buat Tawaran Awal

    Pilih “Buat tawaran awal” dari pilihan.

    Buat tawaran awal

  4. Konfigurasi Negara dan Tanggal Mulai

    Negara dan Wilayah: Pilih di mana penawaran akan tersedia

    • Pilih semua negara untuk mencapai target yang lebih luas
    • Atau batasi ke pasar tertentu untuk tes

    Tanggal Mulai: Ketika penawaran menjadi tersedia

    • Dapat segera atau dijadwalkan untuk masa depan
    • Bermanfaat untuk mengkoordinasikan dengan kampanye pemasaran

    Tanggal Akhir (Opsional): Ketika penawaran berakhir

    • Biarkan kosong untuk ketersediaan yang berlangsung
    • Atur tanggal untuk promosi sementara
  5. Pilih Tipe Penawaran

    Pilih salah satu dari tiga tipe penawaran:

    Gratis (Uji Coba Gratis)

    • Pilih Durasi (hari, minggu, bulan)
    • Contoh: 7 hari, 2 minggu, 1 bulan

    Bayar Secara Langsung

    • Tentukan harga pembayaran tunggal
    • Tentukan durasi yang ditutupi oleh pembayaran
    • Contoh: $1.99 selama 2 bulan

    Bayar Sesuai Penggunaan

    • Tentukan harga diskon per periode
    • Atur jumlah periode
    • Contoh: $2,99/bulan selama 3 bulan
  6. Tinjau dan Konfirmasi

    Tinjau ringkasan menampilkan:

    • Tipe dan durasi penawaran
    • Detail harga
    • Harga reguler setelah periode intro
    • Tanggal dan negara ketersediaan
  7. Simpan

    Klik Simpan untuk membuat penawaran intro. Penawaran ini akan tersedia untuk diuji segera dalam mode sandbox.

Type: Free
Duration: 7 days
Then: $9.99/month

Perjalanan Pengguna:

  • Hari 1-7: Akses gratis
  • Hari 8: Pembayaran pertama sebesar $9.99
  • Pembayaran bulanan terus berlanjut

Contoh 2: Diskon Awal Periode Terdiskon

Judul Bagian “Contoh 2: Diskon Awal Periode Terdiskon”
Type: Pay Up Front
Price: $4.99
Duration: 3 months
Then: $9.99/month

Perjalanan Pengguna:

  • Hari 1: Dibebankan $4.99
  • Akses 90 hari
  • Hari 91: Dibebankan $9.99/bulan
Type: Pay As You Go
Price: $2.99/month
Periods: 6 months
Then: $9.99/month

Perjalanan Pengguna:

  • Bulan 1-6: $2.99/bulan
  • Bulan 7+: $9.99/bulan

Plugin native-purchases secara otomatis mengelola presentasi dan kelayakan tawaran awal:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch products with intro offer information
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['com.yourapp.premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
const product = products[0];
// Display intro offer details (StoreKit sends localized metadata)
if (product.introductoryPrice) {
console.log('Intro price:', product.introductoryPriceString);
console.log('Intro period:', product.introductoryPricePeriod);
console.log('Intro cycles:', product.introductoryPriceCycles);
console.log('Regular price:', product.priceString);
} else {
console.log('No intro offer configured');
}
// Purchase (StoreKit automatically applies intro pricing if eligible)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Subscription active, receipt length:', transaction.receipt?.length);
await validateReceiptOnServer(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}

Menampilkan Tawaran Awal kepada Pengguna

Judul Bagian “Menampilkan Tawaran Awal kepada Pengguna”

Mengemukakan Kepastian:

Try Premium Free for 7 Days
Then $9.99/month. Cancel anytime.

Tegaskan Hemat:

Start at Just $1.99
Get 3 months of Premium for only $1.99
Then $9.99/month

Komunikasi Transparan:

Your Free Trial
• Access all premium features
• No charge for 7 days
• $9.99/month after trial
• Cancel anytime, even during trial
function formatIntroOffer(product: any): string {
if (!product.introductoryPrice) {
return `${product.priceString} per ${product.subscriptionPeriod}`;
}
const intro = product.introductoryPrice;
const regular = product.priceString;
if (intro.price === 0) {
// Free trial
return `Try free for ${intro.periodString}, then ${regular}`;
} else if (intro.cycles === 1) {
// Pay up front
return `${intro.priceString} for ${intro.periodString}, then ${regular}`;
} else {
// Enterprise
return `${intro.priceString} for ${intro.cycles} ${intro.periodString}s, then ${regular}`;
}
}
  • 3-7 hari: Aplikasi untuk Keputusan Cepat, Game
  • 7-14 hari: Standar untuk Aplikasi yang Banyak
  • 14-30 hari: Alat-alat kompleks, aplikasi profesional
  • 30+ hari: Bisnis B2B atau perusahaan besar dengan nilai tinggi
  • $0.99-$1.99: Batasan masuk yang sangat rendah, cocok untuk pengujian
  • 50% diskon: Nilai yang dirasakan kuat
  • Bulan pertama gratis: Pola yang umum, familiar
  • Sebelum trial berakhir: Ingatkan pengguna tentang pembayaran yang akan datang
  • Tunjukkan nilai: Tampilkan statistik penggunaan, prestasi
  • Pembatalan mudah: Bangun kepercayaan dengan proses transparan

Gunakan pengujian sandbox untuk memverifikasi perilaku:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// In sandbox mode, accelerated subscription durations apply:
// - 3 days free trial = 3 minutes
// - 1 week free trial = 3 minutes
// - 1 month free trial = 5 minutes
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
// Purchase with intro offer
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Intro purchase transaction:', transaction.transactionId);
// Wait for accelerated renewal
setTimeout(async () => {
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find((purchase) => purchase.productIdentifier === 'premium_monthly');
console.log('After trial state:', premium?.subscriptionState);
}, 180000); // 3 minutes for weekly trial
  • Tawaran intro satu kali per pengguna per kelompok langganan (seumur hidup)
  • Hanya berlaku untuk pelanggan baru
  • Tidak dapat digunakan lagi setelah pembatalan
  • Tidak tersedia untuk peningkatan langganan/krossgrader
  • introductoryPrice menampilkan detail tawaran intro
  • eligibility metode memeriksa apakah pengguna memenuhi syarat
  • Diterapkan secara otomatis pada waktu pembelian
  • Tidak perlu metode pembelian khusus
  • Hanya satu penawaran intro aktif per langganan pada waktu yang sama
  • Tidak dapat dikombinasikan dengan jenis diskon lain
  • Tidak dapat mengubah aturan kelayakan
  • Apple mengontrol pengecekan kelayakan

Penawaran intro tidak menampilkan:

  • Cek jika penawaran telah diaktifkan di App Store Connect
  • Pastikan pengguna belum menggunakan penawaran intro sebelumnya
  • Pastikan pengguna belum berlangganan ke sesuatu di grup
  • Tes dengan akun sandbox baru

Cek kelayakan gagal:

  • Tunggu sinkronisasi App Store (dapat memakan waktu 2-3 jam)
  • Pastikan ID produk benar
  • Periksa konfigurasi kelompok langganan
  • Tes di sandbox dengan akun tes segar

Harga yang salah menampilkan:

  • Periksa pengaturan harga regional
  • Pastikan konversi mata uang
  • Pastikan tanggal penawaran masih aktif
  • Refresh informasi produk

Masalah tes sandbox:

  • Gunakan durasi yang dipercepat (3 menit = 1 minggu)
  • Buat akun uji coba baru untuk setiap uji coba
  • Tunggu sampai uji coba selesai secara alami
  • Periksa hitungan perpanjangan (maks 6 di sandbox)
  • Tingkat penerimaan tawaran promo awal
  • Konversi dari uji coba ke pembayaran
  • Penghentian selama uji coba
  • Pertahankan setelah pertama kali dikenakan biaya
  • Dampak pendapatan
  • Pengenalan gratis vs. berbayar
  • Variasi panjang uji coba
  • Persentase diskon
  • Pembayaran tunggal vs. diskon berulang
// Track offer performance
analytics.track('intro_offer_displayed', {
product_id: product.identifier,
offer_type: product.introductoryPriceType,
offer_duration: product.introductoryPricePeriod
});
analytics.track('intro_offer_accepted', {
product_id: product.identifier
});
// Monitor conversion
NativePurchases.addListener('transactionUpdated', (transaction) => {
if (transaction.productIdentifier === product.identifier && transaction.isActive) {
analytics.track('trial_converted', {
transactionId: transaction.transactionId,
productId: transaction.productIdentifier,
});
}
});
  • Konfigurasi pengujian sandbox untuk menguji tawaran intro
  • Tetapkan tawaran promosi untuk kampanye win-back
  • Implementasikan analitis langganan
  • Buat kampanye pemasaran yang sasaran

Untuk informasi lebih lanjut, lihat dokumentasi resmi Apple tentang tawaran intro.

Lanjutkan dari Buat Tawaran Intro iOS Langganan

Bagian berjudul “Lanjutkan dari Buat Tawaran Intro iOS Langganan”

Jika Anda menggunakan Buat Penawaran Pembelian iOS Introductif untuk merencanakan pembayaran dan pembelian, hubungkannya dengan Menggunakan @capgo/native-purchases untuk kemampuan asli dalam Menggunakan @capgo/native-purchases, Harga Capgo untuk alur kerja produk dalam Harga Capgo, Sistem Pembayaran untuk detail implementasi dalam Sistem Pembayaran, @capgo/native-purchases untuk detail implementasi dalam @capgo/native-purchases, dan Mulai Membuat untuk detail implementasi dalam Mulai Membuat.