You have 2 options when exporting your app for iOS:
- Binary app (
.ipa
) – this iOS binary version can be published to the App Store etc. - xCode project (source code) – you get HTML/CSS/JS + the PhoneGap library configured as an xCode projects.
Binary App
The Appery.io platform provides a cloud-based building app service that is programmed as a Cordova app for iOS, which you can publish to the App Store. Since iOS is more demanding in terms of certificates, some additional actions are required to build an .ipa
.
Publishing for iOS
Before You Get Started
Before you can build an iOS binary, you need to sign up for the iOS Developer Program and provide all of the developer information and certificates below. If you are new to this, here is a good link to get you started: Managing Your Signing And Provisioning Assets. You also will need a Mac to submit the binary to the App Store.
Before you build the binary file, make sure you have the following:
- Apple certificate (
.p12
). - Apple provisioning profile (
.provision
).
Check A Beginner’s Guide to iOS Provisioning Profiles for details. - Bundle ID (
com.company.
) – can be found in your Apple certificate.
Video Tutorial: How to Create Android and iOS Certificates
You can check this Appery.io Community video that shows how to create Android and iOS certificates:
- Go to the Resources > Certificates tab.
- Click Import Certificates > iOS.
- Click Choose file and select your iOS Distribution .p12 file.
- Type your password for this certificate and click Import certificate:


- Go to the Appery.io Builder: App Settings > iOS binary.
- For Bundle ID, type the bundle ID that you provided for the uploaded certificate (you made it when registering the app on the Apple website). For example, io.appery.app.ClickableListApp:


- Scroll down the page and under the Distribution certificate section, select the earlier uploaded
.p12
certificate from the drop-down menu. - Click Change in the Provisioning profile section and upload the
.mobileprovision
file:


Click Save.
- To publish the app for iOS, click Export > Binary (.ipa):


Note that building the .ipa
file could take a while.
- Once the build is completed, the
.ipa
file can be downloaded and you’ll also see a QR code:


You can scan this QR code (use the Qrafter app, for example) to download the file directly on your iOS device and install it.
iOS Binary Settings
Appery.io comes with iOS binary file settings where you can configure everything you need to package the app for iOS. Go to your project, click App Settings > iOS Binary> Release. If the Release box is checked, JavaScript assets will be minified to reduce the binary size.
Generating iOS Certificates
The following links will help you generate the iOS certificate and submit the app to the Apple App Store.
Windows
Mac OS
- App distribution guide (from Apple).
Publishing the App on App Store
Publishing your app to the Apple App Store is outside the scope of our support.
Certificate Management
Certificate management can be accessed under the Resources tab. This is where all of your certificates are stored. Certificates can be imported or automatically generated (in the case of Android). Click Import certificate to upload the certificate from your desktop.
Once the file and platform are chosen, type the certificate name and its password. Click Import certificate to upload the file. The imported certificate will be listed with all of the others.
Tip
We strongly recommend that you store all of your certificates locally and don’t remove them for any reason.
The certificate can be set to use by default. That means that all applications will use this certificate if another isn’t specified in App settings. Check Default to make the certificate used by default. If you are a team member, the team admin or team lead should give you permission for this action.
By clicking Export to zip the certificate will be downloaded as a ZIP archive. The archive will also contain additional text files with certificate passwords. Click Delete to remove the certificate.
Deleting a Certificate
If you delete a certificate that’s used in any application, you’ll get an error.
Once the certificates are uploaded they can be chosen from the application settings. To choose a certificate for iOS binary, go to the App settings > iOS binary and choose a certificate. When [use default] is selected, the certificate marked as the default will be used. Certificates can be set for all binaries.
After registering with Apple as a developer you can get provisioning profile files or generate them. In the builder, click Change to open the Files Manager. At least one certificate must be provided to build a certain binary. In other cases, when exporting this binary in the builder you will get an error message.
Keys and Settings
Important Information about the Camera Plugin
The keys variables are currently not working, please refer to our workaround hint here:
https://docs.appery.io/docs/known-issues#camera-plugin-variables-for-ios-projects-
iOS 10 requirement
Starting from iOS 10 it's mandatory that
NSCameraUsageDescription
andNSPhotoLibraryUsageDescription
be added to the info.plist.There is no need to add such settings manually in project Source files, instead, you can add them in App Settings > iOS keys options as a key value.
If you don't pass the variable, the plugin will add an empty string as value.
The latest Cordova plugins (starting from the Libraries version 4.1 JQM and 1.1 Ionic) require adding keys and values when the app is being approved by the Apple App Store. The plugins that come bundled with your app, the keys are set by default. To view or modify the settings, click the Options button.
Here are some examples.
Plug-in | Key | Value |
---|---|---|
Camera | CAMERA_USAGE_DESCRIPTION | This app uses the camera to scan QR code. |
Camera | PHOTOLIBRARY_USAGE_DESCRIPTION | This app needs to access the photo library. |
Camera | LOCATION_IN_USE_USAGE_DESCRIPTION | This app will use your device location services. |
The
NSPhotoLibraryUsageDescription
field can be cleared/replaced by some Cordova plugins if they are used in an app. To avoid this, the related plugins should be additionally redefined with the parameters needed.
Keys Redefinition Cases
There is a set of plugins that uses
CAMERA_USAGE_DESCRIPTION
parameter to setNSCameraUsageDescription
key.
They are:
- phonegap-plugin-barcodescanner
- cordova-plugin-media-capture
- cordova-plugin-camera
Just add
CAMERA_USAGE_DESCRIPTION
to all plugins from the list which are enabled in the App Settings.The same is true for
LOCATION_IN_USE_USAGE_DESCRIPTION
parameter for these plugins:
- cordova-plugin-camera
- cordova-plugin-geolocation


