PodSearch

Developing Perspective

#121: Dealing with Rejection.

 

00:00:00 ◼   ► Hello and welcome to Developing Perspective.

00:00:02 ◼   ► Developing Perspective is a podcast discussing news of note in iOS development, Apple, and

00:00:06 ◼   ► the like.

00:00:07 ◼   ► I'm your host, David Smith.

00:00:08 ◼   ► I'm an independent iOS and Mac developer based in Herndon, Virginia.

00:00:10 ◼   ► This is show number 121, and today is Tuesday, April 23rd.

00:00:16 ◼   ► Developing Perspective is never longer than 15 minutes, so let's get started.

00:00:19 ◼   ► All right.

00:00:20 ◼   ► So today, I'm going to be talking about app store rejection.

00:00:24 ◼   ► And this is sort of the topic of my,

00:00:27 ◼   ► kind of in the front of my mind,

00:00:28 ◼   ► because the first version, or first submission

00:00:31 ◼   ► of Feeder Angular to the store was rejected.

00:00:34 ◼   ► And that's totally unexpected,

00:00:35 ◼   ► and I'll get into that later.

00:00:36 ◼   ► But certainly I always just sort of,

00:00:38 ◼   ► it's an interesting part of the app process,

00:00:41 ◼   ► being in the app store, doing app review.

00:00:43 ◼   ► And so I figured that would be an interesting thing

00:00:45 ◼   ► to kind of walk through what that's like,

00:00:46 ◼   ► and how I look at it, the experience I've had, and so on.

00:00:50 ◼   ► So broadly, I'm gonna take a step back

00:00:51 ◼   ► and make sure everyone kind of knows what I'm talking about.

00:00:53 ◼   ► So if you were going to make an app and put it in either the iOS or Mac App Store, this

00:00:57 ◼   ► applies to a couple of other different stores, notably not the Google Play Store, but most

00:01:01 ◼   ► stores seem to have some kind of review process.

00:01:03 ◼   ► But I'm going to talk about the iTunes and App Store process.

00:01:06 ◼   ► And so basically you submit your application and it sits around for a little while.

00:01:09 ◼   ► And in Apple's case, it says, "Waiting for review is the app status that it will have."

00:01:14 ◼   ► And it sits there for a little while.

00:01:17 ◼   ► And then at some point, it changes from "Waiting for review" to "In review."

00:01:21 ◼   ► And exactly what that means is entirely ambiguous,

00:01:23 ◼   ► other than the fact that you imagine that somehow more

00:01:26 ◼   ► things are happening.

00:01:28 ◼   ► But in review can take any amount of time.

00:01:30 ◼   ► I've had it take minutes.

00:01:31 ◼   ► I've had it take hours.

00:01:32 ◼   ► I've had it take days.

00:01:34 ◼   ► And so while it's in that process, the people at Apple

00:01:38 ◼   ► are going through the application

00:01:40 ◼   ► and doing some thing to it.

00:01:42 ◼   ► That process is somewhat opaque in terms of you

00:01:44 ◼   ► don't know exactly what's going on.

00:01:46 ◼   ► But generally speaking, you expect

00:01:48 ◼   ► that they're looking for things like,

00:01:51 ◼   ► Does it crash?

00:01:52 ◼   ► Does it do something that's not allowed?

00:01:54 ◼   ► Is it implemented in a way that is consistent with the human interface guidelines?

00:01:59 ◼   ► Those types of questions.

00:02:00 ◼   ► And they're kind of reviewing your application to make sure it's something that they want

00:02:02 ◼   ► to put on the store.

00:02:04 ◼   ► And if they do, you'll get an email or an update saying, "Ready for sale?"

00:02:09 ◼   ► or something like that, or "Processing for App Store.

00:02:11 ◼   ► Your app is approved."

00:02:12 ◼   ► Great.

00:02:13 ◼   ► And then that process begins, it goes into the store, or if it's an update, it gets pushed

00:02:17 ◼   ► out through the update system.

00:02:18 ◼   ► However, if something is not good,

00:02:21 ◼   ► then you will, instead of getting an email

00:02:25 ◼   ► that's saying, you know, ready for sale

