A bit off topic: Myths Debunked, the App Stores

Short quick series on mobile development


So you decided to wrap your PWA or created a dedicated native app using Capacitor (or Cordovoa) and want to publish it to the stores? Here’s a collection of random bullets around this topic:

Terms of the process:

  • If you want to release your app to the store, you compile the sources, package the resulting binary and assets into a bundle and upload it to your developer account (Appstore Connect for Apple or Google Play Console) for review. This is the submission, also called publishing.
  • In order to prepare the publishing / release, you also need to setup the store presence for your app, this includes the title, description, images and a number of policies (privacy policy, data collection etc.), all shown in the stores. The store presence is part of the store approval process and will be reviewed, too! It’s not about the artistic style of the store presence, but about the information provided following the store guidelines.
  • Your app will be reviewed and hopefully approved. Once approved, you can release to the public, your app appears in the stores :tada:

Things to remember:

  • You develop your app with HTML and JS, but once it is build via Capacitor/Cordova, you have a true native project and source code for each supporting platform (If you use Capacaitor, you can even temper the native Swift or Kotlin code to add more core native features).
  • You need Apples Xcode, and thus a Mac, to build and publish for iOS.
  • You need Android Studio to build for Android. Android Studio runs on both, Mac and PC.
  • You need a Apple Developer Account (ADA) to develop, deploy locally to a iOS device (called “Ad Hoc Distribution”) and publish your apps to the App Store.
    – There are remote/cloud build services to build for iOS from a PC (but still, you need an ADA)
  • For local iOS developments and local iOS testing on your device, you don’t need to subscribe to the paid Apple Developer Account. This is only required for external testing and publishing.
  • For Google, you need to subscribe only if you want to publish at Google Play.
  • As Android allows downloading and installing apps from non-trusted sources as your website (aka “Sideloading”), you might be tempted to skip that cost, but it’s not recommended: you require the user to lift some security measure for third party installs and miss out some great reporting from the store :no_entry:
  • Apple charges $99/pa. for a developer account ($299 if you want to build inhouse tools for enterprises, but that’s a different story)
  • Google charges $25/pa for a developer account
  • Both, Apple and Google, are equally painfull when it comes to reviewing and approving your app. :see_no_evil:
  • Reviewing and approving takes time. Anything between 3 to 7 days can happen. Publishing over christmas might take up to 14 days. Been there…

AdHoc Distribution, TestFlight (Apple): internal & external testing:

  • AdHoc-Distribution is directly uploading the app via Xcode to a device connected or downloading and installing via the browser.
    – In both cases, the device UUID needs to be registered in the Developer Account as an test device. and a development certificate needs to be installed on this new device
    Whenever a new device is added to the device list, a new build needs to be uploaded!
    – The number of devices you can register is limited, and can be reset only once a year.
  • TestFlight is Apples Testing Environment.
    – It’s easy to use, powerful and it’s free. You should really use it!
    – Internal and External testers need to install the TestFlight app (simple download, triggered by the invitation)
    – It helps you distributing your app to the testers and also collects test data for you, such as sessions (number of openings), crashes, and if the app crashes on the users device, the user can submit a report including a screenshot which you can access from your appstore connect account
  • Internal Testing via Testflight:
    – Apple allows to setup internal testers and external testers (see next bullet).
    Internal testers are users who have accounts setup in the Develepers App Store account (Co-Worker, internal QA…). They need to use their Apple ID’s when added to Appstore Connect.
    – Once a app is uploaded, it can be sent via TestFlight to this testers.
    Internal test submissions do not require a App Store Review.
    – You can have up to 100 members in your team who can access your apps
  • External Testing via TestFlight:
    – You can add up to 10.000 external testers for your app.
    – This testers do not need to be part of your team (hence “external”)
    – Once a app is uploaded, it can be sent via TestFlight to this test group.
    – External test submissions do require App Store Test Review (a lightweight review process of Apple as the App goes external).
    — Note: if your app, for any reason, does not pass the Test Review, there’s no point trying to publish it later in the store without fixing the issues. will be for sure rejected. However, if it passes the Test Review, it is not granted to be accepted by the final review team.
  • Apps delivered via TestFlight expire after 90 days, then you need to publish an update to the testers.

Google Play Console testing

  • With features similar to Apples Testflight, but for up to 100 internal testers only
  • Google Play supports Alpha and Beta testing: the app will be reviewed and then approved for Google Play, and any user can signup for Alpha or Beta testing

There are more tools for testing and publishing, but I wanted to stick to the offerings of Apple and Google.

12 Likes

Thank you, again, Heiko! Outstanding help!

One question concerning this –

Apple charges $99/pa . for a developer account ($299 if you want to build inhouse tools for enterprises, but that’s a different story)

What exactly makes a tool “inhouse”?
I can think of several parameters, including use restricted within a corporate intranet, or use in the field but installation and permission to view its existence restricted to a set list of employees.

How is submission done for an iOS and Android tool intended only for one client’s restricted list of employees working outside the office?

While Apps submitted to the App Store a publicitly avaialbe for everybody who finds the app, with the Apple Enterprise Program, Enterprises can release their own bespoke apps to dedicated usergroup. It’s like your own store, but without a App Store Approval.

So Enterprise Apps are only for assigned Enterprise devices: they get a special certificate installed to access the companies’ store and download and run this apps. This is used, for example, for companies who have their own business solutions in place, like insurances, banks / fintechs, health care, food order terminals in restaurants, even car workshops for special diagnosis and reporting tools. The sales terminals in the Apple Stores are a prominent example of a enterprise solution.

To apply to the Apple Developer Enterprise Program, you have to be fulfill some requirements: your organisation has to have more than 100 employees, must be a legal entity and pass a Apple verification interview.

Hope this helps,
Heiko

1 Like