Podcast Search

Developing Perspective

#19 - Setting up for the App Store

Select a time to play from there. The line being spoken is highlighted as the audio plays.

0:00:00Hello and welcome to Developing Perspective.

0:00:02Developing Perspective is a near-daily podcast discussing the news of note in iOS, Apple,

0:00:06and the like.

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

0:00:08I am an independent iOS developer based in Herndon, Virginia.

0:00:12This is show number 19 and today is Wednesday, August 31st, 2011.

0:00:17The format of Developing Perspective is that I'll cover a handful of links, articles, things

0:00:20that I found interesting since the last show, and then move over to a more general discussion

0:00:24towards the end.

0:00:25This show will never be more than 15 minutes.

0:00:27Let's get to it.

0:00:28All right, the first link I have today

0:00:30is an article entitled "Learn Vim Progressively."

0:00:33And so if you've ever played around with VI,

0:00:35it's a pretty intimidating text editor

0:00:37to kind of get your feet wet in.

0:00:39It's a very different sort of paradigm and approach

0:00:41to almost every other text editor you've ever worked with.

0:00:44It has different modes and all these interesting key commands

0:00:48that are designed for efficiency and productivity

0:00:51but are a little intimidating to start with.

0:00:53I myself use VI periodically.

0:00:56Mostly it's when I'm SSHing into a Linux server

0:00:59that I have somewhere, and it's--

0:01:00VI is almost always on a Linux distribution,

0:01:03and so you can just pick it up and start working with it.

0:01:06But this is a great little walkthrough

0:01:07of a way to get comfortable in VI or Vim

0:01:11without immediately diving in.

0:01:15So you start off, and it's just here's a few basic tips

0:01:17and tricks, and then it walks through different stages.

0:01:20So if you've at all been playing with the thought of,

0:01:22oh, maybe I should check Vi out, maybe I should get better

0:01:24Definitely a good walkthrough to take a look at.

0:01:27Next, there's an interesting article just talking

0:01:30about a thing called XPC Kit.

0:01:33And this is a little library that

0:01:35is designed to help with the creation of XPC applications.

0:01:41This is primarily on Mac.

0:01:43And so essentially, this is a way

0:01:44of creating inter-process communication on the Mac, which

0:01:49is designed for sandboxing and security.

0:01:53And so essentially what this is used for

0:01:55is you can create an application that

0:01:57has two different sort of processes that

0:01:59are cooperating together.

0:02:02So an example of some-- they use this in the new Safari online,

0:02:05where all the web rendering, JavaScript, all that stuff

0:02:08happens in a separate process from Safari itself.

0:02:11And that allows for security and also stability,

0:02:14so that if something goes wrong in the rendering, flash

0:02:16crashes, something happens.

0:02:18The process dies, but Safari doesn't.

0:02:20And this is just a nice little wrapper for that,

0:02:22worth looking at if you're at all sort of interested in XPC on the Mac.

0:02:26All right, next, I've been talking to an article entitled "Importing and Displaying Large Datasets in Core Data."

0:02:34And this is over on "Coco is My Girlfriend." And it's just a problem that I've definitely run into many, many times.

0:02:41And it's just a good walkthrough of kind of ways that you can do this, approaches that you should take,

0:02:45and things that you should avoid when

0:02:48having to do either large imports

0:02:51or displaying large data sets in Core Data.

0:02:54It's a reprint of an article from the Mac Developer Network.

0:02:57But it's definitely just worth checking out

0:02:59if you use Core Data, and specifically

0:03:01if you use Core Data in instances

0:03:02where there's lots of large data sets

0:03:04that you're playing around with.

0:03:06All right, next.

0:03:08There's an article over on the Pocket Cyclone called

0:03:11"A Simple Way to Create Custom Round Direct Buttons."

0:03:14And it's a pretty-- I wouldn't say it's necessarily

0:03:17a very novel approach.

0:03:18It's basically just using quartz core and those types of things

0:03:22to create buttons.

0:03:23But the way if you walk through the walkthrough

0:03:26and you get to the end, it actually

0:03:27creates very nice looking buttons

0:03:30with a fairly low amount of work.

0:03:32So it's definitely worth checking out

0:03:34if you're like me and a little bit graphically-- shall we

0:03:38say, not graphically inclined.

0:03:42It's a nice way to kind of create something