00:02:27 ◼   ► or processing for App Store, you'll get something

00:02:28 ◼   ► that says application submission feedback,

00:02:31 ◼   ► which is their kind of very passive, soft,

00:02:33 ◼   ► gentle way of saying your app was rejected.

00:02:36 ◼   ► You actually, you know, you don't actually get anything

00:02:38 ◼   ► that says rejection until you go into iTunes Connect.

00:02:40 ◼   ► You just get the application feedback submission,

00:02:42 ◼   ► or submission feedback.

00:02:44 ◼   ► And it's not something to be sort of ashamed of

00:02:47 ◼   ► or feel too bad about if you get.

00:02:49 ◼   ► I've been doing this a while, and I've probably

00:02:52 ◼   ► dealt with probably, I guess, 30 or 40 rejections

00:02:55 ◼   ► over the course of all the apps I've submitted

00:02:57 ◼   ► and all the different places and all the different problems.

00:03:00 ◼   ► So it's just part of the process.

00:03:01 ◼   ► And you can be rejected for all kinds of things.

00:03:04 ◼   ► The most obvious and simple ones are things like,

00:03:07 ◼   ► if your app crashes ever during the review process,

00:03:10 ◼   ► it's an automatic rejection, for example.

00:03:12 ◼   ► It's one of those things that you'll get a crash log

00:03:14 ◼   ► and they'll send it to you.

00:03:16 ◼   ► Basically, those types of things are just immediate.

00:03:19 ◼   ► Then there's a sort of the second category of things where our topics can be rejected

00:03:23 ◼   ► because they, for a variety of reasons that, for which they would violate the app review

00:03:29 ◼   ► guidelines.

00:03:30 ◼   ► And so these can be things like content things, they include content that's objectionable

00:03:34 ◼   ► or they're not ranked, they're not rated accordingly because of their content.

00:03:38 ◼   ► It's doing something that they don't that they don't allow or don't want to allow.

00:03:42 ◼   ► all kinds of things that you can kind of do

00:03:44 ◼   ► or it could be not useful enough

00:03:46 ◼   ► is often a complicated one.

00:03:48 ◼   ► I know of a lot of friends who have written an app

00:03:50 ◼   ► with a very narrow focus purpose

00:03:52 ◼   ► and they can be rejected for saying

00:03:54 ◼   ► it's not useful enough, which is complicated to define.

00:03:57 ◼   ► But generally speaking, they'll go through the review

00:03:59 ◼   ► guidelines and say, whenever you get a rejection,

00:04:01 ◼   ► you'll get a reason why.

00:04:03 ◼   ► That reason may not be something that you agree with,

00:04:05 ◼   ► it may not be something that you like,

00:04:07 ◼   ► but it'll be a reason that you can kind of start from.

00:04:09 ◼   ► And to Apple's credit, what they used to do

00:04:11 ◼   ► to do is that would just be all you'd get.

00:04:13 ◼   ► And you could kind of, all you could really do

00:04:16 ◼   ► was resubmit and make any changes,

00:04:18 ◼   ► add something in the review commentary.

00:04:20 ◼   ► But basically that was it.

00:04:22 ◼   ► Now what they've done now, which is a little bit better,

00:04:24 ◼   ► is they've added something called the resolution center.

00:04:26 ◼   ► So when an app is rejected, or an in-app purchase

00:04:29 ◼   ► is rejected or anything like that,

00:04:30 ◼   ► you will get a, rather than just getting a message

00:04:34 ◼   ► with, you know, saying generally what it is,

00:04:36 ◼   ► you'll get a slightly longer form thing

00:04:38 ◼   ► in what's called the resolution center.

00:04:39 ◼   ► And this is kind of like, how do you feel,

00:04:41 ◼   ► a chat or a forum, not real time, but it's a way to have a back and forth conversation

00:04:46 ◼   ► with App Review.

00:04:47 ◼   ► And so this, for example, with Feed Wrangler, I was rejected twice, essentially, in the

00:04:52 ◼   ► same submission.

00:04:53 ◼   ► The first one was what they called a metadata rejection.

