Dev Diary: Kindertron Flash Cards #1
I'm starting a new thing here: Development diaries. I'm going to use this series to talk about the design and development process of some of my projects. My plan is to keep them mostly real-time, but in this case I'm going to talk about a major milestone in this project: Submitting my mobile app to the app stores.
Submitting to the App Stores
I haven't made a mobile app before, so this was a new experience for me. I'm not sure what I expected, but it was definitely a more complicated and drawn out process than I thought.
Since I used Ionic to build this app, it was relatively easy to release both an Android and iPhone version. At least from the code side of things. But let's look at what I had to do for each platform:
Google Play
Google Play requires a Developer Account, after which the Developer Console can be used to manage and release apps. There's a one-time fee of $25 USD to create the account.
I actually paid for two accounts. First I created one for myself, but then I realized my personal information would appear in the Google Play Store, which I'd rather avoid. So I created a new Kindertron Google account, signed up as a Developer, then gave admin access to my primary Google account. This lets me manage my Kindertron account using my personal account.
Next up, I had to create the store listing. This was pretty straightforward, although I needed both screenshots and a description that inspired people to download it—neither of which I had created yet.
I also had to improve my icon and splash screen, and fill out a bunch of categorization and content rating fields. Pretty easy.
Finally, I needed a signed .apk
, which is the compiled application package, signed with my private key. Fortunately Ionic/Cordova have this wrapped up into one easy command:
ionic build android --prod --release -- --keystore=../kindertron.keystore --alias=kindertron
Once everything was in place, I submitted for review, and shortly after it appeared in the Google Play Store.
Apple's App Store
This one was a bit more complicated. Again, I needed to sign up for the Apple Developer Program, which is considerably more expensive at $99 USD per year.
They also don't allow pseudonyms or company names, unless you have an actual company with a DUNS number assigned by Dun & Bradstreet (D&B). This is most charitably a hassle, and less charitably a scam. Regardless, I don't have a business entity so my Apple Developer Account is in my real name. Not ideal, but whatever.
Next, I went through a similar process for filling out the App Store listing. Although Apple is a bit more demanding, with specific screenshot resolutions, a privacy policy, and a support website.
I didn't have these, so this sent me on a long tangent which ended up with buying a domain name and building a website: https://kindertron.com. At least afterwards I could update my Google Play Store listing to share the same privacy policy and website URL.
Finally, I needed to upload the app build. Since I don't have a Mac, I used Ionic Cloud's Package service, which can build both Android and iOS packages and provides 100 free builds a month. This was a helpful guide to creating all the certificates setup without a Mac.
After getting the iTunes Connect and Ionic Cloud settings all in place, I can do a new iOS build like this:
ionic package build ios --profile iosprod --release
The completed builds can be downloaded on the Ionic Cloud website.
But my effort to complete this without a Mac was stumped at this point, because Apple doesn't give you a way to upload the .ipa
package directly in the browser. Only Xcode or Application Loader work, and they are both Mac applications.
So I borrowed my wife's Macbook, downloaded the .ipa
file, and tossed it into Application Loader. 30 seconds later it was done, and I clicked Submit for Review on the iTunes Connect website.
Apple has a manual review process, which took a few days for me. Mostly it was just pending, and the actual time spent in review was very small. But eventually it made it into the App Store and started appearing in search listings.
Conclusion
In retrospect, I was quite unprepared for this process when I started. I didn't have screenshots, a description, a website, a privacy policy. At least I had a logo, although I even changed that during this entire process.
But now that it's done, it's much easier to roll out new updates for both platforms. I've also started using both beta programs, since I'm currently working on features that are very device specific. More on that later.