Distributing an app via Advanced Developer - Submission

How to Distribute an App via Option 2

Google Play Store

  1. Entegy will supply you with a signed APK file to submit to your Google Play Store
  2. Follow the instructions here to create your app and setup the store listing: https://support.google.com/googleplay/android-developer/answer/113469?hl=en
  3. And these instructions to upload your APK and prepare the release:

Apple App Store

Entegy will supply you with an unsigned IPA file for you to submit to your Apple App Store.

Submit your app

To submit your app to the App Store:

    1. Create an App ID 
      1. In your browser, navigate to Apple’s Developer Portal
      2. Log in
      3. Click Certificates, Identifiers & Profiles in the left menu
      4. Under Identifiers, click App IDs
      5. Click the plus (+) button in the top right of the screen
      6. Name the App ID the same as your app
      7. Make sure the Bundle ID follows the standard naming convention: com.YourCompanyName.YourAppName
      8. Ensure Push Notification service is enabled and click Continue
      9. Verify the services are correct, then click Submit

    2. Create a Certificate Signing Request
      1. Open Keychain Access
      2. In the top left menu, click Certificate Assistant
      3. Click Request a Certificate From a Certificate Authority…
      4. User email: Enter your email address
      5. Common Name: We recommend using the name of the app
      6. CA email is not actually required
      7. Check Saved to Disk, click Continue
      8. Save the Certificate Signing Request for later

    3. Create an App Store Distribution Certificate
      1. In your browser, navigate to Apple’s Developer Portal
      2. Click Certificates
      3. Click the plus (+) button in the top right of the screen
      4. Click the App Store Distribution Certificate
      5. Click “iOS Distribution (App Store and Ad Hoc)” Under “Software”
      6. Click Continue
      7. Upload the Certificate Signing Request created earlier
      8. Download the Certificate
      9. Install the certificate on your computer by double-clicking
      10. Keep this file somewhere safe
    4. Create a Production Provisioning Profile
      1. In your browser, navigate to Apple’s Developer Portal
      2. Log in
      3. Click Provisioning Profiles
      4. Click the plus (+) button in the top right of the screen
      5. Click the App Store Distribution option, click Continue
      6. Select the Bundle ID created earlier, click Continue
      7. Select the Certificate created earlier, click Continue
      8. Make sure the Profile Name follows the standard naming convention: App Name App Store Distribution
      9. Click Generate
      10. Download it
      11. Install the provision profile on your computer by double-clicking
      12. Keep this file somewhere safe

    5. Create App Store Listing
      1. Start in your browser, navigate to App Store Connect
      2. Log in
      3. Click My Apps
      4. Click the plus (+) button in the top left of the screen
      5. Click “New iOS App”
      6. Bundle ID: choose the one created on Developer Portal
      7. For convenience, make the SKU match the Bundle ID created earlier
      8. Click Create to create the first version listing

    6. Resign and Upload the IPA
      1. Once you have received the IPA from Entegy create a new directory and place the IPA inside.
      2. In the developer centre create and/or download an App Store provisioning profile.
        NB: take note of the distribution certificate used to create the provisioning profile.  The certificate used can be seen in the provisioning profile edit menu (usually the latest certificate).
      3. Take the IPA and unzip it (rename it to a zip file and extract it into the same directory as the IPA.)
      4. Now there will be a payload folder with OneApp.app inside.
      5. Move the provision to the same directory as the payload folder.
      6. Generate an entitlements plist using the following process:
        1. Rename downloaded mobile provision to embedded.mobileprovision
        2. Open up a new command line window in the directory.
        3. Check that you are in same directory
        4. Generate a provision plist using the following command with the provision directory:
          security cms -D -i /embedded.mobileprovision > provision.plist
        5. Now Create a new plist with the app entitlements using the following command:
          /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist
        6. Where provision.plist is the plist generated from the previous command.
      7. This leaves you with a directory with the following items 
        1. The Provided IPA (Now a ZIP file)
        2. The Payload folder
        3. The embedded.mobileprovision file
        4. The provision.plist file 
        5. The entitlements.plist file 
      8. Copy embedded.mobileprovision into the OneApp.App file. (Right click the .app file and click show package contents.)
      9. Navigate back up to the directory with the provisioning files.
      10. Open up a new command line window and view existing distribution certificates using the following command:
        security find-identity -v
      11. This will give you a list of certificates installed in the keychain. Look for the ID of the certificate used when creating the provisioning profile in the first step. The list item should look something like this:
      12. Before code signing ensure that there is no existing signing by removing the signing directory. This can be done by executing the command:
        rm -rf Payload/OneApp.app/_CodeSignature/
      13. Take the ID from the entry (in this case LQ47FXL … 5KWAM). Using that ID go back to the command line in the provisions directory and execute the following command:
        /usr/bin/codesign -f -s IPHONE_DISTRIBUTION_ID --entitlements /PATH/TO/entitlements.plist Payload/OneApp.app
        Where IPHONE_DISTRIBUTION_ID is the ID from the previous command. And the paths point to the corresponding files.
      14. The OneApp.app structure should now be signed with the provided distribution certificate.
      15. The payload now needs to be bundled back up into an IPA. This can be done using the following command:
        zip -qr app-resigned.ipa Payload/
      16. Create an App Store Connect store page if you haven't already done so.
      17. Upload your app to Appstore Connect using Transporter.
      18. Drag the ipa onto the program window, and wait for “Deliver” button, then click.
        If the process fails it is likely due to the wrong provisioning profile used or the wrong distribution certificate being used. It is required that the certificate used is the one used when creating the provisioning profile in the dev centre.
        Press next and wait for the bundle to upload.
        Once the application uploads continue the store submission process as usual.

    7. Fill In Version Information
      1. Enter your store information
      2. Select the build you wish to tie to the version. This will take a few minutes to appear after you upload it
      3. Fill in pricing information
      4. Click Save

    8. Submit Version for Review
      1.  Select the release type
        1. Manual release – after the app is accepted, a Release button will appear
        2. Automatic release – as soon as the app is accepted, it will be released
      2. At the top of the page, select Submit for Review
      3. Answer the questions and click Save
      4. It can take a few days for your App to be approved
      5. If your app was not approved, review the notes in the Resolution Center and make any necessary changes to the app or version information then resubmit

