#19 - Setting up for the App Store
00:00:00
◼
►
Hello and welcome to Developing Perspective.
00:00:02
◼
►
Developing Perspective is a near-daily podcast discussing the news of note in iOS, Apple,
00:00:06
◼
►
and the like.
00:00:07
◼
►
I'm your host, David Smith.
00:00:08
◼
►
I am an independent iOS developer based in Herndon, Virginia.
00:00:12
◼
►
This is show number 19 and today is Wednesday, August 31st, 2011.
00:00:17
◼
►
The format of Developing Perspective is that I'll cover a handful of links, articles, things
00:00:20
◼
►
that I found interesting since the last show, and then move over to a more general discussion
00:00:24
◼
►
towards the end.
00:00:25
◼
►
This show will never be more than 15 minutes.
00:00:27
◼
►
Let's get to it.
00:00:28
◼
►
All right, the first link I have today
00:00:30
◼
►
is an article entitled "Learn Vim Progressively."
00:00:33
◼
►
And so if you've ever played around with VI,
00:00:35
◼
►
it's a pretty intimidating text editor
00:00:37
◼
►
to kind of get your feet wet in.
00:00:39
◼
►
It's a very different sort of paradigm and approach
00:00:41
◼
►
to almost every other text editor you've ever worked with.
00:00:44
◼
►
It has different modes and all these interesting key commands
00:00:48
◼
►
that are designed for efficiency and productivity
00:00:51
◼
►
but are a little intimidating to start with.
00:00:53
◼
►
I myself use VI periodically.
00:00:56
◼
►
Mostly it's when I'm SSHing into a Linux server
00:00:59
◼
►
that I have somewhere, and it's--
00:01:00
◼
►
VI is almost always on a Linux distribution,
00:01:03
◼
►
and so you can just pick it up and start working with it.
00:01:06
◼
►
But this is a great little walkthrough
00:01:07
◼
►
of a way to get comfortable in VI or Vim
00:01:11
◼
►
without immediately diving in.
00:01:15
◼
►
So you start off, and it's just here's a few basic tips
00:01:17
◼
►
and tricks, and then it walks through different stages.
00:01:20
◼
►
So if you've at all been playing with the thought of,
00:01:22
◼
►
oh, maybe I should check Vi out, maybe I should get better
00:01:24
◼
►
Definitely a good walkthrough to take a look at.
00:01:27
◼
►
Next, there's an interesting article just talking
00:01:30
◼
►
about a thing called XPC Kit.
00:01:33
◼
►
And this is a little library that
00:01:35
◼
►
is designed to help with the creation of XPC applications.
00:01:41
◼
►
This is primarily on Mac.
00:01:43
◼
►
And so essentially, this is a way
00:01:44
◼
►
of creating inter-process communication on the Mac, which
00:01:49
◼
►
is designed for sandboxing and security.
00:01:53
◼
►
And so essentially what this is used for
00:01:55
◼
►
is you can create an application that
00:01:57
◼
►
has two different sort of processes that
00:01:59
◼
►
are cooperating together.
00:02:02
◼
►
So an example of some-- they use this in the new Safari online,
00:02:05
◼
►
where all the web rendering, JavaScript, all that stuff
00:02:08
◼
►
happens in a separate process from Safari itself.
00:02:11
◼
►
And that allows for security and also stability,
00:02:14
◼
►
so that if something goes wrong in the rendering, flash
00:02:16
◼
►
crashes, something happens.
00:02:18
◼
►
The process dies, but Safari doesn't.
00:02:20
◼
►
And this is just a nice little wrapper for that,
00:02:22
◼
►
worth looking at if you're at all sort of interested in XPC on the Mac.
00:02:26
◼
►
All right, next, I've been talking to an article entitled "Importing and Displaying Large Datasets in Core Data."
00:02:34
◼
►
And this is over on "Coco is My Girlfriend." And it's just a problem that I've definitely run into many, many times.
00:02:41
◼
►
And it's just a good walkthrough of kind of ways that you can do this, approaches that you should take,
00:02:45
◼
►
and things that you should avoid when
00:02:48
◼
►
having to do either large imports
00:02:51
◼
►
or displaying large data sets in Core Data.
00:02:54
◼
►
It's a reprint of an article from the Mac Developer Network.
00:02:57
◼
►
But it's definitely just worth checking out
00:02:59
◼
►
if you use Core Data, and specifically
00:03:01
◼
►
if you use Core Data in instances
00:03:02
◼
►
where there's lots of large data sets
00:03:04
◼
►
that you're playing around with.
00:03:06
◼
►
All right, next.
00:03:08
◼
►
There's an article over on the Pocket Cyclone called
00:03:11
◼
►
"A Simple Way to Create Custom Round Direct Buttons."
00:03:14
◼
►
And it's a pretty-- I wouldn't say it's necessarily
00:03:17
◼
►
a very novel approach.
00:03:18
◼
►
It's basically just using quartz core and those types of things
00:03:22
◼
►
to create buttons.
00:03:23
◼
►
But the way if you walk through the walkthrough
00:03:26
◼
►
and you get to the end, it actually
00:03:27
◼
►
creates very nice looking buttons
00:03:30
◼
►
with a fairly low amount of work.
00:03:32
◼
►
So it's definitely worth checking out
00:03:34
◼
►
if you're like me and a little bit graphically-- shall we
00:03:38
◼
►
say, not graphically inclined.
00:03:42
◼
►
It's a nice way to kind of create something
00:03:43
◼
►
without needing to necessarily go to a designer.
00:03:46
◼
►
That's not amazing, but it's pretty good.
00:03:48
◼
►
And will certainly give your apps a lot more polish
00:03:51
◼
►
versus just using a traditional, just a UI button
00:03:53
◼
►
with a round-rect button.
00:03:58
◼
►
And lastly, there's a great article
00:03:59
◼
►
over on Nevin Morgan's blog talking about the Apple logo
00:04:04
◼
►
and the history of it.
00:04:05
◼
►
And it's just kind of an interesting thing,
00:04:07
◼
►
talking about the progression of it
00:04:09
◼
►
and talking to the guy.
00:04:10
◼
►
And it links to an interview from a guy who actually
00:04:13
◼
►
designed it.
00:04:14
◼
►
And it's just kind of an interesting thing
00:04:16
◼
►
if you're an Apple geek to look at and talk about and think
00:04:20
◼
►
So that's it for links today.
00:04:22
◼
►
Now I'm going to move over to the more general discussion.
00:04:24
◼
►
And today I thought it would be interesting.
00:04:26
◼
►
This will probably be a multi-part discussion.
00:04:29
◼
►
But I'm going to essentially try and walk through the process
00:04:33
◼
►
sort of from the logistical side of actually creating
00:04:35
◼
►
and submitting an app to the App Store.
00:04:37
◼
►
This is something, if you're an old hat at this,
00:04:39
◼
►
it's probably not as interesting.
00:04:41
◼
►
But if you're starting out, if you're kind of a new developer,
00:04:43
◼
►
this might be an interesting thing for you,
00:04:45
◼
►
to just kind of get a sense from the perspective of someone
00:04:48
◼
►
who submitted dozens and dozens of apps of kind of what
00:04:50
◼
►
that process looks like, what you can expect,
00:04:52
◼
►
what are kind of some of the challenges, the hiccups,
00:04:55
◼
►
things that you might want to be aware of,
00:04:57
◼
►
and some of the time frames associated
00:04:58
◼
►
with those different things.
00:05:01
◼
►
So and primarily, I'm going to be focusing on iOS.
00:05:03
◼
►
The process is very similar for Mac.
00:05:06
◼
►
And I've submitted on both sides.
00:05:08
◼
►
But for this particular walkthrough,
00:05:10
◼
►
I'll focus on iOS just so I can gloss over
00:05:12
◼
►
the differences between them and not constantly be saying,
00:05:16
◼
►
oh, it's this way on this and this way on the other.
00:05:19
◼
►
All right, so if you say you have an idea,
00:05:21
◼
►
you're saying, OK, I'm going to make an app.
00:05:23
◼
►
So the first thing you do is you go and you get Xcode.
00:05:25
◼
►
It's available free in the Mac App Store,
00:05:29
◼
►
or you can get it from the developer portal.
00:05:32
◼
►
In order to-- you have to be a developer in order to do that,
00:05:34
◼
►
but anybody can just get it from the Mac App Store.
00:05:37
◼
►
It's a free download.
00:05:38
◼
►
I think the current version there is 4.1.
00:05:42
◼
►
Just download it.
00:05:43
◼
►
You can start developing and working with it just right
00:05:46
◼
►
At that point, you've basically got everything
00:05:48
◼
►
you need to actually build your app.
00:05:49
◼
►
And you can start working on it, start coding it up,
00:05:53
◼
►
and do all your work in the simulator.
00:05:55
◼
►
The place where you'll first hit a snag
00:05:58
◼
►
is the first time you want to put that application onto
00:06:01
◼
►
In order for an application to run on a non-jailbroken phone,
00:06:04
◼
►
which is probably what I'd recommend you using if you're
00:06:06
◼
►
doing development so you don't hit weird jailbreak bugs
00:06:09
◼
►
and things like that, is the first thing you'll run into
00:06:12
◼
►
is, OK, I want to put it on the device.
00:06:14
◼
►
I need a provisioning profile.
00:06:15
◼
►
And a provisioning profile is essentially
00:06:17
◼
►
this little cryptographic bundle that
00:06:19
◼
►
gets embedded into your app package that allows the security
00:06:23
◼
►
system on the phone or the iPad or the iPod Touch
00:06:27
◼
►
to recognize this application, say that it's legitimate,
00:06:29
◼
►
not worry about it from a security standpoint.
00:06:32
◼
►
And in order to create one of those,
00:06:34
◼
►
you need a developer account.
00:06:36
◼
►
A developer-- and this is a paid developer account.
00:06:39
◼
►
Developer accounts, I think it's $99 a year,
00:06:43
◼
►
which is a relatively nominal fee given
00:06:46
◼
►
the support and infrastructure that's going on behind it.
00:06:50
◼
►
But essentially, you just go to developer.apple.com
00:06:52
◼
►
and sign up as an iOS developer.
00:06:54
◼
►
At this point, what you now have is the ability
00:06:56
◼
►
to create provisioning profiles.
00:06:59
◼
►
So in order to create a provisioning profile,
00:07:02
◼
►
the first thing you need is to create a certificate.
00:07:04
◼
►
A certificate is a way for you to prove that you are you.
00:07:08
◼
►
And specifically, there's a little bit
00:07:10
◼
►
of private key, public key, cryptographic stuff
00:07:13
◼
►
going on there.
00:07:14
◼
►
But essentially, there's a very straightforward process.
00:07:17
◼
►
It's gotten a lot better than it used to be in the old days.
00:07:21
◼
►
The old days, this used to be the bane of any iOS developers'
00:07:25
◼
►
And it's certainly a little bit cumbersome.
00:07:28
◼
►
But overall, it's a much, much easier process
00:07:30
◼
►
to work with now.
00:07:31
◼
►
And so basically, you'll go into--
00:07:33
◼
►
Once you send it for your account,
00:07:35
◼
►
you'll again go to developer.apple.com/ios.
00:07:40
◼
►
And then you'll go to the provisioning portal.
00:07:42
◼
►
And within that, there's kind of a process you walk through.
00:07:45
◼
►
The first thing you do is you create a developer certificate
00:07:47
◼
►
and a distribution certificate, which I'll get into the
00:07:50
◼
►
difference later.
00:07:51
◼
►
And Beth, basically, you open up Keychain Access,
00:07:53
◼
►
create a code signing request.
00:07:55
◼
►
It gives you a file that you upload to the server
00:07:57
◼
►
and it downloads a certificate.
00:07:58
◼
►
And it's just basically kind of doing a walk.
00:08:00
◼
►
It walks you through the process very straightforwardly.
00:08:03
◼
►
And at that point, it's pretty easy.
00:08:06
◼
►
Then you can go into Xcode and go into the Organizer
00:08:10
◼
►
Provisioning Devices.
00:08:12
◼
►
And your device will show up in the Organizer under Devices.
00:08:15
◼
►
And you say, use for development, at which point
00:08:18
◼
►
it'll typically ask you for your iTunes, your Apple ID
00:08:21
◼
►
credentials that are associated with your developer account.
00:08:25
◼
►
At this point, you just put that in.
00:08:26
◼
►
And now they do a thing that's called Team Provisioning
00:08:29
◼
►
And a team provision profile is essentially
00:08:32
◼
►
Apple's way of streamlining this process.
00:08:33
◼
►
Rather than before, you have to manually be going in,
00:08:36
◼
►
adding devices, adding app bundle IDs,
00:08:39
◼
►
all these types of things manually.
00:08:41
◼
►
A lot of that now happens automatically for you
00:08:43
◼
►
on the development side.
00:08:44
◼
►
On the distribution side, there's
00:08:46
◼
►
still a lot of manual things you need to do.
00:08:48
◼
►
But if you just want to install the app on a device
00:08:51
◼
►
to play with it while you're developing,
00:08:52
◼
►
you can just basically go in there,
00:08:54
◼
►
let it spin for a little while, it does its thing,
00:08:56
◼
►
and then you come back.
00:08:57
◼
►
And you should be able to then build and go,
00:09:00
◼
►
targeting the device, and it will launch down there.
00:09:04
◼
►
So the difference between a development and a distribution
00:09:06
◼
►
profile is a development profile is only valid--
00:09:09
◼
►
I think they're only typically valid for up to a year
00:09:12
◼
►
or six months, something like that.
00:09:13
◼
►
And it's only for distribution from Xcode.
00:09:18
◼
►
So you can't use that to submit something to the App Store
00:09:20
◼
►
or to send it to someone else to put on their device.
00:09:24
◼
►
A distribution profile, however, is something
00:09:26
◼
►
that you'll either use to do an ad hoc build.
00:09:29
◼
►
An ad hoc build allows you to send a bundle to somebody
00:09:33
◼
►
and have them install it on their own device
00:09:35
◼
►
or do it over the air with something like Test Flight
00:09:37
◼
►
App or Hockey.
00:09:39
◼
►
And doing that works pretty well for beta testing,
00:09:43
◼
►
for those types of things.
00:09:44
◼
►
And the last way you use a distribution certificate for
00:09:47
◼
►
is for submission to the App Store.
00:09:49
◼
►
And you need a different distribution profile
00:09:51
◼
►
for the App Store and for ad hoc builds.
00:09:55
◼
►
So basically, that's sort of the process.
00:09:57
◼
►
And to create one of those for distribution side,
00:10:00
◼
►
once you have your team profile set up, now you have to do
00:10:04
◼
►
is you have to set up a bundle ID.
00:10:06
◼
►
So this is typically just essentially a name
00:10:08
◼
►
that you're going to prefix all of your bundle IDs with.
00:10:11
◼
►
You can do it one per app.
00:10:13
◼
►
So you could have com.mycompany.myawesomeapp.
00:10:14
◼
►
Or you can also do a wildcard bundle ID.
00:10:21
◼
►
So this would be com.mycompany.star.
00:10:24
◼
►
And there's pros and cons for using each.
00:10:28
◼
►
The biggest thing to keep in mind is if you want to do
00:10:30
◼
►
anything that involves Apple server technology-- so push
00:10:34
◼
►
notifications, iCloud, all of those types of things require
00:10:37
◼
►
that you use a specific bundle ID rather than a wildcard
00:10:43
◼
►
So just keep that in mind.
00:10:44
◼
►
But basically, if you're only working on one or two apps,
00:10:46
◼
►
you can just create a bundle ID and associate it with that.
00:10:50
◼
►
And then you will go through.
00:10:51
◼
►
You've created your distribution certificate
00:10:53
◼
►
ready. And then you create a distribution profile where you will say, I want to make
00:10:57
◼
►
essentially, it's an app using this provisioning profile that uses this certificate and associates
00:11:02
◼
►
with this bundle ID. And that lets you create a profile that is very specific to your application.
00:11:08
◼
►
And then when you go to submit that to the App Store, Apple can then verify that it is
00:11:11
◼
►
you who submitted it, you who created this application. For a lot of where the security
00:11:16
◼
►
is coming from, is preventing someone from, you know, hijacking your developer account
00:11:22
◼
►
and then submitting an app in your name.
00:11:24
◼
►
In order for them to do that, they
00:11:25
◼
►
would need the private key associated
00:11:27
◼
►
with your application.
00:11:29
◼
►
So there's a little bit of security there.
00:11:32
◼
►
And so basically, once you've done that,
00:11:35
◼
►
you have all of the infrastructure parts
00:11:37
◼
►
in place for actually working and submitting
00:11:41
◼
►
your applications.
00:11:42
◼
►
Submissions themselves are done through iTunes Connect,
00:11:44
◼
►
which I'll talk about probably tomorrow.
00:11:47
◼
►
But I have a few more notes about this initial setup phase.
00:11:50
◼
►
Now one is you also have to associate for ad hoc builds
00:11:54
◼
►
devices with your account.
00:11:55
◼
►
I believe you are limited though to 100, I think it is.
00:11:58
◼
►
Sometimes it's 200.
00:12:00
◼
►
I'm not sure if that's just an overlap in years or things.
00:12:03
◼
►
But you have a limited number of those.
00:12:05
◼
►
But typically, unless you're doing massive betas,
00:12:07
◼
►
it's not a problem.
00:12:09
◼
►
And basically, every device that you
00:12:10
◼
►
want to build your application onto
00:12:13
◼
►
has to be one of the devices listed in your account.
00:12:17
◼
►
So you basically collect the UDIDs for each of your devices
00:12:22
◼
►
that you add them in, or you can add them automatically
00:12:24
◼
►
via the Xcode organizer if you're doing it yourself.
00:12:29
◼
►
For ad hoc builds and things like that,
00:12:31
◼
►
one thing that I would really recommend
00:12:33
◼
►
is using TestFlight app, which can automate
00:12:35
◼
►
the collection of those.
00:12:36
◼
►
And a lot of tech people or tech reviewers or things
00:12:40
◼
►
already have TestFlight apps accounts.
00:12:42
◼
►
And you can add their account to your TestFlight profile,
00:12:47
◼
►
and it'll tell you their UDID of all of their devices.
00:12:49
◼
►
And you can even, I think, export it in a fairly easy way
00:12:52
◼
►
that you can then copy paste into the provisioning portal.
00:12:55
◼
►
But just something to keep in mind,
00:12:56
◼
►
you're not going to want to add devices there that you can't--
00:13:00
◼
►
that you're not actually going to use, because you
00:13:02
◼
►
have a limited number of them.
00:13:03
◼
►
So just be mindful of that.
00:13:04
◼
►
Like I said, I've never really run into a problem,
00:13:06
◼
►
but I know people who have.
00:13:07
◼
►
Specifically, if you do a large beta,
00:13:09
◼
►
if you're beta testing with 100 users,
00:13:11
◼
►
you can fill up your entire developer portal.
00:13:14
◼
►
And then if the problem you run into is, OK, well,
00:13:16
◼
►
then in order to add another device,
00:13:19
◼
►
you all of a sudden have to pay another $99,
00:13:22
◼
►
create a new profile, do all this sort of headache work,
00:13:25
◼
►
because then you have to create two bills
00:13:27
◼
►
with two different profiles.
00:13:28
◼
►
So just keep that in mind and be mindful of it.
00:13:32
◼
►
Let's see, other thoughts about that process
00:13:35
◼
►
is I would talk just briefly about versions and testing
00:13:40
◼
►
Any iOS developer will tell you that compatibility testing
00:13:43
◼
►
can be a bit of a pain.
00:13:45
◼
►
I probably have, I think it's somewhere in the range of 8 to 10 iOS devices in my office
00:13:49
◼
►
right now, running all different versions, all different configurations, and they're
00:13:52
◼
►
all in my provisioning profile.
00:13:55
◼
►
This is helpful and useful, I mean certainly.
00:13:58
◼
►
And if you're getting started, what I'd probably recommend you do is sort of connect with sort
00:14:02
◼
►
of your local developer community when you're getting ready to release your app.
00:14:05
◼
►
And so, you know, you can do all of your testing, all of your development on a device that is
00:14:11
◼
►
sort of running the latest and greatest.
00:14:13
◼
►
So say you're, for example, right now, it would be running it on an iPhone running 4.3.
00:14:17
◼
►
You know, iPhone 4 running 4.3 would give you pretty good coverage for sort of the primary
00:14:23
◼
►
case or if it's an iPad app, it's an iPad 2 running 4.3.
00:14:27
◼
►
And then go to your local developer community, go to an NS Code or an AtoCoco head, something,
00:14:30
◼
►
kind of make some friends there.
00:14:32
◼
►
Almost certainly someone there will have a collection of devices that you can play with.
00:14:36
◼
►
And you can kind of just try it out, ask to borrow them or go to their house, whatever
00:14:41
◼
►
then that's probably the best way to do compatibility testing when you're starting out. Otherwise,
00:14:45
◼
►
you'll end up with dozens of devices like I have, which is fine, but I guess a little
00:14:48
◼
►
costly. Alright, that's it for today's show. I hope you have a good day. Happy coding.
00:14:53
◼
►
If you have any thoughts, hit me up on Twitter. I'm @_davidsmith. Or there's now a contact
00:14:57
◼
►
form on the website. Bye.