iOS credentials

Open your app's Settings → Credentials and click Add Bundle Identifier. The wizard asks for:

  1. A bundle identifier, such as com.example.myapp.
  2. The distribution type, covered below.
  3. An App Store Connect API key. Your team's key is used automatically if it has one. See Store API keys.
  4. Signing. Bifrost Managed Credentials creates the certificate and profile for you. Choose Upload my own if your app is already signed.
  5. A Firebase configuration file, optional, for push notifications.

Distribution types

  • App Store for public release and TestFlight.
  • Custom Apps for private distribution to specific businesses and schools. Same credentials as App Store; see below.
  • Ad-hoc to install on registered test devices without the App Store. See Test devices.
  • Development for debug builds on your own devices. Uses a development certificate. See Test devices.
  • Enterprise for in-house distribution to a large organisation. Available on request.

Uploading your own certificate and profile

Use this when your app is already signed and you want to keep signing with the same certificate.

Distribution certificate

You need the certificate as a password-protected .p12. If you only have it in Keychain Access on a Mac, export it from there. To create a new one from scratch, run this inside your NativePHP project and follow the prompts:

php artisan native:credentials ios

The command creates a certificate signing request in a credentials folder. Upload that .csr under Certificates in your Apple Developer account, choosing Apple Distribution (or Apple Development for Development builds), download the .cer into the same folder, and return to the terminal. It converts the certificate to a .p12 and asks you for a password. Keep that password in a password manager; Bifrost needs it too.

Provisioning profile

Under Profiles in your Apple Developer account create a profile for your App ID and the certificate above. Pick App Store Connect for App Store and Custom Apps, Ad Hoc for Ad-hoc, or iOS App Development for Development. Download the .mobileprovision and upload it in the wizard.

The wizard checks that the profile matches the distribution type you chose and warns you if it doesn't.

The credential page

Each bundle identifier has its own page under Credentials where you can download or replace each file, renew a managed profile, switch a per-app API key to the team's key, and run Check credentials against App Store Connect.

Custom Apps

Custom Apps are delivered privately through Apple Business Manager or Apple School Manager instead of the public App Store. Apple built it for client apps and other software that only chosen organisations should get.

To Bifrost a Custom App build is an App Store build: same credentials, same upload to App Store Connect. What makes it custom is a one-time setting in App Store Connect.

The choice is one-way. A Custom App can later go public, but a public app can never become a Custom App without a new app record and bundle ID. If in doubt, start private.

  1. Create your app in App Store Connect and ship a build from Bifrost with Deploy to TestFlight on. Custom Apps can be tested in TestFlight like any other app.
  2. In App Store Connect open Pricing and Availability and choose Custom App Distribution.
  3. Add each customer's Organization ID and name. Their administrator finds the ID in the organisation settings at business.apple.com or school.apple.com. You can add more organisations later.
  4. Set a price, free or paid, and submit for review as normal.

After approval the app appears in each customer's Apple Business Manager, never on the public store. They acquire licences and push it to devices with their MDM or redemption codes. Updates ship the same way: new build, new version submitted for review, devices update through MDM.