00:04:55 ◼   ► And a metadata rejection is where the app isn't rejected outright, but there's something

00:04:59 ◼   ► about it that they are not really sure about, or this thing in your description or your

00:05:03 ◼   ► icons or something that they want changed or they have questions about, and they can

00:05:08 ◼   ► ask you questions.

00:05:09 ◼   ► And sometimes it's just, in my case,

00:05:10 ◼   ► it was just they had a question about how something worked

00:05:13 ◼   ► or how I expected something to work,

00:05:14 ◼   ► and they wanted to have clarification.

00:05:16 ◼   ► So you go in and write a response

00:05:17 ◼   ► and send them something, something.

00:05:19 ◼   ► And then you kind of have a little back and forth.

00:05:21 ◼   ► And it's very helpful to think of this process

00:05:24 ◼   ► as all the communications that you have

00:05:27 ◼   ► in the resolution center,

00:05:28 ◼   ► you want to be as nice as you can in that sense.

00:05:32 ◼   ► I've definitely, I've experienced myself

00:05:35 ◼   ► sort of when you can get frustrated,

00:05:36 ◼   ► it can feel like you're kind of talking

00:05:37 ◼   ► to something a bit that's so opaque or intractable,

00:05:41 ◼   ► like what do you do when you get really frustrated.

00:05:43 ◼   ► But this isn't the kind of thing that you want to get to.

00:05:45 ◼   ► You want to keep your cool, handle yourself

00:05:48 ◼   ► in a way that is responsible and kind

00:05:51 ◼   ► and just appropriate for who you're interacting with.

00:05:53 ◼   ► Obviously, it's not like the other--

00:05:55 ◼   ► you're talking to a person probably

00:05:57 ◼   ► in Cupertino or somewhere.

00:05:58 ◼   ► And so you want to be kind.

00:05:59 ◼   ► You want to be nice.

00:06:00 ◼   ► You want to be reasonable about--

00:06:01 ◼   ► if they're asking a question, you want to answer it.

00:06:03 ◼   ► And don't be like--

00:06:06 ◼   ► even if it's something you think is obvious

00:06:07 ◼   ► or something that's clear, it's like be patient

00:06:09 ◼   ► and understanding and kind of work through

00:06:11 ◼   ► and create screenshots that lets you make attachments

00:06:14 ◼   ► to your posts to the resolution center, so great.

00:06:17 ◼   ► If they have a question about how to do something,

00:06:19 ◼   ► it's like take the time to,

00:06:21 ◼   ► take a series of screenshots, map them out.

00:06:24 ◼   ► I use Napkin for this, which is an agent distilled

00:06:28 ◼   ► Guy English and Chris Ferris's app

00:06:30 ◼   ► for doing that kind of image annotation.

00:06:32 ◼   ► And it works great for that.

00:06:33 ◼   ► You kind of lay it out, and your goal

00:06:36 ◼   ► is to get them on your side rather than being sort of,

00:06:41 ◼   ► I guess, argumentative or confrontational.

00:06:43 ◼   ► Your goal is to be like, hey, I'm sorry you had that problem.

00:06:46 ◼   ► I'm sorry you had that question.

00:06:48 ◼   ► Let me try and kind of flesh out what I was thinking about that

00:06:51 ◼   ► or why that's a problem.

00:06:52 ◼   ► This isn't the time to be sending them a Google search

00:06:54 ◼   ► result explaining something to them.

00:06:56 ◼   ► It's something you want to take the advantage of opportunity.

00:06:58 ◼   ► It's a rare thing that you have an opportunity

00:07:00 ◼   ► to talk to out-per-view.

00:07:01 ◼   ► So you want to take full advantage of that to talk to them.

00:07:05 ◼   ► And basically, in my case, they had a question.

00:07:07 ◼   ► I responded.

00:07:08 ◼   ► And ultimately, the app was rejected.

00:07:10 ◼   ► It was rejected for something that I kind of--

00:07:12 ◼   ► I wouldn't say I expected, but I kind of knew it might be happening.

00:07:15 ◼   ► And it was the in-app purchase type that I had chosen.

