Langsung ke konten

Membuat langganan iOS yang diperpanjang otomatis

GitHub

Langganan auto-renewable memberikan akses berulang ke konten, layanan, atau fitur premium di aplikasi iOS Anda. Panduan ini akan memandu Anda membuat langganan di App Store Connect.

Langganan auto-renewable akan diperbarui secara otomatis di akhir setiap periode penagihan sampai pengguna membatalkannya. Ini sangat cocok untuk:

  • Konten dan fitur premium
  • Pengalaman bebas iklan
  • Penyimpanan cloud dan sinkronisasi
  • Layanan streaming
  • Alat dan utilitas profesional

Sebelum membuat langganan, Anda harus:

  1. Buat grup langganan untuk mengatur langganan Anda
  2. Memiliki keanggotaan Apple Developer Program yang aktif
  3. Lengkapi informasi perbankan dan pajak di App Store Connect
  1. Buka menu Subscriptions

    Di App Store Connect, pilih aplikasi Anda dan buka Monetisasi > Langganan.

    Pilih grup langganan Anda atau buat baru jika perlu.

    Navigasi ke subscriptions

  2. Buat Langganan Baru

    Klik + ikon di samping grup langganan Anda untuk menambahkan langganan baru.

  3. Isi Informasi Dasar

    Nama Referensi: Nama deskriptif untuk penggunaan internal (tidak ditampilkan ke pelanggan)

    • Contoh: “Premium Monthly”, “Ultimate Annual”, “Basic Plan”

    ID Produk: ID unik untuk langganan ini (tidak dapat diubah setelahnya)

    • Format: com.yourcompany.yourapp.premium_monthly
    • Gunakan nama deskriptif huruf kecil dengan underscore
    • Wajib untuk mengonfigurasi plugin native-purchases

    Isi detail langganan

  4. Konfigurasi Durasi

    Pilih durasi langganan dari opsi yang tersedia:

    • 1 minggu
    • 1 bulan
    • 2 bulan
    • 3 bulan
    • 6 bulan
    • 1 tahun

    Durasi menentukan seberapa sering pengguna ditagih.

  5. Atur Harga

    Klik Tambah Harga Langganan untuk konfigurasi harga:

    Wilayah Utama: Pilih pasar utama Anda (biasanya negara Anda)

    Harga: Atur harga langganan

    • Apple akan mengonversi ke mata uang lain secara otomatis
    • Pilih dari tier harga Apple
    • Pertimbangkan nilai produk dan harga pasar

    Konfigurasi harga

  6. Family Sharing (Opsional)

    Tentukan apakah ingin mengaktifkan Family Sharing, yang memungkinkan hingga 6 anggota keluarga mengakses langganan.

    Aktifkan jika:

    • Konten sesuai untuk penggunaan keluarga
    • Ingin meningkatkan value proposition
    • Model bisnis Anda mendukungnya

    Jangan aktifkan jika:

    • Langganan hanya untuk penggunaan individu
    • Konten dipersonalisasi untuk pengguna
    • Ingin memaksimalkan revenue per user
  7. Tambah Lokalisasi

    Tambahkan informasi tampilan langganan dalam semua bahasa yang didukung aplikasi Anda:

    Nama Tampilan Langganan: Nama yang dilihat pelanggan (mis. “Premium Bulanan”)

    Deskripsi: Deskripsi singkat mengenai apa saja yang termasuk dalam langganan ini

    • Buat ringkas dan fokus pada manfaat
    • Sebutkan fitur utama
    • Tonjolkan nilai jual

    Tambahkan lokalisasi

  8. Gambar Promosi App Store (Opsional)

    Upload gambar promosi untuk langganan ini (312x390 piksel):

    • Tampil di halaman langganan App Store
    • Harus sesuai dengan desain aplikasi Anda
    • Sertakan nama langganan agar lebih jelas
  9. Simpan dan Kirim

    Klik Simpan untuk membuat langganan.

    Untuk Langganan Pertama:

    • Harus dikirim bersama versi aplikasi baru
    • Sertakan dalam pengajuan App Store berikutnya
    • Tidak dapat dikirim secara mandiri

    Untuk Langganan Berikutnya:

    • Bisa langsung diajukan dari halaman Subscriptions
    • Tidak butuh versi aplikasi baru
    • Tersedia setelah langganan pertama disetujui

Langganan Anda akan memiliki salah satu status berikut:

StatusDeskripsiBisa Diuji?
Metadata HilangSetup Belum LengkapYa (sandbox)
Siap DikirimSelesai tapi belum dikirimYa (sandbox)
Menunggu ReviewSudah dikirim ke AppleYa (sandbox)
Sedang DireviewSedang ditinjau AppleYa (sandbox)
DisetujuiTersedia untuk dibeliYa
DitolakPerlu perubahanYa (sandbox)

