Developing Perspective

#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:18   about.

00:04:20   All right.

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:00   All right.

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:45   away.

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:00   a device.

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:24   existence.

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:28   Profile.

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:41   bundle ID.

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:38   devices.

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:40   that is.

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.