00:07:17 ◼   ► I had chosen an auto-renewing one, which is something like, in theory,

00:07:20 ◼   ► you can use for something like what I was doing with an ongoing subscription

00:07:24 ◼   ► cloud service.

00:07:26 ◼   ► But in this particular case, they said it wasn't eligible.

00:07:29 ◼   ► And I'm not exactly sure what--

00:07:31 ◼   ► it's just I don't know if it's just slightly ambiguous

00:07:33 ◼   ► guidelines.

00:07:33 ◼   ► I'm like, all right, that's fine.

00:07:34 ◼   ► If they don't want to do it that way,

00:07:35 ◼   ► I'll do a non-recurring subscription model,

00:07:37 ◼   ► change up E&I purchase, change up my purchasing system

00:07:40 ◼   ► a little bit, and resubmit it.

00:07:42 ◼   ► And that's where I am now.

00:07:43 ◼   ► It's back in waiting for review, I think.

00:07:47 ◼   ► And that's kind of the process you go through.

00:07:49 ◼   ► I'm not going to get too--

00:07:51 ◼   ► it's like, it's one of those things that after it's rejected,

00:07:53 ◼   ► you can certainly start kind of attacking it still

00:07:56 ◼   ► in terms of going to the resolution center

00:07:57 ◼   ► and be like, hey, I think it really should be allowed

00:08:00 ◼   ► to do this, I think for this, this, and that reason.

00:08:02 ◼   ► I need to be able to do this or whatever it is.

00:08:05 ◼   ► And there's probably something to that.

00:08:08 ◼   ► If that's a crux of really important to your business

00:08:12 ◼   ► or absolutely vital, that you really think

00:08:13 ◼   ► you should be able to do something and you can't,

00:08:16 ◼   ► maybe it's worth pursuing.

00:08:18 ◼   ► In general, I think if you've listened to the show

00:08:20 ◼   ► for a while, you know that I'm a fairly pragmatic person.

00:08:21 ◼   ► And instead, I'm like, okay, well, that didn't work.

00:08:25 ◼   ► I'm doing some things with subscriptions

00:08:27 ◼   ► I think are intentionally to make this easier. For example, all of my subscriptions are

00:08:31 ◼   ► yearly, or my only subscription. My subscription is based on a yearly model. And so that in

00:08:37 ◼   ► general, I don't have to worry too much about a lot of this back and forth that can happen

00:08:42 ◼   ► if I had set up, you know, it's a monthly or a weekly or something like that type of

00:08:45 ◼   ► a subscription, it would be really annoying if I couldn't use a non-recurring style. So

00:08:49 ◼   ► instead, I was like, you know what, I'm just going to adjust my pricing, I'm going to simplify

00:08:52 ◼   ► things a little bit for myself and for my customers. It's just one flat yearly price.

00:08:57 ◼   ► And so in some ways, I don't even have to really worry

00:08:59 ◼   ► about dealing with the way in which I reach out to customers

00:09:03 ◼   ► for that renewal for 365 days after the app launches.

00:09:08 ◼   ► Obviously, the app is set up to work that way already,

00:09:12 ◼   ► but I can really polish and refine and work on the messaging

00:09:14 ◼   ► and exactly how I reach out to people later.

00:09:16 ◼   ► So it's like, OK, that's fine.

00:09:18 ◼   ► I'm not going to get into a big fuss about it.

00:09:20 ◼   ► There may come a point down the road where I revisit this.

00:09:23 ◼   ► And one approach that I have definitely done before myself

00:09:26 ◼   ► is when I'm trying to launch something,

00:09:28 ◼   ► I just want to get it out there.

00:09:29 ◼   ► And so I'll put this-- whatever I'll go for--

00:09:32 ◼   ► do exactly what Apple says for version 1.0.

00:09:35 ◼   ► And for version 1.1 or whatever it is,

00:09:37 ◼   ► like a little bit farther down, I

00:09:39 ◼   ► can submit something that's a bit closer to the thing that

00:09:42 ◼   ► was rejected before.

00:09:44 ◼   ► And to see if that gets rejected,

00:09:46 ◼   ► then I can maybe go have a bit more of a back and forth

