Podcast Search

Developing Perspective

#194: In Review.

Select a time to play from there. The line being spoken is highlighted as the audio plays.

0:00:00Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

0:00:04news of note in iOS development, Apple and the like. I'm your host, David Smith. I'm

0:00:09an independent iOS developer based in Herne, Virginia. This is show number 194 and today

0:00:14is Thursday, September 4th. Developing Perspective is never longer than 15 minutes, so let's

0:00:19get started.

0:00:20All right, so today I wanted to start off by doing a kind of a quick run through of

0:00:26the app review guidelines.

0:00:28And specifically, I'll talk later on about some

0:00:30of the changes that were recently added to it,

0:00:33as well as a page Apple put up about common app rejection

0:00:36reasons.

0:00:37App review is kind of a core part of making apps

0:00:41and deploying them to the App Store.

0:00:43It's fundamentally, I guess, it is

0:00:45the gate through which every app that is sold on the App Store

0:00:48will pass.

0:00:49And so as a developer, it's kind of essential

0:00:52that we understand its purpose, its structure,

0:00:56as well as its content, probably.

0:00:59And, you know, App Review gets, in some ways, gets a rough name sometimes.

0:01:04It certainly can cause frustration.

0:01:07It can cause challenges and delays and things that you don't necessarily like.

0:01:12But at its core, I've grown to appreciate it.

0:01:15I've grown to, like, it is by no means perfect, but it does a pretty good job of solving an

0:01:23impossible problem.

0:01:25And once you start to realize that that problem is impossible, you start to have a better

0:01:29appreciation of it.

0:01:31So the goal, I think, in many ways of App Review is to try and at least set some minimum

0:01:36standards for what content is available on the App Store.

0:01:41And it's interesting to always keep in mind that the things that, in many ways, we draw

0:01:48our opinions about App Review or about the App Store from the things that get through,

0:01:54and not the things that get rejected.

0:01:56And I think, as I've spent more time thinking about that,

0:02:01I've started to keep in mind that a lot of times when I say,

0:02:04oh, I wish App Review was stricter about this.

0:02:06I can't believe this app got through App Review.

0:02:08I start to think about, well, if that app got through,

0:02:12what are the apps that got rejected, right?

0:02:14It's a really, really hard problem to start drawing lines

0:02:18and about things like,

0:02:19and that's starting to get into very subjective things

0:02:21like quality or UI appearance or those types of subjective things.

0:02:28There's obviously objective measures that they do very well with, but the subjective

0:02:31stuff gets tricky.

0:02:33But I think their goal is to try and have that bar.

0:02:36And if that bar didn't exist, I think the app store would be a much, much, much more

0:02:41terrible place.

0:02:42And so I appreciate that the bar is there, and I think that Apple does a pretty good

0:02:45job of enforcing it.

0:02:46It's not perfect, but it does a pretty good job.

0:02:49And one of the things that I've grown to appreciate about App Review is at least it forces me

0:02:53in my development process to have a period where I am thinking about other aspects of

0:02:59my app beyond just its functionality rather than just the actual coding and design of

0:03:05it.

0:03:06There's parts of my app that I don't necessarily naturally want to think about.

0:03:10Things like the privacy policy implications of my application or how it's going to be

0:03:15viewed in terms of the marketing in the store or those types of things.

0:03:19are things that it requires you to think about and to do correctly in order for an app to

0:03:24get into the store. I've had apps rejected many, many, many times, and every time that

0:03:29happens I've learned something about that process, something that I shouldn't do in

0:03:33the future. Sometimes app reviews even caught bugs, which are kind of embarrassing that

0:03:39it took someone external to me to catch it, but at least I'm glad that it's app review

0:03:44and not my customer.

0:03:46All right, next, so that's kind of like an overview

0:03:49of the actual app review process generally.

0:03:51So you submit an app, it goes into app review,

0:03:54it goes from waiting in review to in review,

0:03:56and then they take a look at it.

0:03:58And Apple recently published a really interesting document,

0:04:00which is linked in the show notes,

0:04:02talking about common reasons for app projections.

0:04:05And I think their purpose, probably,

0:04:06in putting this out there is to at least draw your attention

0:04:09to things that are just not going to get through

0:04:12and to try and understand why they're not going to get through.

0:04:15And they list out and even break down even some of the reasons, the most common reasons

0:04:20why this is the case.

0:04:22And some of them are kind of interesting.

0:04:24So 14% of app rejections are about not providing an adequate amount of information.

0:04:31This could be metadata information.

0:04:33This could be things relating to requiring that you provide the users, the app reviewers

0:04:39with a test account for your application.

0:04:42Something like that.

0:04:43somehow they're unable to complete the review because of the lack of information.

0:04:49Fourteen percent seems a pretty high number for that, if I'm honest.

0:04:52And so it's one of those things like that is the easiest thing for us to do.

0:04:55It's not functional, it's just about providing information.

0:04:59So make sure we, I guess we just need to make sure we provide all the information that the

0:05:02app reviewers could need in order to perform their review.

0:05:07Eight percent of app projections are because an app exhibits bugs.