0:03:43without needing to necessarily go to a designer.

0:03:46That's not amazing, but it's pretty good.

0:03:48And will certainly give your apps a lot more polish

0:03:51versus just using a traditional, just a UI button

0:03:53with a round-rect button.

0:03:58And lastly, there's a great article

0:03:59over on Nevin Morgan's blog talking about the Apple logo

0:04:04and the history of it.

0:04:05And it's just kind of an interesting thing,

0:04:07talking about the progression of it

0:04:09and talking to the guy.

0:04:10And it links to an interview from a guy who actually

0:04:13designed it.

0:04:14And it's just kind of an interesting thing

0:04:16if you're an Apple geek to look at and talk about and think

0:04:18about.

0:04:20All right.

0:04:20So that's it for links today.

0:04:22Now I'm going to move over to the more general discussion.

0:04:24And today I thought it would be interesting.

0:04:26This will probably be a multi-part discussion.

0:04:29But I'm going to essentially try and walk through the process

0:04:33sort of from the logistical side of actually creating

0:04:35and submitting an app to the App Store.

0:04:37This is something, if you're an old hat at this,

0:04:39it's probably not as interesting.

0:04:41But if you're starting out, if you're kind of a new developer,

0:04:43this might be an interesting thing for you,

0:04:45to just kind of get a sense from the perspective of someone

0:04:48who submitted dozens and dozens of apps of kind of what

0:04:50that process looks like, what you can expect,

0:04:52what are kind of some of the challenges, the hiccups,

0:04:55things that you might want to be aware of,

0:04:57and some of the time frames associated

0:04:58with those different things.

0:05:00All right.

0:05:01So and primarily, I'm going to be focusing on iOS.

0:05:03The process is very similar for Mac.

0:05:06And I've submitted on both sides.

0:05:08But for this particular walkthrough,

0:05:10I'll focus on iOS just so I can gloss over

0:05:12the differences between them and not constantly be saying,

0:05:16oh, it's this way on this and this way on the other.

0:05:19All right, so if you say you have an idea,

0:05:21you're saying, OK, I'm going to make an app.

0:05:23So the first thing you do is you go and you get Xcode.

0:05:25It's available free in the Mac App Store,

0:05:29or you can get it from the developer portal.

0:05:32In order to-- you have to be a developer in order to do that,

0:05:34but anybody can just get it from the Mac App Store.

0:05:37It's a free download.

0:05:38I think the current version there is 4.1.

0:05:42Just download it.

0:05:43You can start developing and working with it just right

0:05:45away.

0:05:46At that point, you've basically got everything

0:05:48you need to actually build your app.

0:05:49And you can start working on it, start coding it up,

0:05:53and do all your work in the simulator.

0:05:55The place where you'll first hit a snag

0:05:58is the first time you want to put that application onto

0:06:00a device.

0:06:01In order for an application to run on a non-jailbroken phone,

0:06:04which is probably what I'd recommend you using if you're

0:06:06doing development so you don't hit weird jailbreak bugs

0:06:09and things like that, is the first thing you'll run into

0:06:12is, OK, I want to put it on the device.

0:06:14I need a provisioning profile.

0:06:15And a provisioning profile is essentially

0:06:17this little cryptographic bundle that

0:06:19gets embedded into your app package that allows the security

0:06:23system on the phone or the iPad or the iPod Touch

0:06:27to recognize this application, say that it's legitimate,

0:06:29not worry about it from a security standpoint.

0:06:32And in order to create one of those,

0:06:34you need a developer account.

0:06:36A developer-- and this is a paid developer account.

0:06:39Developer accounts, I think it's $99 a year,

0:06:43which is a relatively nominal fee given

0:06:46the support and infrastructure that's going on behind it.

0:06:50But essentially, you just go to developer.apple.com

0:06:52and sign up as an iOS developer.

0:06:54At this point, what you now have is the ability

0:06:56to create provisioning profiles.

0:06:59So in order to create a provisioning profile,

0:07:02the first thing you need is to create a certificate.

0:07:04A certificate is a way for you to prove that you are you.

0:07:08And specifically, there's a little bit

0:07:10of private key, public key, cryptographic stuff

0:07:13going on there.

0:07:14But essentially, there's a very straightforward process.

0:07:17It's gotten a lot better than it used to be in the old days.