Setelah dibuat, referensikan langganan tersebut di aplikasi Anda menggunakan product ID:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch subscription products direct from StoreKit
const { products } = await NativePurchases.getProducts({
productIdentifiers: [
'com.yourcompany.yourapp.premium_monthly',
'com.yourcompany.yourapp.premium_annual',
],
productType: PURCHASE_TYPE.SUBS,
});
products.forEach((product) => {
console.log(`${product.title}: ${product.priceString}`);
console.log(`Duration: ${product.subscriptionPeriod}`);
console.log(`Description: ${product.description}`);
});
// Purchase a subscription (StoreKit 2 automatically handles intro pricing and offers)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourcompany.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID:', transaction.transactionId);
// StoreKit receipts are included on iOS for server-side validation
await sendReceiptToBackend(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}
// Check subscription status using the store's data
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find(
(purchase) => purchase.productIdentifier === 'com.yourcompany.yourapp.premium_monthly',
);
if (premium?.isActive) {
console.log('Expires:', premium.expirationDate);
console.log('Will renew:', premium.willCancel === false);
console.log('Store state:', premium.subscriptionState);
unlockPremiumFeatures();
} else {
showPaywall();
}

Jika langganan App Store Connect Anda dikonfigurasi dengan paket penagihan bulanan dan komitmen 12 bulan, StoreKit dapat mengembalikan detail harga tambahan untuk produk tersebut. Gunakan detail tersebut untuk menampilkan biaya bulanan, total harga komitmen, dan periode komitmen penuh sebelum pembelian.

const yearlyProduct = products.find(
(product) => product.identifier === 'com.yourcompany.yourapp.premium_annual',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);
if (yearlyProduct && monthlyCommitment) {
console.log('Monthly charge:', monthlyCommitment.billingDisplayPrice);
console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);
await NativePurchases.purchaseProduct({
productIdentifier: yearlyProduct.identifier,
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
});
}

Untuk alur paywall dan entitlement lengkap, lihat Paket penagihan komitmen bulanan iOS.

  • Paket bulanan: Hambatan masuk lebih rendah, membangun kebiasaan
  • Paket tahunan: Nilai lebih baik, LTV lebih tinggi, churn lebih rendah
  • Berbagai tingkatan tier: Basic, Premium, Ultimate untuk segmen user berbeda
  • Analisis kompetitif: Riset harga aplikasi serupa
  • Gunakan penamaan yang konsisten: company.app.tier_duration
  • Sertakan tier dan durasi dalam ID: premium_monthly, ultimate_annual
  • Jangan ubah product ID (bersifat permanen)
  • Dokumentasikan semua product ID untuk tim Anda
  • Aktifkan untuk aplikasi keluarga (game, edukasi, hiburan)
  • Pertimbangkan dampaknya terhadap pendapatan
  • Uji perilaku sharing secara menyeluruh
  • Informasikan fitur sharing dalam materi marketing
  • Terjemahkan semua nama dan deskripsi langganan
  • Pertimbangkan perbedaan harga regional
  • Uji tampilan di semua bahasa yang didukung
  • Gunakan bahasa marketing yang sesuai budaya
  • Jaga konsistensi gaya visual
  • Sertakan nama langganan dan manfaat utama
  • Perbarui untuk promosi musiman
  • Sesuaikan dengan bahasa desain aplikasi

Common Subscription Patterns

Bagian berjudul “Pola Langganan Umum”
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)
- Basic Monthly: $4.99
- Premium Monthly: $9.99
- Ultimate Monthly: $19.99
- Basic Annual: $49.99
- Premium Annual: $99.99
- Ultimate Annual: $199.99
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

Subscription tidak muncul di aplikasi:

  • Pastikan product ID sudah sama persis (case-sensitive)
  • Cek apakah subscription sudah masuk ke subscription group
  • Pastikan bundle identifier sesuai dengan App Store Connect
  • Tunggu 2-3 jam setelah membuat product

Gagal submit subscription:

  • Lengkapi semua field wajib (nama, deskripsi, harga)
  • Tambahkan minimal satu lokalisasi
  • Pastikan info bank/pajak sudah disetujui
  • Cek apakah ini langganan pertama (butuh versi app)

Toggle Family Sharing nonaktif:

  • Sudah aktif (tidak bisa dinonaktifkan)
  • Cek di detail langganan
  • Hubungi Apple Support jika bermasalah

Tier harga tidak tersedia:

  • Mungkin dibatasi di wilayah tertentu
  • Pilih tier alternatif
  • Hubungi Apple untuk pertanyaan harga

Error “Invalid Product ID”:

  • Harus berformat reverse domain
  • Tidak boleh ada spasi atau karakter spesial
  • Periksa typo
  • Pastikan ID unik di semua produk

Untuk detail lebih lanjut, lihat dokumentasi resmi Apple tentang langganan yang diperpanjang otomatis.

Lanjutkan dari membuat langganan iOS yang diperpanjang otomatis

Bagian berjudul “Lanjutkan dari membuat langganan iOS yang diperpanjang otomatis”

Jika Anda menggunakan Membuat langganan iOS yang diperpanjang otomatis untuk merencanakan persetujuan store dan distribusi, hubungkan dengan Menggunakan @capgo/native-purchases untuk kemampuan native saat menggunakan @capgo/native-purchases, @capgo/capacitor-in-app-review untuk detail implementasi di @capgo/capacitor-in-app-review, Menggunakan @capgo/capacitor-in-app-review untuk kapabilitas native di bagian Menggunakan @capgo/capacitor-in-app-review, @capgo/capacitor-native-market untuk detail implementasi di @capgo/capacitor-native-market, dan Menggunakan @capgo/capacitor-native-market untuk kemampuan native di Menggunakan @capgo/capacitor-native-market.