Provide Entegy with your Apple push notification certificate

We require this to enable custom notifications for your app. This process can only be completed after (or during) you have created an App ID on the Apple Developer Center. You need to upload the push certificate in the store listing page in Core.

  1. Generate a Certificate Request
    1. Open Keychain Access on a Mac
    2. Select Keychain Access -> Certificate Assistant -> Request a Certificate From a Certificate Authority
    3. Enter the information required and check the Saved to disk Then click Continue button
    4. Save the Certificate Request using the suggested name and click Save. Click Done in the next screen

  2. Create APNS Certificate
    1. In the Apple Developer Center (apple.com/account), click Certificates, IDs & profiles
    2. Under Identifiers, click App IDs
    3. Select the app you want to generate certificates for
    4. Click Edit
    5. Under Push Notifications, under Production SSL Certificate, click Create Certificate…
    6. Click Continue
    7. Click Choose File… and upload the Certificate Request file you generated in step 1
    8. Click Continue
    9. Click Download to download the .cer file
    10. Open the .cer file in Keychain Access
    11. You should see an entry called “Apple Push Services: “ followed by the bundle ID of the app. It should have a dropdown to the left which indicates it is matched with the private key
    12. If you can’t find the certificate or it doesn’t have a private key, it may be in a different Keychain from the one with the private key. You need to click and drag the certificate into the Keychain with the private key
    13. Right-click on the complete certificate and export it as a .p12 file, specifying a password
      Make sure you save the .p12 file and password securely. You will require both of these items when you create your build’s store listing.