#49: Addressing Demand
00:00:00
◼
►
Hello and welcome to Developing Perspective.
00:00:03
◼
►
Developing Perspective is a podcast discussing iOS development, Apple, and the like.
00:00:07
◼
►
I'm your host, David Smith. I'm an independent iOS developer based in Herndon, Virginia.
00:00:11
◼
►
Developing Perspective is never longer than 15 minutes and is recorded about three or four times a week.
00:00:15
◼
►
This is Show #49. Let's get started.
00:00:18
◼
►
All right. I have a couple of small topics to start off today's show with, and then I'll move into the main topic.
00:00:23
◼
►
To start with, I was just talking about--I wanted to talk about one of the great features
00:00:27
◼
►
and additions to the iOS developer experience that was added in iCloud.
00:00:33
◼
►
And it's something that you may not actually have been aware of,
00:00:35
◼
►
and so I just wanted to point it out.
00:00:37
◼
►
For a long time now, iTunes Connect, which is where you do all of your app management,
00:00:41
◼
►
is a portal where you can download crash logs.
00:00:44
◼
►
And back in the old days, these were uploaded via iTunes
00:00:49
◼
►
when someone synced their device and then hit a button that said,
00:00:53
◼
►
said, yes, go ahead and send diagnostic and stability
00:00:57
◼
►
reports or something like that.
00:01:00
◼
►
And in general, in my experience back in the day,
00:01:02
◼
►
that almost never happened.
00:01:04
◼
►
Every now and then, you'd get a report in there,
00:01:06
◼
►
but you could have millions of downloads and have 10 reports.
00:01:10
◼
►
And it just wasn't especially helpful.
00:01:13
◼
►
But one of the new things that's kind of fun in iCloud--
00:01:17
◼
►
and this was added in iOS 5--
00:01:19
◼
►
is that now, when the user is setting up their iCloud
00:01:22
◼
►
account, one of the little check boxes they push is, you know, "send Apple diagnostic
00:01:27
◼
►
information," I think it is. And I think by default it's enabled. And that, if they check
00:01:33
◼
►
that, then as best I can understand, crash reports are then sent automatically over the
00:01:38
◼
►
air when your app crashes to iTunes Connect. And as a result, I found the crash report
00:01:45
◼
►
in iTunes Connect to be so much more valuable. So I definitely recommend if you're, you know,
00:01:51
◼
►
sort of getting ready to do an update, looking for some bugs,
00:01:53
◼
►
looking for some things that may make your app better,
00:01:56
◼
►
that's definitely a place to go.
00:01:57
◼
►
And basically, you just go into iTunes Connect.
00:01:59
◼
►
You click on the application.
00:02:00
◼
►
You click on a particular version,
00:02:03
◼
►
because it's been done by version.
00:02:04
◼
►
And then over in the top right corner, it says Crash Reports.
00:02:07
◼
►
And you just kind of browse there.
00:02:08
◼
►
And you can download them.
00:02:10
◼
►
And just always, another note is to make sure
00:02:13
◼
►
that you always keep the desim file whenever you do a build,
00:02:16
◼
►
especially one that you're going to submit to the App Store.
00:02:19
◼
►
This is a little debugging symbols file.
00:02:21
◼
►
If you just do build in archive, it'll
00:02:23
◼
►
be sort of stored automatically.
00:02:24
◼
►
But make sure that you keep that somewhere safe,
00:02:27
◼
►
because you can't symbolicate your crash reports,
00:02:31
◼
►
and they'll be kind of meaningless otherwise
00:02:34
◼
►
if you don't have that decent file.
00:02:35
◼
►
So just make sure you keep it.
00:02:37
◼
►
And then basically, you can just download them,
00:02:39
◼
►
and you go into Xcode, and you can
00:02:40
◼
►
look through all the crashes.
00:02:42
◼
►
It'll just give you stack traces of where the problems are.
00:02:45
◼
►
Evaluating stack traces is a bit of a black art.
00:02:48
◼
►
sometimes it feels like, because you're--
00:02:51
◼
►
maybe 50% of the time, it's straightforward.
00:02:53
◼
►
You look at it, it's a stack trace.
00:02:55
◼
►
It tracks back to a line in your code
00:02:57
◼
►
where you're doing something silly.
00:02:58
◼
►
You're putting a nil object into an array.
00:03:00
◼
►
You're doing something that's just clearly not going to work.
00:03:04
◼
►
And you see, you can go through and you fix those.
00:03:06
◼
►
And then you'll end up with the next case.
00:03:09
◼
►
And these are the crashes that you look at,
00:03:11
◼
►
and you're like, that's got nothing to do with my code.
00:03:15
◼
►
You look through the stack trace, and it's all in UIKit.
00:03:18
◼
►
It's all in Foundation.
00:03:19
◼
►
And so then you're kind of like, huh,
00:03:22
◼
►
is this a bug in the framework?
00:03:24
◼
►
Or is this something that I'm causing the framework
00:03:27
◼
►
to have a problem?
00:03:29
◼
►
And more often than not, it's the latter.
00:03:31
◼
►
I very rarely found actual crashes in the OS.
00:03:34
◼
►
I'm sure they exist, but nine times out of 10 or 99 times
00:03:38
◼
►
out of 100, if you see a crash like that,
00:03:41
◼
►
you're doing something sort of wrong with the frameworks.
00:03:46
◼
►
And it's likely documented that what you're doing isn't going to work.
00:03:51
◼
►
An example of this is, say, where you don't
00:03:53
◼
►
set the delegate of something to nil when your object is deallocated.
00:03:58
◼
►
Simple example.
00:03:59
◼
►
Something like that, where the crash will actually potentially
00:04:02
◼
►
happen in their object when they start trying
00:04:04
◼
►
to access something in your delegate.
00:04:06
◼
►
But you didn't tell them otherwise.
00:04:09
◼
►
So that's just something I wanted to--
00:04:11
◼
►
I ran into it yesterday when I was doing a big update, kind of my bug fix
00:04:14
◼
►
update for audio books.
00:04:16
◼
►
And I noticed that--
00:04:17
◼
►
I was like, oh, you know, I've got these vague crash reports
00:04:20
◼
►
from users, and every now and then they'll send in a crash
00:04:23
◼
►
But I was like, oh, I wonder if iTunes Connect's gotten any
00:04:25
◼
►
better, and it definitely has.
00:04:27
◼
►
So definitely check that out when you're doing your next
00:04:29
◼
►
update, and you may be able to catch and crush a few bugs.
00:04:33
◼
►
All right, second thing, and it's kind of vaguely related,
00:04:36
◼
►
is a trick that I recently started doing to kind of get a
00:04:40
◼
►
sense of how many users are using your application, or
00:04:45
◼
►
have your application installed on their phone, if you have an app like
00:04:49
◼
►
some of mine that have been around for quite a while,
00:04:52
◼
►
it's sometimes a little weird and intimidating to think like, "Well, how many of these
00:04:56
◼
►
people are actually using it?" If you say
00:04:58
◼
►
you had a million people who download your app,
00:05:01
◼
►
is that a million, you know,
00:05:04
◼
►
is 999,000 of them still using it, or a thousand of them still using it?
00:05:09
◼
►
And it's kind of helpful to judge
00:05:11
◼
►
how much time you want to invest in the app, how much time you want to
00:05:14
◼
►
sort of put forth, just kind of good for curiosity. And this is actually one of those few things
00:05:19
◼
►
where the Android market actually does a really good job of this because they track this for
00:05:23
◼
►
you and they'll tell you the number of active installs and things like that.
00:05:27
◼
►
But a good proxy that I recently started using to judge roughly how many people have your
00:05:32
◼
►
app installed is if you go into your iTunes Connect sales reports, you get sales, you
00:05:39
◼
►
get in-app purchases, you get free downloads, and then you get updates. For a long time
00:05:44
◼
►
I thought updates was just kind of useless.
00:05:46
◼
►
You know, Apple's just throwing this number at you that seems kind of arbitrary.
00:05:49
◼
►
It's the number of people who installed an update for the application the day before.
00:05:53
◼
►
And I was like, "What am I going to do with that?"
00:05:56
◼
►
Now what I kind of view that as is I take, when I submit an update,
00:06:00
◼
►
I take a look at say roughly say a week's window of updates after I do,
00:06:04
◼
►
you know, after my point release is approved.
00:06:08
◼
►
I look at that and I say, "Huh.
00:06:10
◼
►
what amount, what proportion of my users updated.
00:06:16
◼
►
And that's probably a reasonable proxy for how many users still have your app installed
00:06:20
◼
►
on the phone.
00:06:21
◼
►
It doesn't mean that they're actually using it, they could just be hitting update all,
00:06:24
◼
►
but it's probably a reasonable proxy for that's how many people have it on their device.
00:06:29
◼
►
So I just kind of wanted to throw that out there.
00:06:31
◼
►
I think it's kind of an interesting statistic.
00:06:32
◼
►
All right, and so now I'm going to move into kind of the main topic for today's show, which
00:06:37
◼
►
is specifically about pricing.
00:06:39
◼
►
And this is motivated by just a refrain I've heard quite a few times recently.
00:06:44
◼
►
A lot of it's by sort of older, old is probably the wrong word, but people who've been making
00:06:51
◼
►
software before the App Store, people who used to make their living selling software
00:06:55
◼
►
directly or those types of situations who complain about pricing in the App Store.
00:07:03
◼
►
And it's one of these funny things that I kind of, you know, it's just a topic that's
00:07:08
◼
►
been talked about a lot and I don't want to belabor it too much, but I have kind of an
00:07:12
◼
►
interesting perspective that I hopefully, well I hope it's interesting, is a lot of
00:07:16
◼
►
people I think sort of confuse two uses in the English language of the word "value."
00:07:23
◼
►
Saying, "Oh man, it's the race to the bottom, devalues my software."
00:07:28
◼
►
And it's one of those awkward things where, just kind of like with "free" in the English
00:07:32
◼
►
language, there's "free" as in "beer" and "free" as in "liberty."
00:07:36
◼
►
the same word has two very different meanings. And you can take value as sort of the intrinsic
00:07:42
◼
►
value, the worth, the excellence, all those other kind of attributes of it that kind of
00:07:49
◼
►
make it awesome. And on the flip side, value is also like a business term that's a measure
00:07:55
◼
►
of sort of revenue, of income, of money, of what the sale price for something is, if you
00:08:02
◼
►
were to look at it as the value of a house.
00:08:06
◼
►
And I think often those two terms get conflated in a way
00:08:10
◼
►
that's not productive, that a lot of people say, well, if I
00:08:13
◼
►
make the price of my app low, I will devalue it.
00:08:19
◼
►
Now what they're really saying is by lowering the price, they
00:08:22
◼
►
may lower a potential customer's perception of the
00:08:27
◼
►
quality of their software.
00:08:29
◼
►
So that's a fair statement, and that may be true.
00:08:32
◼
►
That's certainly another interesting part of it.
00:08:34
◼
►
But I think often what they say, when they say that, what they mean
00:08:38
◼
►
is, if I lower my price, I will make it seem cheap, and I won't make money.
00:08:45
◼
►
And it's a funny thing.
00:08:46
◼
►
You can look at it a couple of different ways.
00:08:48
◼
►
You could say, well, I want to make as much money as I can,
00:08:53
◼
►
which is a perfectly reasonable, good capitalistic approach
00:08:56
◼
►
to selling software.
00:08:58
◼
►
And if that's the case, it seems like really at the App Store
00:09:02
◼
►
right now, especially on the iOS side, the best way to do
00:09:05
◼
►
that is with a relatively low price, potentially even free,
00:09:08
◼
►
and supplementing that with in-app purchase.
00:09:11
◼
►
It allows you to address quite well the demand curve for your
00:09:15
◼
►
application.
00:09:16
◼
►
There are some people for whom the value or the price at
00:09:20
◼
►
which they are willing to pay for your app is either zero or
00:09:23
◼
►
close to zero.
00:09:24
◼
►
And then you have this whole curve of people who, with
00:09:26
◼
►
increasing amounts of a desire to part with their money.
00:09:31
◼
►
And you can address that all within that purchase.
00:09:33
◼
►
So there are some people who are going to have paid you $100,
00:09:35
◼
►
or $20, or $30.
00:09:37
◼
►
And then you have some people who
00:09:38
◼
►
are going to have paid you nothing
00:09:40
◼
►
and just looked at a few ads.
00:09:41
◼
►
By addressing that whole curve, you just-- it's like calculus.
00:09:45
◼
►
You've maximized the value or the revenue
00:09:49
◼
►
that you've received.
00:09:51
◼
►
And so in many ways, that's the way forward.
00:09:55
◼
►
But often you kind of have this... the flip side of that is people will say,
00:09:58
◼
►
"Well, I don't want...
00:10:00
◼
►
I want my software to cost ten dollars. I want my software to cost five dollars.
00:10:03
◼
►
I want to be, you know,
00:10:06
◼
►
viewed as a premium brand in the App Store."
00:10:09
◼
►
And, you know, it's
00:10:11
◼
►
certainly a worthwhile thing, you know, to say that about yourself,
00:10:16
◼
►
or to say that about kind of what kind of an app
00:10:19
◼
►
or brand you'd like to be.
00:10:21
◼
►
But I think... and that's great,
00:10:23
◼
►
but I think I always get a little frustrated when the flip side of that is
00:10:26
◼
►
I'm having difficulty making money
00:10:28
◼
►
as a premium brand.
00:10:30
◼
►
You know, no one really care, like no one would care if Tiffany's
00:10:34
◼
►
announced one day that their sales are flat, people just aren't buying
00:10:37
◼
►
overpriced diamonds.
00:10:39
◼
►
It's like, okay, well apparently people don't think that
00:10:42
◼
►
you're as premium as you used to be or, you know, those kinds of things. Like, complaining
00:10:46
◼
►
about that doesn't make sense.
00:10:47
◼
►
If you can charge a high price and make a high revenue, fantastic. Enjoy that, that is
00:10:52
◼
►
live in the dream, high five.
00:10:56
◼
►
But the reality is if you're in the app store to make a living, if you're in the app store to make money,
00:11:00
◼
►
your goal is more likely to be, you know, how can you derive the
00:11:05
◼
►
most revenue from the
00:11:06
◼
►
work that you do?
00:11:08
◼
►
And that's not to get to a point, you know, there's sort of the dark side of that, of kind of
00:11:11
◼
►
getting into scamming and
00:11:14
◼
►
kind of fleecing users, which I would certainly advise against,
00:11:18
◼
►
but you know there's ways to
00:11:20
◼
►
view pricing as a tool to extract that value
00:11:24
◼
►
and in a way that just is basic microeconomics
00:11:28
◼
►
makes good sense.
00:11:30
◼
►
That's kind of
00:11:31
◼
►
the way I approach it. I view pricing as a tool that I have
00:11:35
◼
►
to allow me to make money.
00:11:37
◼
►
You know, I don't really associate too much intrinsic value
00:11:42
◼
►
in the price. That, oh, well,
00:11:45
◼
►
all my apps are 99 cents and that makes me a cheap app developer
00:11:49
◼
►
or whatever. I mean, I have a couple of apps that are more expensive than that.
00:11:52
◼
►
But in general,
00:11:53
◼
►
you know, I just feel I'm trying to price something where I think I will make the most
00:11:57
◼
►
And the actual cost of that
00:12:00
◼
►
is really only important to the customer.
00:12:02
◼
►
And that's, you know, that's fair enough. If some customers think that
00:12:05
◼
►
my app is worth more than great, if some of them think it's less than, you know,
00:12:10
◼
►
great, I'm not going to get them.
00:12:11
◼
►
But what I really want to avoid is,
00:12:13
◼
►
you know, not taking advantage of people who
00:12:17
◼
►
could do who could find my app interesting, who could find it useful,
00:12:20
◼
►
but are turned off by a high price.
00:12:23
◼
►
rather than getting, you know, a dollar from them, I'm getting zero from them.
00:12:27
◼
►
On the flip side,
00:12:29
◼
►
you want to make sure that if there are people who are willing, who'd be really interested
00:12:31
◼
►
and engaged and want to give you lots of money, that you're addressing them to, and giving them an
00:12:36
◼
►
to give that back to you. It sounds like kind of a funny thing, but,
00:12:38
◼
►
you know, it's like you really are creating an opportunity for someone to part with their
00:12:42
◼
►
money and to give it to you. And, you know, it's a willful,
00:12:45
◼
►
often happy joyful thing. I have many people who contact me and support
00:12:49
◼
►
and it's like
00:12:50
◼
►
you know I'm glad I was able to support you and keep this going and
00:12:53
◼
►
keep making the app awesome
00:12:55
◼
►
and they're happy to keep... by creating an opportunity for them to
00:12:58
◼
►
give me money
00:12:59
◼
►
they feel good about that
00:13:01
◼
►
you know and so I think that's kind of where I am. I think I tweeted the other day
00:13:05
◼
►
in my recent update to audiobooks it's been kind of striking how important free is in
00:13:09
◼
►
the app portfolio these days
00:13:12
◼
►
uh... were making about in revenue i'm making about twice what up for my free
00:13:17
◼
►
and from the paid app and do the absolute central identical except one of
00:13:20
◼
►
them shows ads
00:13:21
◼
►
and the other one doesn't
00:13:22
◼
►
and in the paid after you there's no ads in the free up a show i had so i used to
00:13:27
◼
►
aggregator and all the stuff that mob ads and all the stuff that i'd still add
00:13:33
◼
►
the quality about the so much better and
00:13:35
◼
►
it's just so much simpler for and better from a coding perspective
00:13:39
◼
►
but when i found
00:13:41
◼
►
is that's, you know, I think that means that I'm addressing the entire spectrum
00:13:45
◼
►
probably of user.
00:13:46
◼
►
Where I go, there's some people who get the app
00:13:49
◼
►
who give me, you know, pennies from watching ads
00:13:53
◼
►
and then there are people who get the free app, like it, buy all the in-app purchases
00:13:57
◼
►
and, you know, make some money from them directly.
00:14:00
◼
►
There are people who buy the app for ninety-nine cents
00:14:04
◼
►
who then never see an ad but they've given me their buck
00:14:08
◼
►
and then kind of you know also potentially buy in at purchases and you
00:14:12
◼
►
by addressing that whole spectrum
00:14:14
◼
►
i think i mean it's it's a good wise business move
00:14:17
◼
►
uh... you know kind of as a especially as it you know as a smaller business
00:14:21
◼
►
i can't afford to be leaving money on the table
00:14:25
◼
►
just some thoughts
00:14:26
◼
►
hopefully that's helpful
00:14:27
◼
►
as always if you have questions comments concerns hit me up on twitter i'm @_davidsmith
00:14:33
◼
►
the twitter feed for this podcast is dev perspective
00:14:36
◼
►
and otherwise, hope you have a good week.
00:14:38
◼
►
Happy coding, and I will talk to you later.