Skip to content

Getting ready for iOS builds

When every requirement on this page is met, pressing Build builds your app for Android and iOS together. You never choose a platform.

Memberside checks these requirements again on every Build press. If one is not met, your Android build goes ahead as normal, iOS is left out of that build, and the iOS setup window opens at the first thing to fix. The same window opens from the notice on your app’s page and the badge on its card under Your Apps.

Each section below matches one step in the iOS setup window, in the same order.

iOS builds run on dedicated Mac build servers, so they are part of the paid plans. Open Billing and choose a plan that lists iOS builds. On a plan without them, Build produces Android alone and nothing asks you to set up iOS.

Apple accepts an app only from the developer who owns it, and Memberside never submits apps on your behalf (App Store Review guideline 4.2.6). You publish from your own Apple Developer Program membership.

  1. Go to developer.apple.com/programs/enroll and sign in with your Apple ID.
  2. Enroll as an individual, or as an organization if the app is published under a company. Organizations need a D-U-N-S number.
  3. Pay the yearly fee.
  4. Wait for Apple’s confirmation email. Organizations can wait up to two days.
  5. In the iOS setup window, tick I’m enrolled in the Apple Developer Program.

Once your distribution certificate is on your site, this step confirms itself.

The bundle ID is your app’s permanent identifier at Apple, for example com.yourclub.app. Certificates, profiles, push, Sign in with Apple and your store listing are all tied to it.

Apple accepts letters, numbers, hyphens and dots, starting with a letter, with at least two parts. Android also accepts underscores; Apple does not. Set it as the App ID in the builder’s General Settings, then use exactly the same value in every step below.

Apple rejects apps with a placeholder icon. Upload a square PNG of at least 1024 × 1024 pixels with no transparency under General Settings in the builder.

Apple accepts an upload only for an app that already exists in your App Store Connect account with this bundle ID.

  1. In Certificates, Identifiers & Profiles, click +, choose App IDs, and register your bundle ID.
  2. On that App ID, turn on Push Notifications and Sign in with Apple if your app uses them.
  3. Open App Store Connect and go to Apps.
  4. Click +, then New App.
  5. Choose iOS, enter the app’s name, and select the bundle ID you registered.
  6. In the iOS setup window, tick I created this app in App Store Connect with this bundle ID.

After your first successful upload to TestFlight, this step confirms itself.

Optional. App Store Connect asks every new build whether the app uses encryption covered by US export rules, and holds the build at Missing Compliance in TestFlight until it is answered.

Memberside apps use encryption only to connect securely over HTTPS: to your site, for sign-in, push notifications and in-app purchases. That use qualifies for the exemption, and no documentation is uploaded for it. If your app adds encryption of its own, such as end-to-end encrypted messages, this does not apply to you.

  1. In the iOS setup window, open Export compliance (optional).
  2. Tick My app only uses standard encryption for secure connections (HTTPS).
  3. Build again. The app now declares ITSAppUsesNonExemptEncryption = NO, and TestFlight no longer asks.

The statement is yours, made for your own Apple account. Leave it unticked to answer in App Store Connect for each build instead: open the build, click Manage beside Missing Compliance, and choose None of the algorithms mentioned above if the app uses only HTTPS.

Memberside reads your signing files and keys from your WordPress site, so the site has to be connected to the app. Connect it from the builder’s General Settings, or authorize it from Memberside → Getting Started on the site.

iOS signing files are stored by the Memberside plugin, and releases before 2.39.1 cannot store them or hand them to a build server.

If the step says Update the plugin, your site runs an older release. Go to Dashboard → Updates, update Memberside, then click Check again.

A distribution certificate proves an app comes from your Apple account. The .p12 file holds the certificate together with its private key.

  1. On a Mac, open Keychain Access and choose Keychain Access → Certificate Assistant → Request a Certificate From a Certificate Authority. Save the request to disk.
  2. In Certificates, click + and choose Apple Distribution.
  3. Upload the request, then download the certificate.
  4. Double-click the downloaded certificate to add it to Keychain Access.
  5. In Keychain Access, open My Certificates, right-click the Apple Distribution certificate itself (not the key listed under it) and choose Export. Save it as a .p12 and set a password.
  6. On your site, open Memberside → API Keys → iOS signing, choose the .p12 and save it, then save its password.

Certificates last a year. The iOS setup window warns you 30 days before yours expires; builds keep working until the day it does.

An App Store provisioning profile links your bundle ID, your certificate and the capabilities your app uses.

  1. In Profiles, click +.
  2. Under Distribution, choose App Store Connect.
  3. Select your app’s bundle ID.
  4. Select the distribution certificate you uploaded to your site.
  5. Name the profile, generate it, and download the .mobileprovision file.
  6. On your site, open Memberside → API Keys → iOS signing and upload it.

Regenerate and upload the profile again whenever you change your App ID’s capabilities or renew the certificate.

Optional. With an App Store Connect API key on your site, a finished iOS build goes straight to TestFlight. Without one, the build still finishes: download the .ipa from your app’s build history and upload it with Apple’s Transporter app.

  1. In App Store Connect, open Users and Access → Integrations → App Store Connect API.
  2. Generate a Team Key with the App Manager role.
  3. Download the .p8 file. Apple lets you download it only once.
  4. Note the Key ID and the Issuer ID shown on that page.
  5. On your site, open Memberside → API Keys → iOS signing and add the .p8, Key ID and Issuer ID.

Checked only when your site has an Apple push key. Two things must line up, or Apple silently refuses to deliver notifications:

  • The bundle ID under Memberside → API Keys → Apple push matches this app’s bundle ID.
  • Your provisioning profile includes Push Notifications. Turn Push on for the App ID, then regenerate the profile and upload it again.

Checked only when your login screen offers Sign in with Apple. Finish the Apple setup under Memberside → API Keys → Social login → Apple, and set its iOS bundle ID to this app’s bundle ID. See Apple.

Checked only when your app sells through the App Store. Receipts are verified against a bundle ID, so the Apple bundle ID under Memberside → In-App Purchases must be this app’s bundle ID. See Setting up in-app purchases.

Checked only when your app shows a native map. Add the iOS SDK key under Memberside → API Keys → Google Maps.

SymptomCauseFix
“Couldn’t check” on every site stepYour site is offline, or the Capabilities endpoint is offEnable it under Memberside → REST API on your site, then Check again
“Update the Memberside plugin”The plugin predates 2.39.1, which stores signing filesUpdate Memberside on your site
Certificate: has the private key but not the certificateThe key was exported from Keychain Access instead of the certificateIn My Certificates, export the Apple Distribution certificate itself and upload that .p12
“wp-config.php holds the path to the key file” when saving a .p8Your Memberside plugin predates saving chosen files to a private folderUpdate Memberside, or choose This site’s database under Store in
Certificate: couldn’t open the .p12The password saved beside it is not the export passwordUpload the .p12 again with the password you set in Keychain Access
Profile: different bundle IDThe profile was generated for another App IDGenerate a profile for this app’s bundle ID
Profile: doesn’t include the certificateThe profile was generated before this certificate existedEdit the profile, select the certificate, download and upload it again
Bundle ID contains an underscoreAndroid accepts it, Apple doesn’tChange the App ID in General Settings, then use the new value everywhere