PodSearch

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.