0:05:12That's a pretty high number, I suppose.

0:05:148% of apps that they're looking at have bugs in them.

0:05:19This is most likely things-- or most obviously things

0:05:22like crashes.

0:05:23The classic-- at any point in app review and have crashes,

0:05:27it is immediately rejected.

0:05:28That's-- as best as I understand, that's the process.

0:05:31But this could also be other things like weird glitches,

0:05:33data problems.

0:05:35I've run into this a little bit where a web service had

0:05:37an issue that they ran into that then causes

0:05:41to look like it was a bug.

0:05:436%, the next most likely rejection,

0:05:45is that an app does not comply with the terms of the program

0:05:48license agreement, which I guess that could be anything.

0:05:51There's a lot of things in the app review license agreement.

0:05:55But this is probably going to be people

0:05:57who are doing things that you just shouldn't be making apps

0:05:59for.

0:06:01And then the last one I'm going to talk about in this section

0:06:05is guideline 10.6, which is talking about that your app has

0:06:09to look good.

0:06:11And so about one in 20 apps that are submitted to the App Store have a visual appearance

0:06:18that is below the bar that Apple is setting, which, given some of the things that get through,

0:06:23means that there's a lot of apps that aren't particularly well-designed that are being

0:06:27submitted.

0:06:28But anyway, this page is pretty long and interesting to look at.

0:06:32Like I said, I linked it in the show notes, but I just wanted to highlight a few of those

0:06:35things because a lot of those rejection reasons are entirely within our control to change.

0:06:40there are always going to be the rejection for the more

0:06:43esoteric reason.

0:06:46You're trying to build this thing that

0:06:48does something in kind of a new and interesting way,

0:06:50and that causes app rejection problems.

0:06:52But not including the appropriate information

0:06:55and metadata with your application,

0:06:57having bugs and crashes, having a non-clean interface,

0:07:01broken links to websites, things like that, placeholder content.

0:07:04There's a lot of things we can just fix.

0:07:06And so read this site and just keep

0:07:08in the back of your mind as you're working on it.

0:07:11And lastly, I wanted to just talk through some of the changes that they recently added

0:07:16to the App Review Guidelines.

0:07:18One of the things I love, somewhat recently, they made the App Review Guidelines a non-private

0:07:23page in the developer portal, which makes me feel like I can talk about it finally in

0:07:28actual detail.

0:07:29Because before it was always kind of this weird semi-NDA thing.

0:07:32But anyway, they've now put it up in public, so I feel like I can just chat about it.

0:07:37So as of, I think it was Tuesday this week, September 2,

0:07:42something like that, they published

0:07:44a big set of updates, essentially the iOS 8 updates

0:07:48to the app review guidelines.

0:07:49And some of them are fairly minor updates.

0:07:51Some of these are just adding the word, like previews,

0:07:53when you were before they used to say screenshots.

0:07:56Now it's screenshots and previews.

0:07:57Things like that, pretty straightforward.

0:07:59There's a couple of those.

0:08:00And just as a note, I went ahead and organized these pretty

0:08:05nicely in the show notes, which you can either see on any whatever podcast client you're

0:08:10looking at, or if you go to developandrespect.com, you'll see it there. So I kind of broke out

0:08:15the changes in a nice easy to read format. So if you'd like to follow along as I'm going

0:08:20through them, that's a great way to do it. Or if you just want to look at that as a reference

0:08:24in the future.

0:08:25All right. So the first major set of changes is about app previews. And so these are the

0:08:30videos that Apple has now allowed us to add to iTunes Connect that will be displayed in

0:08:36the App Store along with your application.

0:08:38And they're making some fairly clear guidelines around what you can put into those videos

0:08:43and then having a few kind of policies around that.

0:08:46So the first thing is they can only show video screen captures, voiceover, and then textual

0:08:51and design overlays.

0:08:52That's all they can show.

0:08:54Which actually as a, on a personal note, I love because that's so much easier to do than

0:08:59And if we had to actually make sandwich videos for our apps in order to be on a level playing

0:09:04field.

0:09:05So even if you have this immense graphic design budget, and media budget, marketing budget,

0:09:10you still can only take screen captures from your app and combine them with voiceovers

0:09:16and overlays.

0:09:18So that's all you can do.

0:09:19You can't show people using the app, there's no hands, there's no gestures, those types

0:09:22of things.

0:09:23It is a screen recording with overlays and voice.

0:09:28Obviously, that's kind of nice, the exact process and how these are going to look.

0:09:33I'm still struggling with this for myself. I don't know exactly what my app previews are going to look like.

0:09:37I'm sure I'll do an episode on it down the road.

0:09:40To start off with, they're probably going to be fairly basic, and then I'm going to see what other people do and kind of get some ideas from that.

0:09:46Media and video design is not something that I am an expert on, and so I will kind of see where that goes.

0:09:52They have a few other little policies around app previews.

0:09:55You can't display personal information.

0:09:57You can't display or use content or music that

0:10:01isn't licensed for that reason.

0:10:04This is especially relevant probably

0:10:06if you're doing things like just playing

0:10:08a song from the user's iPod library