0:07:21The old days, this used to be the bane of any iOS developers'

0:07:24existence.

0:07:25And it's certainly a little bit cumbersome.

0:07:28But overall, it's a much, much easier process

0:07:30to work with now.

0:07:31And so basically, you'll go into--

0:07:33Once you send it for your account,

0:07:35you'll again go to developer.apple.com/ios.

0:07:40And then you'll go to the provisioning portal.

0:07:42And within that, there's kind of a process you walk through.

0:07:45The first thing you do is you create a developer certificate

0:07:47and a distribution certificate, which I'll get into the

0:07:50difference later.

0:07:51And Beth, basically, you open up Keychain Access,

0:07:53create a code signing request.

0:07:55It gives you a file that you upload to the server

0:07:57and it downloads a certificate.

0:07:58And it's just basically kind of doing a walk.

0:08:00It walks you through the process very straightforwardly.

0:08:03And at that point, it's pretty easy.

0:08:06Then you can go into Xcode and go into the Organizer

0:08:10Provisioning Devices.

0:08:12And your device will show up in the Organizer under Devices.

0:08:15And you say, use for development, at which point

0:08:18it'll typically ask you for your iTunes, your Apple ID

0:08:21credentials that are associated with your developer account.

0:08:25At this point, you just put that in.

0:08:26And now they do a thing that's called Team Provisioning

0:08:28Profile.

0:08:29And a team provision profile is essentially

0:08:32Apple's way of streamlining this process.

0:08:33Rather than before, you have to manually be going in,

0:08:36adding devices, adding app bundle IDs,

0:08:39all these types of things manually.

0:08:41A lot of that now happens automatically for you

0:08:43on the development side.

0:08:44On the distribution side, there's

0:08:46still a lot of manual things you need to do.

0:08:48But if you just want to install the app on a device

0:08:51to play with it while you're developing,

0:08:52you can just basically go in there,

0:08:54let it spin for a little while, it does its thing,

0:08:56and then you come back.

0:08:57And you should be able to then build and go,

0:09:00targeting the device, and it will launch down there.

0:09:04So the difference between a development and a distribution

0:09:06profile is a development profile is only valid--

0:09:09I think they're only typically valid for up to a year

0:09:12or six months, something like that.

0:09:13And it's only for distribution from Xcode.

0:09:18So you can't use that to submit something to the App Store

0:09:20or to send it to someone else to put on their device.

0:09:24A distribution profile, however, is something

0:09:26that you'll either use to do an ad hoc build.

0:09:29An ad hoc build allows you to send a bundle to somebody

0:09:33and have them install it on their own device

0:09:35or do it over the air with something like Test Flight

0:09:37App or Hockey.

0:09:39And doing that works pretty well for beta testing,

0:09:43for those types of things.

0:09:44And the last way you use a distribution certificate for

0:09:47is for submission to the App Store.

0:09:49And you need a different distribution profile

0:09:51for the App Store and for ad hoc builds.

0:09:55So basically, that's sort of the process.

0:09:57And to create one of those for distribution side,

0:10:00once you have your team profile set up, now you have to do

0:10:04is you have to set up a bundle ID.

0:10:06So this is typically just essentially a name

0:10:08that you're going to prefix all of your bundle IDs with.

0:10:11You can do it one per app.

0:10:13So you could have com.mycompany.myawesomeapp.

0:10:14Or you can also do a wildcard bundle ID.

0:10:21So this would be com.mycompany.star.

0:10:24And there's pros and cons for using each.

0:10:28The biggest thing to keep in mind is if you want to do

0:10:30anything that involves Apple server technology-- so push

0:10:34notifications, iCloud, all of those types of things require

0:10:37that you use a specific bundle ID rather than a wildcard

0:10:41bundle ID.

0:10:43So just keep that in mind.

0:10:44But basically, if you're only working on one or two apps,

0:10:46you can just create a bundle ID and associate it with that.

0:10:50And then you will go through.

0:10:51You've created your distribution certificate

0:10:53ready. And then you create a distribution profile where you will say, I want to make

0:10:57essentially, it's an app using this provisioning profile that uses this certificate and associates

0:11:02with this bundle ID. And that lets you create a profile that is very specific to your application.

0:11:08And then when you go to submit that to the App Store, Apple can then verify that it is

