Developing Perspective

#194: In Review.


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

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

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

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

00:00:19   get started.

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

00:00:26   the app review guidelines.

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

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

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

00:00:36   reasons.

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

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

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

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

00:00:48   will pass.

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

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

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

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

00:01:04   It certainly can cause frustration.

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

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

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

00:01:23   impossible problem.

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

00:01:29   appreciation of it.

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

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

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

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

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

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

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

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

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

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

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

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

00:02:18   and about things like,

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

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

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

00:02:31   stuff gets tricky.

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

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

00:02:41   terrible place.

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

00:02:45   job of enforcing it.

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

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

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

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

00:03:05   it.

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

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

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

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

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

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

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

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

00:03:44   and not my customer.

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

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

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

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

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

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

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

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

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

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

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

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

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

00:04:20   why this is the case.

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

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

00:04:31   This could be metadata information.

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

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

00:04:42   Something like that.

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

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

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

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

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

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

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

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

00:05:14   8% of apps that they're looking at have bugs in them.

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

00:05:22   like crashes.

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

00:05:27   it is immediately rejected.

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

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

00:05:33   data problems.

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

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

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

00:05:43   6%, the next most likely rejection,

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

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

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

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

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

00:05:59   for.

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

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

00:06:09   to look good.

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

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

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

00:06:27   submitted.

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

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

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

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

00:06:43   esoteric reason.

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

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

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

00:06:52   But not including the appropriate information

00:06:55   and metadata with your application,

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

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

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

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

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

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

00:07:16   to the App Review Guidelines.

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

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

00:07:28   actual detail.

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

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

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

00:07:42   something like that, they published

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

00:07:48   to the app review guidelines.

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

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

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

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

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

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

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

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

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

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

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

00:08:24   in the future.

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

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

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

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

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

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

00:08:51   and design overlays.

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

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

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

00:09:04   field.

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

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

00:09:16   and overlays.

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

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

00:09:22   of things.

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

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

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

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

00:09:40   To 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.

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

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

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

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

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

00:10:04   This is especially relevant probably

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

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

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

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

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

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

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

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

00:10:23   involves personal information, you

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

00:10:27   does with John Appleseed.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00:11:23   All right.

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

00:11:27   So extensions are these little bundles

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

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

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

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

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

00:11:43   must have some functionality.

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

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

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

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

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

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

00:12:08   extension view itself.

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

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

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

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

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

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

00:12:39   for extensions.

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

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

00:12:45   of its current functionality.

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

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

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

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

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

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

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

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

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

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

00:13:17   Then HealthKit.

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

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

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

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

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

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

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

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

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

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

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

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

00:14:02   need to require.

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

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

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

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

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

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

00:14:16   guidelines in and of itself.

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

00:14:20   are material changes.

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

00:14:24   your application through TestFlight.

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

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

00:14:32   All right.

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

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

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

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

00:14:41   Happy coding.

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

00:14:44   if you have any questions.