00:09:48 ◼   ► in the resolution center and really talk to them

00:09:50 ◼   ► and explore it and see how far I can go with that.

00:09:53 ◼   ► But I'm doing it at a time when that's not holding up

00:09:56 ◼   ► launch, it's not holding up my customers, it's just kind of something that I'm doing.

00:10:00 ◼   ► And I think probably something more generally that you can do is you can go through a process

00:10:04 ◼   ► of what I would call a test submission process.

00:10:07 ◼   ► This is something where, you know, it's like, I think actually panic did this for status

00:10:10 ◼   ► board, which makes a lot of sense, because some of what they do is very close to the

00:10:14 ◼   ► edge of an app review guideline about multi, like multi widget, alternative desks, desktop

00:10:20 ◼   ► stuff.

00:10:21 ◼   ► But so what they did is I think they took a proof of concept and it was working and

00:10:25 ◼   ► obviously it's like met the general review guidelines and they submitted that early.

00:10:28 ◼   ► So that if Apple was going to come back and say, No, you can't do that at all. They could

00:10:33 ◼   ► have explored that as early as you can. And it's just something you want to take advantage

00:10:37 ◼   ► of. I mean, understanding that it's not like it's for better or worse, the app review process

00:10:41 ◼   ► does not have limits on it in terms of number of submissions, number of reviews, those types

00:10:45 ◼   ► of things. And obviously, you don't go nuts with that, you know, constantly be submitting

00:10:48 ◼   ► like, you know, half baked ideas, but which if it's it's a valuable thing to understand

00:10:53 ◼   ► that app review is a very, very high risk,

00:10:57 ◼   ► I guess you could call it, activity in making an app,

00:11:00 ◼   ► in that it is a very binary thing.

00:11:02 ◼   ► If your app is rejected, it is rejected.

00:11:04 ◼   ► That's it, and especially on iOS,

00:11:06 ◼   ► there's not an alternative, a good alternative for that.

00:11:09 ◼   ► You could say, oh, I can put it on like the jailbreak stores

00:11:11 ◼   ► or things, but the reality is you want to be

00:11:13 ◼   ► on the app store if you're trying to make your living

00:11:15 ◼   ► from selling apps, and so it's very, very important

00:11:18 ◼   ► that you respect this process and understand it

00:11:21 ◼   ► and make sure that you are planning for it.

00:11:23 ◼   ► And by that I mean, so like I'm hoping right now

00:11:26 ◼   ► to launch Feed Wrangler next Tuesday, in seven days.

00:11:30 ◼   ► So Tuesday, April 30th.

00:11:32 ◼   ► That's my goal right now.

00:11:33 ◼   ► But obviously, the Feed Wrangler app is currently still waiting

00:11:38 ◼   ► for review for the second round.

00:11:40 ◼   ► And so it's entirely possible that could change.

00:11:45 ◼   ► And so you just have to be careful and plan for that

00:11:47 ◼   ► and expect that it's very unlikely,

00:11:49 ◼   ► Even if you look at the iOS review times recently,

00:11:52 ◼   ► I think are about seven or eight days.

00:11:54 ◼   ► But you can't really plan on a seven or eight day from when you

00:11:56 ◼   ► submit to when you launch, probably.

00:11:58 ◼   ► Typically what I do is I take that number and I double it,

00:12:01 ◼   ► and that's what I plan for.

00:12:02 ◼   ► And that's generally what I'm doing with this one.

00:12:04 ◼   ► I kind of was expecting-- I was hoping to launch today,

00:12:07 ◼   ► but it didn't quite work out.

00:12:08 ◼   ► And so I'm going to be launching hopefully next Tuesday.

00:12:12 ◼   ► And so that's kind of the process you go through.

00:12:14 ◼   ► And then hopefully it'll just be approved.

00:12:16 ◼   ► A couple things, also, just random notes

00:12:18 ◼   ► about app rejections and things, things that are never helpful,

00:12:22 ◼   ► really, or useful to talk to you when you're dealing with someone

00:12:26 ◼   ► in with app review and something gets rejected, saying, but this

00:12:29 ◼   ► other app also does this. Not helpful. I don't either say,