0:11:11you who submitted it, you who created this application. For a lot of where the security

0:11:16is coming from, is preventing someone from, you know, hijacking your developer account

0:11:22and then submitting an app in your name.

0:11:24In order for them to do that, they

0:11:25would need the private key associated

0:11:27with your application.

0:11:29So there's a little bit of security there.

0:11:32And so basically, once you've done that,

0:11:35you have all of the infrastructure parts

0:11:37in place for actually working and submitting

0:11:41your applications.

0:11:42Submissions themselves are done through iTunes Connect,

0:11:44which I'll talk about probably tomorrow.

0:11:47But I have a few more notes about this initial setup phase.

0:11:50Now one is you also have to associate for ad hoc builds

0:11:54devices with your account.

0:11:55I believe you are limited though to 100, I think it is.

0:11:58Sometimes it's 200.

0:12:00I'm not sure if that's just an overlap in years or things.

0:12:03But you have a limited number of those.

0:12:05But typically, unless you're doing massive betas,

0:12:07it's not a problem.

0:12:09And basically, every device that you

0:12:10want to build your application onto

0:12:13has to be one of the devices listed in your account.

0:12:17So you basically collect the UDIDs for each of your devices

0:12:22that you add them in, or you can add them automatically

0:12:24via the Xcode organizer if you're doing it yourself.

0:12:29For ad hoc builds and things like that,

0:12:31one thing that I would really recommend

0:12:33is using TestFlight app, which can automate

0:12:35the collection of those.

0:12:36And a lot of tech people or tech reviewers or things

0:12:40already have TestFlight apps accounts.

0:12:42And you can add their account to your TestFlight profile,

0:12:47and it'll tell you their UDID of all of their devices.

0:12:49And you can even, I think, export it in a fairly easy way

0:12:52that you can then copy paste into the provisioning portal.

0:12:55But just something to keep in mind,

0:12:56you're not going to want to add devices there that you can't--

0:13:00that you're not actually going to use, because you

0:13:02have a limited number of them.

0:13:03So just be mindful of that.

0:13:04Like I said, I've never really run into a problem,

0:13:06but I know people who have.

0:13:07Specifically, if you do a large beta,

0:13:09if you're beta testing with 100 users,

0:13:11you can fill up your entire developer portal.

0:13:14And then if the problem you run into is, OK, well,

0:13:16then in order to add another device,

0:13:19you all of a sudden have to pay another $99,

0:13:22create a new profile, do all this sort of headache work,

0:13:25because then you have to create two bills

0:13:27with two different profiles.

0:13:28So just keep that in mind and be mindful of it.

0:13:32Let's see, other thoughts about that process

0:13:35is I would talk just briefly about versions and testing

0:13:38devices.

0:13:40Any iOS developer will tell you that compatibility testing

0:13:43can be a bit of a pain.

0:13:45I probably have, I think it's somewhere in the range of 8 to 10 iOS devices in my office

0:13:49right now, running all different versions, all different configurations, and they're

0:13:52all in my provisioning profile.

0:13:55This is helpful and useful, I mean certainly.

0:13:58And if you're getting started, what I'd probably recommend you do is sort of connect with sort

0:14:02of your local developer community when you're getting ready to release your app.

0:14:05And so, you know, you can do all of your testing, all of your development on a device that is

0:14:11sort of running the latest and greatest.

0:14:13So say you're, for example, right now, it would be running it on an iPhone running 4.3.

0:14:17You know, iPhone 4 running 4.3 would give you pretty good coverage for sort of the primary

0:14:23case or if it's an iPad app, it's an iPad 2 running 4.3.

0:14:27And then go to your local developer community, go to an NS Code or an AtoCoco head, something,

0:14:30kind of make some friends there.

0:14:32Almost certainly someone there will have a collection of devices that you can play with.

0:14:36And you can kind of just try it out, ask to borrow them or go to their house, whatever

0:14:40that is.

0:14:41then that's probably the best way to do compatibility testing when you're starting out. Otherwise,

0:14:45you'll end up with dozens of devices like I have, which is fine, but I guess a little

0:14:48costly. Alright, that's it for today's show. I hope you have a good day. Happy coding.

0:14:53If you have any thoughts, hit me up on Twitter. I'm @_davidsmith. Or there's now a contact

0:14:57form on the website. Bye.