Camera options.
Plug-in | Key | Value |
---|---|---|
Barcode Scanner | CAMERA_USAGE_DESCRIPTION | This app uses the camera to scan QR code as a value. |


Barcode Scanner options.
iOS 10 < requirement
Starting from iOS 10 it's mandatory that the
NSLocationWhenInUseUsageDescription
entry be added to the info.plist.There is no need to add such settings manually in project Source files, instead, you can add them in App Settings > iOS keys options as a key value.
If you don't pass the variable, the plugin will add an empty string as value.
Plug-in | Key | Value |
---|---|---|
Geolocation | GEOLOCATION_USAGE_DESCRIPTION | This app will use your device location services. |
Geolocation | LOCATION_IN_USE_USAGE_DESCRIPTION | This app will use your device location when running. |
Building an iOS App with Xcode
Before You Begin
You will need the following before you start this process:
- Mac macOS 10.12+ or higher
- Xcode 9+ or higher with iOS SDK installed.
- You should be enrolled in the iOS development program and have the correct certificates and provisioning profiles. You can get Xcode, iOS SDK, certificates, and profiles from http://developer.apple.com.
Running in an iOS Simulator
Source Archive File
Extract the ZIP archive file that you've downloaded from Appery.io and after archive extraction open folder
/platforms/ios/
there you can find files for Xcode with extensions.xcodeproj
and.xcworkspace
- if you using a Push notification in your project then it is preferable to open a.xcworkspace
file.
If you want to run an Appery.io app in the iOS Simulator:
- Open [app_name].xcodeproj with Xcode.
- Select the correct scheme to run: [app_name] > iPhone X or [app_name] > iPad X in the top-left part of the Xcode window.
- Click Run in the top-left corner of the Xcode window (PushApp is the app name).
Launched App
You should see a Build Successful message. With the iOS Simulator running the app is launched.
Running on a Mobile iOS Device
Running the Appery.io app on an iOS device is a more involved procedure than running it in the simulator. Notice that steps #1 and #2 are optional if you have already completed them for a different app.
- Add the certificate to the keychain. Double-click on the
.cer
file and confirm adding the certificate. You can now see the certificate in the keychain window. Repeat this process for the distribution certificate. - Open the [app_name].xcodeproj with Xcode.
- Select the [app_name] project file at the top of the project navigator.
- Select the Build Settings tab, and proceed to the Code Signing section (PushApp is the app name).
- Find the Code Signing Identity group and open it. If you use the app source code you built and exported from Appery.io, there should be 2 sub-items – Debug and Release.
Different Certificate Purposes
If you have a developer’s certificate, you should ensure that the values for Debug > Any iOS SDK and Release > Any iOS SDK are set to your developer’s certificate. We recommend setting the iOS Developer value there, this enables automatic profile selection. However, you can click the value and see the certificate and profile that can be used by Xcode for code signing.
- Open the General tab of the [app_name].xcodeproj. Find the Bundle Identifier parameter, and set its value to the corresponding value of the allowed application identifiers for your provisioning profile.
- Select the correct scheme to run: [app_name] > [Your connected device's name] and click Run.
Submitting your App to the App Store
This section lists a number of helpful hints when submitting your app to the App Store.
Submitting to App Store
Please note that submitting your iOS to the App Store is outside the scope of our standard support but is included in our paid support packs.
Since the recent Xcode version 11 update, the Application Loader had been deprecated as a separate tool for IPA file submissions. The Apple approach is changed and we suggest following this tutorial for IPA files submission to the App Store (please note that the Xcode is now mandatory).
Please, check this article that can be useful: How to submit App to App Store.
When submitting your app for review you might need to answer the following questions:
Question
- Is your app designed to use cryptography or does it contain or incorporate cryptography? (Select Yes even if your app is only utilizing the encryption available in iOS or OS X.)
- Does your app qualify for any of the exemptions provided in Category 5, Part 2 of the U.S. Export Administration Regulations?
Answer
Appery.io database is not encrypted by default. If you encrypt the database data by any means in your app (by either iOS frameworks or any third-party), then you should consider answering Yes to both questions.
Question
Does this app use the Advertising Identifier (IDFA)? The Advertising Identifier (IDFA) is a unique ID for each iOS device and is the only way to offer targeted ads. Users can choose to limit ad targeting on their iOS device."
Answer
By default, an Appery.io app does not use an Advertising identifier.
Known Issues
Troubleshooting iOS Build
The following is a list of the most common reasons the iOS build might fail. Please review them and try to export again if you come across any issues:
- Provisioning profile doesn’t match the Bundle ID – Make sure you are using the correct (and valid) provisioning profile for the environment that you use as described in the troubleshooting guide: https://docs.appery.io/docs/testanddebug-debugging-your-app#section-push-notifications.
- Bundle ID incorrect format – The Bundle ID provided has an incorrect format.
The Bundle ID correct format is: com.companyName.appName.
This is NOT a valid Bundle ID: XZCSDF.com.companyName.appName. - Expired certificate – Make sure your certificate hasn’t expired.
- No certificate uploaded – Make sure you have uploaded a valid certificate.
Useful Links
Please read http://stackoverflow.com/questions/3436260/bundle-id-suffix-what-is-it for more information on bundle IDs.
Troubleshooting iOS Mobile Submissions
Check the app permissions. For instance, if you have telephony selected in UIRequiredDeviceCapabilities (Project > App settings > iOS keys) and are submitting the app for the iPad as well, the App Store will not accept the app as you cannot make calls from an iPad.
Will My App Still Work?
When testing your app you will still be able to install and work it, but the App Store will not accept your app as it cannot make calls.
Updated about a month ago