00:12:34 ◼   ► well, we should have rejected that too. It's not helpful to

00:12:37 ◼   ► say, you know, oh, it's like, but here's someone else who does

00:12:40 ◼   ► it. It's like, they'll say, well, that's, you know, that

00:12:42 ◼   ► like, that probably should have been rejected to then I'm sorry.

00:12:45 ◼   ► Like that's all there is being I said, I said, don't be argumentative, don't get upset about

00:12:50 ◼   ► it.

00:12:51 ◼   ► Every now and then you actually get a call from Cupertino.

00:12:53 ◼   ► So if you get a if you get a call from them, obviously, you're going to want to answer

00:12:57 ◼   ► it.

00:12:58 ◼   ► And you're going to want to talk to it.

00:12:59 ◼   ► And I think it was at 418, I think is the area code for app review, or for not for app

00:13:04 ◼   ► review, but for Apple.

00:13:06 ◼   ► And so if you ever get a call from 418, let me just let me just double check that 408,

00:13:11 ◼   ► sorry, 408.

00:13:12 ◼   ► 408. If you ever get a call from a 408 number that you don't recognize, that is probably

00:13:17 ◼   ► someone from Cupertino calling to talk to you about your app. And so answer the phone,

00:13:22 ◼   ► talk to him, don't let it go to voicemail kind of thing. And again, in that conversation,

00:13:25 ◼   ► it can be very frustrating because often you'll be talking to somebody and they're able, they're

00:13:30 ◼   ► not able to say as much as you would like. You can't be, typically what they're able

00:13:33 ◼   ► to say is here's the line in the app review guidelines that you're violating it. And you

00:13:38 ◼   ► can start getting like, well, what if I did this? What if I did that? And like, typically

00:13:41 ◼   ► they're unable to say, well, I don't give you a clear answer.

00:13:44 ◼   ► They'll say, that's, you know, this is the policy. And this is

00:13:48 ◼   ► what you are doing that's against that policy. And be

00:13:50 ◼   ► like, well, what if I did this? It's like, well, you have to

00:13:52 ◼   ► reset the app. And when we take a look at it, and so just be

00:13:55 ◼   ► patient, be understanding and realize that they're doing their

00:13:57 ◼   ► job, you're doing yours. And the best thing for everybody is for

00:14:00 ◼   ► you to be, you know, kind, respectful and just, you know,

00:14:03 ◼   ► roll with it. So that's, that's our projection. Hopefully, it's

00:14:07 ◼   ► helpful. I said, it's, I've gone through this so many times that

00:14:10 ◼   ► I'm not as upset about it or as disappointed as I used to be.

00:14:13 ◼   ► It's kind of expected in some ways

00:14:14 ◼   ► that app reviewers caught a lot of bugs and problems

00:14:18 ◼   ► in my apps, which I appreciate.

00:14:19 ◼   ► It's also caused some frustration or problems for me.

00:14:22 ◼   ► But it's just part of the process.

00:14:23 ◼   ► You just need to understand it, plan for it,

00:14:25 ◼   ► and expect that this is something that could happen.

00:14:27 ◼   ► All right.

00:14:28 ◼   ► That's it for today's show.

00:14:29 ◼   ► As always, if you have questions, comments, concerns,

00:14:31 ◼   ► or complaints, I'm on Twitter @_davidsmith.

00:14:33 ◼   ► I'm on appnet @davidsmith.

00:14:35 ◼   ► And actually, I have one of those bulk app.net invite

00:14:39 ◼   ► linky things, which you'll have in the show notes.

00:14:41 ◼   ► So if you haven't signed up for app.net,

00:14:43 ◼   ► but you want an invite, that's a way to get it.

00:14:45 ◼   ► And otherwise, I hope you have a good week.

00:14:47 ◼   ► Happy coding.

00:14:48 ◼   ► And I'm sure we'll all be going a little bit crazy

00:14:50 ◼   ► in the next few days waiting for WWDC tickets to go on sale.

00:14:53 ◼   ► My current guess is probably tomorrow, Wednesday morning.

00:14:56 ◼   ► But we'll see.