0:10:11or streaming a video off YouTube.

0:10:13If that includes content that is copy written,

0:10:15you have to have a license to display it, or if not.

0:10:19And so you just have to be careful about what

0:10:21it is you're actually displaying.

0:10:22And if you're doing something that

0:10:23involves personal information, you

0:10:25might need to create fake people, like Apple always

0:10:27does with John Appleseed.

0:10:30All right, so that's app previews.

0:10:32Another interesting note, they added in 14.3,

0:10:34which is the area about personal attacks.

0:10:37You now have to-- if your app displays

0:10:39user-generated content, you must have

0:10:41a method for filtering objectionable content,

0:10:44a mechanism for flagging it as offensive,

0:10:46and an ability to block abusive users from that service, which

0:10:50makes sense, but is now actually an official part of the guidelines that we have to do.

0:10:57In Section 17, which is the privacy policy or privacy area, they now say that if you

0:11:02include account registration or access to a user's existing account, if there's any

0:11:08kind of account process, you must include a privacy policy or your app will be rejected.

0:11:13This is a privacy policy that I believe is the one that you specify in iTunes Connect,

0:11:17So make sure you link and think through a privacy policy

0:11:20if you do anything with a user account.

0:11:23All right.

0:11:24Next, I'm going to dive into extensions.

0:11:27So extensions are these little bundles

0:11:29that we can add to the outside of our application.

0:11:32And there's a couple of interesting rules around them.

0:11:34I'm not going to read them all out

0:11:35because they'll take too long.

0:11:36But basically, your app that is hosting the extension, A,

0:11:43must have some functionality.

0:11:44So it can't just be like, it's an app whose purpose is only an extension.

0:11:49When you launch the app itself, it's got to do something.

0:11:51This can just be a help screen or some settings or something like that.

0:11:53But you can't just have a blank app whose entire interface is in an extension.

0:11:58Extensions themselves cannot contain any marketing, advertising, or in-app purchases.

0:12:03So if you have anything like that, you must put it inside the host app and not in the

0:12:08extension view itself.

0:12:12have a bunch of things around them that you have to deal with. So keyboards have to have

0:12:16number and decibel keyboards. They must remain functional without a network connection. And

0:12:20you must put a keyboard extension in the category of utilities and it must have a privacy policy.

0:12:26Which fair enough because a keyboard is getting access to a lot of interesting, a lot of very,

0:12:31very personal information. Because obviously if the user is typing with it, what they're

0:12:34typing is pretty personal. So in general, extensions make, I think that makes sense

0:12:39for extensions.

0:12:40I think that you have to have a host app that makes sense.

0:12:43Some apps, the extension is an actual extension

0:12:45of its current functionality.

0:12:46For some things that you can imagine,

0:12:49the app's primary purpose is to be used as an extension.

0:12:51But the host app has to at least provide information and help

0:12:55to the user about how to use it.

0:12:58HomeKit-- HomeKit is just kind of basically you

0:13:02have to use it for home automation.

0:13:04And don't be creepy with the user's data.

0:13:06In fact, you can't advertise or do data mining on the data you collect as part of HomeKit.

0:13:12I'm not doing much with HomeKit, so I'll just mention it briefly there and say if you want

0:13:15to read more, go to section 26.

0:13:17Then HealthKit.

0:13:18HealthKit's kind of interesting.

0:13:20There's a whole bunch of stuff about privacy in here, essentially.

0:13:23There's a lot of stuff to make sure that if you are at all touching HealthKit, that you

0:13:27are being very thoughtful and careful about what you're doing with the user's data, about

0:13:32how you're going to be using that and integrating into your application.

0:13:35It's actually kind of interesting just for, as a side note, for me and Podometer++, I've

0:13:39been playing around with whether I should integrate with that.

0:13:43Right now, I haven't moved too far forward with that in a lot of ways because of these

0:13:47types of concerns that as soon as I start accessing very, very personal private health

0:13:51information about my customers, the bar for which I need to be managing that data and

0:13:56being thoughtful about it goes up dramatically.

0:13:58And I just don't necessarily have the time and energy to be able to give it what it would

0:14:02need to require.

0:14:03But something to keep in mind.

0:14:05And then lastly, there's a couple of things about TestFlight.

0:14:08TestFlight can only be used for apps

0:14:09that you intend to distribute publicly.

0:14:11The new TestFlight thing can-- the app that

0:14:14is submitted to TestFlight would have to pass App Review

0:14:16guidelines in and of itself.

0:14:17And you have to resubmit it for review any time there

0:14:20are material changes.

0:14:21And lastly, you cannot pay your testers who are accessing

0:14:24your application through TestFlight.

0:14:29I imagine they cannot pay you, and you cannot pay them.

0:14:31So it has to be a free exchange.

0:14:32All right.

0:14:33That's it for App Review.

0:14:34Next week's a big exciting announcements,

0:14:36and so I will expect to have an episode relating to that.

0:14:39But otherwise, I hope you have a great week.

0:14:41Happy coding.

0:14:42Email me, david@developingperspective.com

0:14:44if you have any questions.