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.