New game app after twice rejects

screenshots of Fleeing Robot / Construction Set

FLEEING ROBOT / Construction Set
↑ My new game app for iOS has just released.
This app was rejected twice in review of Apple.

The reason of the rejects was :
2.2 - Apps that exhibit bugs will be rejected
Reviewer said my app had not started correctly in review.

In this app, you (player) get a key and go to a door (goal), then its stage completes. And there are many stages.
And you can also make a new stage. You can make it public after you beat it.
The data you made must be accessed by another users, so the app puts the data in public iCloud database.

If there was no stage when this app was released, you could not play at all. So I put data of about 50 stages in iCloud in advance (before review).

After I was rejected twice, I learned something about iCloud. (I should have learned them before submitting, sorry Apple!).
What I found was there are two kind of data type in iCloud. They are for development and for production.
I should have put stages’ data in ‘Production’ container but I had put them in ‘Development’ container. So Apple reviewer was not able to download any game data.

I did not set even data type (schema), the error message in review said that :
did not find required record type : MyRecordType
I found this by screenshot of reject report.

CloudKit Dashboard
↑I even did not know that there was a switch (in CloudKit Dashboard) which can change its environment of iCloud data.

So I transferred the Record Type…schema from Development to Production while reading this :
Deploying the Schema

It seemed there was no way to transfer data themselves, I had to do it by myself.
But an app can only one container (Develop or Production).
So I did like this:
1. Download data from Development iCloud, and save them in my iPhone
2. Save data in Production iCloud from my iPhone

You can set the target database like this :
in the file name of
’(name of your Target).entitlements

I expected Xcode change this automatically by the Scheme setting of Build Configuration (Debug / Release), but this did not work. I set there Release but the app accessed to the default Development database.

*iOS 9.3.2 , OS X El Capitan 10.11.5 , Xcode 7.3.1
Develop | Comments(0) | Trackback(0)