Home
/ blog

Is there light at the end of the tunnel?

Close to 6 months ago I completed a simple little toy game thing. I posted about how awful the steam review process is. Well, I didn't get it on steam in part because I gave up after they charged me twice for applying and never responded. It has to be close to the worst process I have ever seen for anything. It is more bad than even the most obtuse government sites. Ya, its that bad.

I digress. I ended up taking a stab at the iOS app store and well...it is better than steam but damn, Apple certainly keeps their A team on other projects because it was about as bad as the DMV. I did finally get the game publish which as silly as it sounds is a huge win. You can find it here It took 6 months AFTER the game was done to finally get it published. So I'd say there is light at the end of the tunnel. Keep in mind, I could only put in 1-2 hours every other day or so due my day job.

The goal I set out for with the toy game project as been achieved. I set out to take a simple idea and take it through to the finish line all the way to publishing it. Is it a banger? No. Does it have more than a single install? No. Will it win awards? Never.

Will I get it on steam? Unlikely, but maybe I'll look into it again. I do want to go over the experience with publishing via the App Store. And boy was it an...experience.

How to publish a unity game to the App store?

Ok, so you that awesome game you made. You test it in the Unity player and it is great. You make an iOS build and it runs fine on on the simulator and on a physical device. Time to publish.

Wait, you have a Mac right? You must have one right? I mean you tested on the simulator? You have a physical phone too right? You need one of those to sign an archive build. Oh snap did you pay the $100 Apple tax for the privilege of developing for Apple? You must have since you have xcode right? You need to pay that $100 Apple tax every year you know? Right?

no poor people allowed rant

Way back when, I always wanted to develop software for Apple but I was too poor. Apple doesn't want poor people to develop software in their ecosystem. You see poor people are bad. They cannot afford Apple products so they shouldn't be here.

How much does it cost to not be poor according to Apple? Well you need a physical device, a mac, and a yearly $100 developer fee. Which assuming the cheapest new options as of today is...

So... $1129 or close to a months pay check post tax if you are making $16/hour minimum wage. Imagine if you were in a different country making $16/day! Sure you can find used Apple products but then you may run into issues if they had already been used to sign software or so I have read. Let's just say used works out.

I think it is important to call out the price of admission here. As we go into all the other bare minium requirements and convoluted steps I think it is important to set the stage. Give some perspective. Apple doesn't like poor people (unless the pay) and they don't like poor developers either (unless they pay). No argument can be made that by charging $100 to be a developer or a published developer somehow means the software is better or the quality of content on the App Store is better. It just means Apple makes more money. Seriously, go browse the App Store. It is crazy.

How to publish a unity game on the App Store cont.

The first thing you will see on App Store Connect is that you need a bunch of screen shots and I mean a bunch. A minimum of 4 sets, two different iPhone screen sizes and another two for iPad screen sizes if you support that which of course we want to.

No problem, take some screenshots on the devices right?

First thing I tried was taking a screenshot on my physical phone and uploading that. It didn't work. What gives? The resolution is off or at least that is what was in their error message.

A friend said to just use the simulators. Ok, no problem.

Unity builds tangent...the jank

Ok, let me skip hours the of googling, debugging, and running around in circles I went through. Unity has a simulator build and physical device build checkbox when building for iOS. Do NOT try to use a simulator build on a physical device or a physical device build on a simulator. Technically you should be able to change the build targets in the config but this is just not worth the time. SOOOO many weird issues. Just stick with the right build for simulator or physical phone. This does mean that switching between simulator and physical requires rebuilding the unity project and xcode project. This isn't an Apple issue but Unity.

Ok, device screenshots right?

Ya, so easiest way of doing screen shots is to just whip up a simulator of the required size, take some screens, and upload them. No problem. Wait. Apple says they have the wrong resolution still... It turns out that the screenshots that the simulator spits out are not the right resolution but they are the right aspect ratio. Resize them and upload.

Success that works. Now do it 3 more times. 8 screenshots per device size is 32 screenshots. Dang. Ok, no problem we can get past that.

Aside

I was told by a friend that the size from the simulator should be correct. I don't know why it wasn't but this shouldn't have been an issue in the "Just Works" world.

Video clip or "App Previews"

Not to be confused with an app clip, App Previews are videos of the app a user can watch before downloading. Now this is not required but I heard Apple to promotes apps with a video. Ok cool. We can do that.

Turns out there is a nifty little command to record the simulator to a file. Just run this while the simulator is running.

xcrun simctl io booted recordVideo videoName.mov

And closing the running process causes it to save. Nice! Works like a charm. Just need 4 videos now for all the sizes. And upload.

Go home Apple you're drunk

Ok, videos are not required but my god does Apple have some of the most convoluted and just outright wrong error codes/messages for uploading a video. I take my .mov video and upload it.

Invalid Resolution.

Resolution is off again. I am not sure how given the recording was captured with the simulator but as with the screenshots maybe we just need to resize it.

Google a bit and find that iMovie has a template specific for making video clips for iOS apps. Perfect, an official Apple approved way of making App Previews. Pick the template, edit the video, and share for App Preview.

Invalid video format.

Are you kidding me? This was exported using the Apple approved iMovie App Preview template. What is wrong? Google, google, and a bit more google. Apple expects sound in the App Preview. Ok it doesn't require it but there has to be a sound stream in the uploaded video. Ok, could have guessed. My game has sound but the previous command is more for apps than games. It makes sense a game needs a sound stream but why in the world would say a todo app need freaking sound? Also, how the heck to we get a recording with sound?

