Belajar NativePHP - Build & Distribusi iOS
Episode 18 of 28

Belajar NativePHP - Build & Distribusi iOS

Membangun aplikasi iOS dengan native:build ios, memahami signing certificates & provisioning profiles di Xcode, serta mendistribusikan build pertama ke TestFlight untuk internal dan external testing.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Setelah di episode 17 kita membangun desktop app dengan Electron, pada episode ini kita masuk ke build dan distribusi iOS: proses mengubah kode Laravel menjadi .ipa yang bisa dijalankan di iPhone, dan mengirimkannya ke TestFlight untuk testing. Build iOS adalah salah satu proses paling kompleks di mobile development karena menyangkut signing, provisioning, dan Apple's review ecosystem.

Apple Developer Account

Sebelum build iOS untuk perangkat nyata (bukan simulator), kalian butuh Apple Developer Program ($99/tahun). Tanpa ini, kalian hanya bisa build ke simulator atau perangkat terdaftar (max 3 perangkat, 7 hari berlaku).

Cek signing identity
security find-identity -v -p codesigning

Pastikan certificate "Apple Development" atau "Apple Distribution" muncul di daftar.

Signing Certificates

Jenis Certificate

CertificateUntukDi mana
Apple DevelopmentDevelopment/debug buildXcode (auto)
Apple DistributionApp Store / Ad HocDeveloper Console
Apple Push NotificationPush notificationDeveloper Console

Membuat Distribution Certificate

  1. Masuk ke Apple Developer Console → Certificates, Identifiers & Profiles.
  2. Klik "+" → Pilih "App Store and Ad Hoc" → Ikuti wizard.
  3. Upload CSR (Certificate Signing Request) dari Keychain Access.
  4. Download .cer file dan double-click untuk install ke Keychain.

Auto-Signing di Xcode

Xcode mendukung automatic signing — memilih dan mengelola certificate & provisioning profile secara otomatis:

resources/native/ios/NativePHPApp.xcodeproj/project.pbxproj (snippet)
/* Begin PBXProject section */
    PROJECT_BUILD_SETTINGS = {
        CODE_SIGN_STYLE = Automatic;
        DEVELOPMENT_TEAM = "YOUR_TEAM_ID";
        PROVISIONING_PROFILE_SPECIFIER = "";
    };

Set DEVELOPMENT_TEAM ke Team ID kalian (terlihat di Developer Console), dan Xcode akan mengelola sisanya.

Provisioning Profiles

Provisioning profile menghubungkan certificate, app ID, dan device:

ProfileTipeKapan dipakai
DevelopmentDebugDevelopment di device fisik
Ad HocReleaseDistribusi ke device terdaftar (max 100)
App StoreReleaseSubmit ke App Store
EnterpriseReleaseIn-house distribution (Enterprise account)

Xcode automatic signing membuat provisioning profile otomatis. Jika perlu manual, generate di Developer Console dan download ke Xcode.

Build iOS

Menggunakan Artisan Command

Build release untuk iOS
php artisan native:build ios --release

Command ini:

  1. Mengkompilasi aset Laravel (Blade, Livewire, Tailwind).
  2. Build proyek Xcode dengan Release configuration.
  3. Sign dengan certificate dan provisioning profile.
  4. Menghasilkan file .ipa.

Build di Xcode (Manual)

Buka proyek di Xcode untuk build manual
open resources/native/ios/NativePHPApp.xcodeproj

Di Xcode:

  1. Pilih target NativePHPApp.
  2. Set Signing & Capabilities → pilih Team, Bundle Identifier.
  3. Pilih device/simulator sebagai destination.
  4. Product → Archive (untuk distribusi).

Output Build

plaintext
build/
├── NativePHPApp.xcarchive    ← Archive untuk distribusi
└── Export/
    └── NativePHPApp.ipa      ← File yang diupload ke TestFlight

Distribusi ke TestFlight

Upload ke App Store Connect

Upload .ipa ke App Store Connect
xcodebuild -exportArchive \
    -archivePath build/NativePHPApp.xcarchive \
    -exportOptionsPlist ExportOptions.plist \
    -exportPath build/Export

Atau gunakan altool / Transporter dari macOS:

Upload via altool
xcrun altool --upload-app \
    --type ios \
    --file build/Export/NativePHPApp.ipa \
    --apiKey YOUR_API_KEY \
    --apiIssuer YOUR_ISSUER_ID

TestFlight Internal Testing

  1. Build terupload ke App Store Connect → TestFlight tab.
  2. Tunggu proses processing (~10-30 menit).
  3. Add internal testers (tim development, max 100 orang).
  4. Tester menerima email undangan → install via TestFlight app di iPhone.

TestFlight External Testing

  1. Setelah internal testing stabil, buka external testing.
  2. Add external tester (bisa email, public link, atau CSV).
  3. Apple melakukan Beta App Review (~24 jam).
  4. Setelah disetujui, tester bisa install.

Warning

Setiap build yang di-upload ke TestFlight memiliki expired date (biasanya 90 hari). Setelah expired, build tidak bisa diinstall lagi. Upload build baru secara berkala untuk menjaga testing tetap jalan.

Praktik: Build Pertama ke TestFlight

Full workflow build iOS
# 1. Pastikan environment siap
php -v && composer --version
 
# 2. Install dependencies
composer install --no-dev --optimize-autoloader
npm install && npm run build
 
# 3. Build iOS release
php artisan native:build ios --release
 
# 4. Upload ke TestFlight
xcrun altool --upload-app \
    --type ios \
    --file build/Export/NativePHPApp.ipa
 
# 5. Tambah tester di App Store Connect

Penutup

Inti yang harus dibawa pulang:

  • Apple Developer Program ($99/tahun) dibutuhkan untuk distribusi ke device nyata.
  • Signing certificates: Apple Development (debug) dan Apple Distribution (release).
  • Provisioning profiles: Development, Ad Hoc, App Store — Xcode auto-signing mengelola otomatis.
  • native:build ios --release menghasilkan file .ipa untuk distribusi.
  • TestFlight: internal testing (instant) dan external testing (perlu Beta App Review).

Di episode 19 selanjutnya, kita akan membahas Build & Distribusi Android — Gradle release build, keystore signing, AAB untuk Play Console, serta upload ke internal testing track. Sampai jumpa di episode 19!