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 Developer
Section titled “Apple Developer”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.
- Go to developer.apple.com/programs/enroll and sign in with your Apple ID.
- Enroll as an individual, or as an organization if the app is published under a company. Organizations need a D-U-N-S number.
- Pay the yearly fee.
- Wait for Apple’s confirmation email. Organizations can wait up to two days.
- 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.
Bundle ID
Section titled “Bundle ID”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.
App icon
Section titled “App icon”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.
App record
Section titled “App record”Apple accepts an upload only for an app that already exists in your App Store Connect account with this bundle ID.
- In Certificates, Identifiers & Profiles, click +, choose App IDs, and register your bundle ID.
- On that App ID, turn on Push Notifications and Sign in with Apple if your app uses them.
- Open App Store Connect and go to Apps.
- Click +, then New App.
- Choose iOS, enter the app’s name, and select the bundle ID you registered.
- 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.
Export compliance
Section titled “Export compliance”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.
- In the iOS setup window, open Export compliance (optional).
- Tick My app only uses standard encryption for secure connections (HTTPS).
- 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.
Site connected
Section titled “Site connected”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.
Plugin
Section titled “Plugin”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.
Certificate
Section titled “Certificate”A distribution certificate proves an app comes from your Apple account. The .p12
file holds the certificate together with its private key.
- On a Mac, open Keychain Access and choose Keychain Access → Certificate Assistant → Request a Certificate From a Certificate Authority. Save the request to disk.
- In Certificates, click + and choose Apple Distribution.
- Upload the request, then download the certificate.
- Double-click the downloaded certificate to add it to Keychain Access.
- 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
.p12and set a password. - On your site, open Memberside → API Keys → iOS signing, choose the
.p12and 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.
Profile
Section titled “Profile”An App Store provisioning profile links your bundle ID, your certificate and the capabilities your app uses.
- In Profiles, click +.
- Under Distribution, choose App Store Connect.
- Select your app’s bundle ID.
- Select the distribution certificate you uploaded to your site.
- Name the profile, generate it, and download the
.mobileprovisionfile. - 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.
Upload key
Section titled “Upload key”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.
- In App Store Connect, open Users and Access → Integrations → App Store Connect API.
- Generate a Team Key with the App Manager role.
- Download the
.p8file. Apple lets you download it only once. - Note the Key ID and the Issuer ID shown on that page.
- 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.
Apple sign-in
Section titled “Apple sign-in”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.
In-app purchases
Section titled “In-app purchases”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.
When a step won’t turn green
Section titled “When a step won’t turn green”| Symptom | Cause | Fix |
|---|---|---|
| “Couldn’t check” on every site step | Your site is offline, or the Capabilities endpoint is off | Enable it under Memberside → REST API on your site, then Check again |
| “Update the Memberside plugin” | The plugin predates 2.39.1, which stores signing files | Update Memberside on your site |
| Certificate: has the private key but not the certificate | The key was exported from Keychain Access instead of the certificate | In 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 .p8 | Your Memberside plugin predates saving chosen files to a private folder | Update Memberside, or choose This site’s database under Store in |
Certificate: couldn’t open the .p12 | The password saved beside it is not the export password | Upload the .p12 again with the password you set in Keychain Access |
| Profile: different bundle ID | The profile was generated for another App ID | Generate a profile for this app’s bundle ID |
| Profile: doesn’t include the certificate | The profile was generated before this certificate existed | Edit the profile, select the certificate, download and upload it again |
| Bundle ID contains an underscore | Android accepts it, Apple doesn’t | Change the App ID in General Settings, then use the new value everywhere |