No problem. We add an empty sound layer in iMovie and share/export.

Video file is to large.

Ok, the max file size for a video Apple says is 500mbs. My video is like 1.5mb. It isn't too big. The heck? Google. More google. And a bit more. Find out that it isn't to big, but too long. Has to be under 30 seconds. Mine was 50 something seconds. Ok, back to iMovie. Edit. Export. Upload.

I do want to say that it takes between 15-45 minutes after uploading a video for Apple to "process" it and let me know of an issue. I only have around 1-2 hours a day to put into a project like this.

Success. I finally get it uploaded. I am allowed 3 App Previews so I want to add another.

Video length is too short.

My god a somewhat useful error message. Look it up and videos need to be longer then 15 seconds. No problem. iMovie, edit,share/export. Success.

Error Message Rant

Ok, little rant here. I get that if I read the impossible to find super secret documentation on what is required for an App Preview I'd have had no problems...right? Then why the fuck does the default template of iMovie not add a dummy sound stream? Why do the errors for video length not just say, "App Previews must be between 15 and 30 seconds"? I have always heard from professional iOS devs about how awful the app store review process is but I have not even submitted the dang thing and it has been 2 weeks of fighting error messages.

You know what makes the video validation even worse? You can validate 90% of it client side looking at the header of the file...with a few lines of JS the 15-45 minute wait would become instant. Where is that $100/year going? Certainly not here.

Ok we are almost there. Just a bit of paper work now.

Paper work

There are a bunch of meta fields to fill out when publishing. Stuff like the name, description, tags, audience, data collection practices etc. There is no data being colleted so I can skip most of that. I imagine if you even so much as collect basic crash metrics, Apple will require 4 pdfs outlining your retention policies and how you comply with GDPR etc. That is fine. I collect nothing.

Privacy Policy

We are required to host a website with the privacy policy. We cannot have it be in the app but there has to be an external publicly available website which hosts the document. Like, I get it but now I am off to googling some template I can toss somewhere to make them happy. I doubt they even check this but by golly I don't want this to be the reason for rejection. I sure am glad I already know enough to toss up a webpage hosting this. Imagine if you didn't!

Hours of googling a template, editing, and website hosting later. We are good or at least I "think" we are. I mean will Apple even check it? I doubt a human will. Probably just checks for a 200 status code.

hey kid, you like encryption?

Before submitting for review you must fill out a form which asks all kinds of questions around encryption. For 99.9% of apps this is meaningless. However, it is super confusing. The questions are sometimes phrased so convolutedly. "Do you use any proprietary encryption blah blah blah" no I don't. "Do you use encryption blah blah blah this includes any Apple encryption even if your app does not directly use it." So...even if I don't use encryption, I still am because it is an iOS app which has encryption but not proprietary encryption...which means the answer would always be yes? 🤷

They ask some strange questions about selling in France. Idk, I guess I am not publishing there. Look, I have no idea what half of the questions were talking about. I just kept clicking until the modal went away without requiring some exemption forms. Legals gotta legal right.

Pricing? In app payments? Is Apple getting its cut?

Nope. No money here. SKIP!!!

You trying to market to children under 13 or something?

Nope. Next!

Pick ur build

Signing and profile provisioning. Yup we are in the final stretch. The actual provisioning and signing was super trivial. Just check that "auto" box in xcode and we are gucci go go. However, once again Apple's website was god awful. The "guide" on how to upload an "archive" for submission was circular. It just mentioned creating an archive build as if I know what that is. I ended up, like always, just doing more googling and reading forum posts of people explaining what to do.

I am sure a professional iOS dev would know all of this. I am not a professional though. I do have a CS degree but I don't think that is helping me much here.

Assuming your Unity build has no issues...you should be able to just create an archive build in xcode and upload it for submission.

Another 24 hour wait for Apple to process the archive and its there. Fantastic.

Pick the new v1.0 build and submit for review.

24 hours go by. Email. Open it. Rejected.

Handling rejection

Ok, I didn't expect it to go perfectly the first go. I looked at the rejection and well...it said it crashed? No way a human reviews all app submissions. It must have some automation. I bet apps that collect data or sell stuff or more thoroughly vetted. Ok...it crashed?

Well, the build which was working from Unity...crashes now. I think the latest iOS update broke it? I don't know what went wrong but after downloading a newer Unity editor and using that to build we are good.

Archive. Wait 24 hours. Submit for review. Wait 24 hours. And bam...it...is...live. Wow. I am a bit surprised and also excited.

There is light!

If I had to do it over again, I think I could knock out a successful submission in a weekend. If you know what to do, it isn't too bad. However, it is clear that Apple does not give a fuck about the experience here or maybe they put the fucks they do give into the M1 chip and the packaging of their products which would make sense because those are awesome. There are just so many steps where you just hit a wall. A wall in which only googling around for Apple forum posts, stack overflow answers, or Quora answers helps and even then I am positive my privacy policy is wrong.

A while back I published a game to the Google play store. It was so goddamn easy. Export a .apk upload it. Add some screenshots, description, and done. It even had a payed version setup without much hassle.

I totally get Apple having a more "robust" process. And well, many of the steps are doable and not total blockers. Apple knows that if you want to publish with them, you do it on their terms which seem to discourage anyone who doesn't have the money for legal teams.

With any luck next time I can complain about Steam's process. Which even with all Apple's issues is still already worse by a country mile.