Categories
iOS Development

Developing iOS Apps for Kids

I do stumble now and then across (more or less great) apps for smaller children, kids or toddlers. You have probably seen these as well. I never released any app for the kids category but I was curious how it is done. So I started developing my first iOS app for kids.

Match Pair Toddler Puzzle Game

This mouthful of a title is not that fancy to look at. But it does its job. The title together with its subtitle (“Cute Animals, Cars & Fruits”) is obviously just for app store optimization.

The actual idea came when my own kid started to grasp the game of memory®. Small side note: The name memory® is a trademark of the German company Ravensburger. Consider this before releasing any similar games. I was contacted by Apple when my initial title contained something referring to this name.

In my own version of this simple game you can add photos from your own camera roll. This is a paid feature (more the shop on that later). All of the default images are AI generated content. If you go that route in a kids app, pay extra attention to what is actually generated.

In case you are interested in the final app, here is the link to it:

https://apps.apple.com/us/app/match-pair-toddler-puzzle-game/id6479583158

The kids app store

In the kids category you will see a lot of similar looking apps. To oversimplify: The common theme are vibrant colors plus cuteness overdose. I don’t want to say it is a must to make your app look like a vibrant candy slotmachine. But in general the consider more colors when developing an iOS app for kids.

First thing you will find when deciding to develop for the kids catgory is Apple’s official website on that: https://developer.apple.com/app-store/kids-apps/. The first paragraph mentions: “Help kids learn, grow, and have fun with games, interactive stories, educational materials”. So, whenever you have an idea for a kids app, maybe think of the educational benefit of it first.

The kids category in the App Store has some stricter rules for apps released there. However, they are actually easier to comply with than you might think first if you ever releases something.

For more specific information on this, check the “Safety” section in App Store review guidelines: https://developer.apple.com/app-store/review/guidelines/#1.3

Also have a look at the legal section: https://developer.apple.com/app-store/review/guidelines/#5.1.4.

App Store Review in the Kids Category

Now let me quickly run through what I think are the most important differences to non-kids category releases:

  1. If your app was categorized in the Kids category once, it has to comply with its requirements forever. It does not have to stay there forever (as far as I know). However, even if you move away from the kids category, your app has to comply with the kids category rules. By that, parents can be confident that following (automatic) updates won’t include any non kid friendly content.
  2. Paywalls: As far as I can tell, there are no special requirements on a paywall or shop itself. Also what you can offer (e.g. subscriptions, consumables, etc) is the same as far as I know. However, you must lock anything purchaseable away from children (see next point)
  3. Parental gates lock out children from any content that must not be seen by children. You my ask: Why is this content in an app for kids at all if they must not see it?.
    Well, as mentioned before: You can have paywalls and in app purchases in a kids app. However, according to App Store guidelines you cannot just shove commercial offers into a kid’s face. Which is a good thing. The parents have to do the actual purchase. See following section for more on the parental gates itself.

Creating a Parental Gate for a kids app

In simple terms: A parental gate is a screen with a challenge to be solved by a parent. This means you have to make sure it is actually easily solveable for anyone. However, do not make it so easy that a child can just tap through to your paywall.

Apple’s website about the kids category (see https://developer.apple.com/app-store/kids-apps/) refers to randomized questions and answers. This is already a good starting point for designing your challenge screen. The easiest way to solve this in my opinion is generating easy math equations to solve. The following screenshot shows my parental gate. It is nothing fancy but it does its job.

For making it a little easier, I constrained the numbers to five. Also excluded negative values as results and only ask for additions or substractions. This seems difficult enough for smaller children randomly tapping around. Also it will be solveable for most adults.

Screenshot from iOS simulator showing simple arithmetic task as an example for a parental gate to comply with app store review guidelines for kids category.
Parental Gate in “Match Pair Toddler Puzzle Game”

What I do not recommend as a parental gate is anything you might expect as common knowledge. Mostly because this kind of knowledge may wildly differ across cultures, age groups etc. So, just stick to anything mostly unviversal understandable.

Code for parental gate with simple random arithmetic challenge

If you are interested in the easy algorithm behind my parental gate shown above, you can see the code below. This variant also includes multiplications which I decided to drop from the final release.

enum MathChallenge {
	case add(Int, Int)
	case substract(Int, Int)
	case multiply(Int, Int)

	var challengeText: String {
		switch self {
		case .add(let int, let int2):
			"\(int) + \(int2)"
		case .substract(let int, let int2):
			"\(int) - \(int2)"
		case .multiply(let int, let int2):
			"\(int) • \(int2)"
		}
	}

	var challengeResult: Int {
		switch self {
		case .add(let int, let int2):
			int + int2
		case .substract(let int, let int2):
			int - int2
		case .multiply(let int, let int2):
			int * int2
		}
	}

	static var randomChallenge: MathChallenge {
		let int1 = Int.random(in: 0...5)
		let int2 = Int.random(in: 0...5)

		let challenges: [MathChallenge] = [.add(int1, int2),
						   .substract(max(int1, int2), min(int2, int1)),
						   .multiply(int1, int2)]
		return challenges.randomElement()!
	}Code language: Swift (swift)

Then you can easily show your challengeText in a Text, UILabel or whatever you want and compare the typed result against challengeResult to proceed to the locked content.

In app purchases in an app for kids

As mentioned before, the paywall or shop does not really differ from one in a non-kids app. Only the entry has to be locked so that only parents do see it (see sections above).

The following screenshot does show the shop of my app. This exact shop sucessfully went through App Store review for being released the kids category.

Shop of “Match Pair Toddler Puzzle Game” with in app purchases (non consumable)

The usual “restore purchases” button as well as terms and conditions and your privacy policy have to be in place.

The products itself are listed vertically. In case a user purchases a product it will appear in a new section labeled with “Activated”. I am actually not sure if the App Store review guidelines mention anything about marking purchased products. I just thought it is nice to have an overview over them.

Tracking & Privacy in general

Just try to not be a bad human. When it comes to tracking children across apps or websites, just don’t do it and you are good to go. If you really want to track data for some reason there are a stricter rules. App Store review guidelines tell you more about that.

Conclusion

It is actually not that hard to comply with the more stricter rules of the kids category. If your apps are lightweight on tracking anyway, it is mostly about adding the parental gate.

One last thing: Please do not try to trick any of the kid’s category requirements. Kids are probably the most vulnerable group to any malicious things your app might be able to do.

Leave a Reply

Your email address will not be published. Required fields are marked *