IntroductionWelcome| 00:04 | Hi! I am Bill Weinman and I'd like to
welcome you to Distributing Mac OS X
| | 00:08 | Applications Through the App Store.
| | 00:10 | In this course, I will show you how to
prepare, submit, and distribute your Mac
| | 00:14 | OS X App through the Mac App Store.
| | 00:17 | I'll cover the various assets your
app needs like icons and screenshots.
| | 00:20 | I'll show you how to prepare your
application bundle in your installer and how
| | 00:25 | to submit your app to the store
using Apple's iTunes Connect portal.
| | 00:29 | Finally, I'll take you through Apple's
marketing guidelines and show you some
| | 00:32 | of the tools they provide to help you promote
your app and your presence in the Mac App Store.
| | 00:38 | By offering you access to a huge
installed base of Mac OS X users, the Mac App
| | 00:43 | Store represents a great new way
to take your application to market.
| | 00:47 | So let's get started Distributing Mac
OS X Applications Through the App Store.
| | Collapse this transcript |
| Using the exercise files| 00:00 | If you have access to the
Exercise Files for this course, you may use them to
| | 00:04 | follow along with me as I
go through the tutorial.
| | 00:07 | Feel free to put the exercise files
on the Desktop as I have or to use them
| | 00:11 | somewhere else if you prefer.
| | 00:12 | Do keep this important point in mind though.
| | 00:15 | You should not submit this
demo app to the App Store.
| | 00:19 | The application I created for the
examples in this course is specifically
| | 00:23 | designed to get rejected,
should it be submitted to the App Store.
| | 00:27 | Please do not use it.
| | 00:28 | The Exercise Files are separated into
four chapters and within those chapters,
| | 00:32 | there is a number of different assets.
| | 00:35 | Many of these folders contain an
Xcode project, which is the demo app that I
| | 00:39 | will be using for the exercises.
| | 00:41 | When you use this demo app for the
exercises, I suggest that you make a working copy.
| | 00:46 | I am holding down the Option key as I
drag this, and then just rename it to say
| | 00:52 | something like working and then use
the project within that working folder.
| | 00:58 | If you don't have access to the
Exercise Files, that's really okay.
| | 01:02 | It's really better, if you use your own
app and your own assets to follow along
| | 01:05 | with the exercises in this course.
| | Collapse this transcript |
| Course overview| 00:00 | So you have an amazing Mac application
and you want to submit it to the App Store.
| | 00:04 | This course is for you.
| | 00:06 | The goal of this course is to show you how
to submit an OS X app to the Mac App Store.
| | 00:11 | This is a new process.
| | 00:12 | The Mac App Store is a new version of
the App Store and so while the process
| | 00:18 | has some commonalities with the process for
IOS, iPhone Apps, it's not exactly the same.
| | 00:25 | So the first thing you'll need of
course is you'll need a Mac application.
| | 00:29 | In order to create the application,
you'll need a modern Intel Mac.
| | 00:32 | Current Mac development tools require an
Intel Mac and the very latest version of
| | 00:37 | Xcode requires the very latest version
of Mac OS X, which will only run on an
| | 00:42 | Intel Mac, so you really need a
modern Intel Mac with the latest version of
| | 00:47 | Mac OS X and the latest Xcode in
order to create your application and to
| | 00:52 | submit it to the Mac App Store.
| | 00:55 | Your app must be a native Mac app and
that is it must run on a Mac without a
| | 01:00 | separate runtime environment.
| | 01:01 | So that means Java apps, Python apps,
Flash apps, things like this cannot be
| | 01:06 | submitted to the Mac App Store.
It must be a native app created with Xcode.
| | 01:09 | Now for demonstration purposes, I provided a
demo app in the Exercise Files for this course.
| | 01:16 | It's probably best if you use your own
app, even you're following along with the
| | 01:20 | exercises in the course.
| | 01:22 | I provided this app in case you need
it just for your learning purposes.
| | 01:25 | This app was designed to be
the simplest possible app, just for
| | 01:29 | demonstration purposes.
| | 01:30 | So the app itself does nothing at all,
and it has the word demo in its title,
| | 01:34 | and either of those facts alone would
get rejected summarily from the App Store.
| | 01:39 | And that was part of the intention
actually designing it this way, so when you
| | 01:43 | get to the point where you ready to
submit your app, you don't want to
| | 01:46 | accidentally submit this one.
| | 01:48 | You'll also need some graphical elements,
icons, screenshots, things like that,
| | 01:53 | so you'll either need the skills and
the tools to make those elements or you'll
| | 01:57 | need to have someone
available to create them for you.
| | 01:59 | We will cover those requirements in this course.
| | 02:01 | We are also going to talk
some about the review process.
| | 02:05 | The review process for the App Store
is one of the most controversial and
| | 02:09 | misunderstood parts of this process.
| | 02:12 | Whatever you think of it, you'll need to
become familiar with it and you'll need
| | 02:15 | to learn to abide by its rules.
We'll cover this in some detail.
| | 02:19 | We'll talk about the contents of the
application bundle and you will see how
| | 02:23 | that gets created and how
you submit that to the store.
| | 02:28 | And once you have all of those pieces
assembled, you want to submit your app to
| | 02:31 | the App Store and I'll show you how to
do that and how to do it successfully.
| | 02:36 | Finally, once your app is in the App
Store you are going to want to promote it.
| | 02:40 | I'll cover the rules for doing this
and how you can use Apple's provided
| | 02:44 | marketing elements to help get
the word out about your amazing app.
| | 02:48 | So the purpose of this course is to
provide you with all the information and
| | 02:52 | knowledge you need to make your app
submissions go smoothly, so you can get your
| | 02:56 | amazing apps out into the
App Store quickly and easily.
| | Collapse this transcript |
|
|
1. Meeting the RequirementsMeeting the review guidelines| 00:00 | If you read the online blogs and
magazine articles about the App Store
| | 00:04 | review guidelines, you'll get the
impression that they are arbitrary,
| | 00:08 | oppressive, and otherwise evil.
| | 00:11 | Those characterizations are fun to
read but they're not going to help you
| | 00:14 | get your app approved.
| | 00:16 | Whatever else the App Store
Guidelines are, they are necessary for you to
| | 00:19 | understand and to comply with if
you want to ensure a smooth approval
| | 00:23 | process for your app.
| | 00:25 | You can see the complete
guidelines on Apple's Developer web site.
| | 00:29 | You must login with your
membership to see this document.
| | 00:32 | And you can see it's a rather long
document and it has a tremendous amount of
| | 00:37 | stuff in it. It's mostly really
just a list of do's and do nots.
| | 00:42 | So, we are going to go through
this in some detail right now.
| | 00:46 | From Apple's perspective, the quality
of the user experience is what separates
| | 00:50 | them from their competition.
| | 00:51 | This is why people buy Apple's products
instead of shopping for the least expensive
| | 00:55 | product in a category.
| | 00:57 | So it's useful to look at these
guidelines from this perspective.
| | 01:01 | How does this particular
guideline affect the user experience?
| | 01:05 | This approach should help you to
understand the guidelines and ultimately to
| | 01:09 | have your app approved more easily.
| | 01:11 | In essence, your app must do something useful.
| | 01:15 | It must work well and be
relatively free of bugs and crashes.
| | 01:19 | It must meet Apple's Human Interface
Guidelines and work as the user would
| | 01:24 | expect an OS X App to work, and
it must have no content that may be
| | 01:29 | considered offensive.
| | 01:31 | This is the gist of the document and if
you get this, the details won't surprise you.
| | 01:35 | The document has 22 sections but
we can break it down into just a few.
| | 01:41 | Your app must not crash.
This is a basic requirement.
| | 01:44 | Xcode has a number of tools to help with this.
| | 01:47 | At a minimum, use the Build and
Analyze function and the leaks instrument.
| | 01:52 | Your app should be relatively
bug -ree, so test it thoroughly.
| | 01:56 | The more complex it is, the more
things it does, the more options it has,
| | 02:01 | the more time and resources
you'll need to spend testing it.
| | 02:05 | The App Store will summarily reject
any app that uses any of the following
| | 02:09 | words: beta, demo, trial or test.
| | 02:12 | And note that the example application
included with the Exercise Files in this
| | 02:17 | course is named with the word Demo in it.
| | 02:20 | This is to ensure that it
cannot be submitted to the store.
| | 02:24 | Your app must use the Xcode packaging system.
| | 02:27 | It cannot use a third-party installer.
| | 02:29 | It must be completely self-
contained in its own bundle.
| | 02:32 | It cannot install any other
resources in location outside of its bundle.
| | 02:37 | And your app must ask for user
permission if it needs to auto launch or start up
| | 02:41 | or to use location information
or any other personal information.
| | 02:46 | Your app cannot be just a
mock-up or an advertisement.
| | 02:49 | It cannot have hidden,
undocumented, or otherwise surprising features.
| | 02:54 | Now, you may use Easter eggs in your
application. Easter eggs are fun and
| | 02:59 | a lot of people like to put them in there.
| | 03:00 | But you need to let the review board
know about them, because if they stumble
| | 03:04 | across them by accident and they
didn't know about them beforehand, they are
| | 03:07 | going to reject your app.
| | 03:10 | Your app also cannot use undocumented
features of the operating system or nonpublic APIs.
| | 03:16 | If you think it's unfair that Apple
can use OS calls in its apps that aren't
| | 03:21 | available to the public,
| | 03:22 | you're right. It's not fair.
| | 03:23 | You will also get your app
rejected, so just don't do it.
| | 03:28 | Your app may not install any kernel
extensions and may not keep anything running
| | 03:32 | after the user exits the app.
| | 03:35 | And your app cannot use any depreciated
or optional technologies and of course
| | 03:40 | Apple recently put Java in that
category and this includes Rosetta, it includes
| | 03:44 | Flash, and other things.
| | 03:46 | In other words, it must be written in
C++ or Objective-C and use Xcode as its
| | 03:52 | development environment.
| | 03:54 | Your app must comply with the Mac Human
Interface Guidelines and we will go over
| | 03:59 | that in some detail later on.
| | 04:02 | Your app must not try to
mimic the look of Apple's apps.
| | 04:05 | In other words, a Finder-like
interface is fine but if your user could easily
| | 04:10 | confuse your app with the
actual Finder, it will be rejected.
| | 04:14 | And you should use the system-provided
interface elements and don't change their behaviors.
| | 04:20 | Apps that depict realistic
violence or abuse will be rejected.
| | 04:24 | Enemies in a game may not all
be one race or ethnic group.
| | 04:28 | Apps that are designed to disgust
or upset users will be rejected.
| | 04:32 | Pornographic apps will be rejected
even if it's a user generated content.
| | 04:36 | In other words something like
Chatroulette would be rejected.
| | 04:40 | Some of the financial guidelines imply
in-app purchasing that doesn't yet exist
| | 04:44 | in the Mac App Store.
| | 04:45 | I expect this'll be one of the first
features to be added with a future version.
| | 04:50 | Your app cannot create a self-contained
store for purchasing additional content.
| | 04:55 | This is one of the things that might
become possible with in-app purchasing.
| | 04:59 | Rental content that expires after a
given amount of time is not allowed and
| | 05:03 | apps that enable features
for a fee will be rejected.
| | 05:08 | All apps must comply with all local
laws and it's your responsibility to know
| | 05:12 | what the local laws are for your locale.
| | 05:15 | Your app cannot solicit or
encourage illegal behavior.
| | 05:19 | And gambling apps that use
real money are not allowed.
| | 05:23 | Understanding these guidelines is
crucial for success in the Mac App Store.
| | 05:27 | Yes, in some contexts, some of them
may seem unfair but they create a common
| | 05:32 | denominator that allows Apple to make
your app available to a vast number of Mac
| | 05:37 | owners with a few clicks of the mouse.
| | Collapse this transcript |
| Touring the Xcode 4 interface| 00:00 | Soon after this course was recorded,
Apple released Xcode 4 about six months
| | 00:05 | before we expected them to.
| | 00:08 | Xcode 4 has a completely
redesigned user interface.
| | 00:11 | So if you're using Xcode 4 with this
course your screens will look significantly
| | 00:15 | different than my screens do in the movies.
| | 00:18 | Keep in mind that Xcode 4 does all
the same things that Xcode 3 does.
| | 00:22 | It just looks different and some of
its components have been moved around.
| | 00:26 | Until we get a chance to update the
course we've added a couple of movies to
| | 00:30 | help you find your way
around the examples with Xcode 4.
| | 00:34 | This movie is a tour of the
new user interface in Xcode 4.
| | 00:38 | Many things are moved around so you'll
want to take some time to become familiar
| | 00:42 | with the new interface.
| | 00:44 | The most obvious difference between
Xcode 4 and previous versions of Xcode is
| | 00:48 | the new single window interface.
| | 00:51 | So the first thing you'll want to
know is, where did they put everything?
| | 00:54 | So I've made a working copy of the Mac
demo project from the exercise files.
| | 01:00 | You can use any project that you have
and frankly, I recommend that you use
| | 01:03 | one of your projects.
| | 01:05 | This course is not about the code.
| | 01:06 | It's about the IDE and you want to
get familiar with it with your own code.
| | 01:11 | So if you don't have the exercise files
don't worry about it and if you do have
| | 01:15 | the exercise files and you've got some
of your own code you could be using for
| | 01:18 | this, do go ahead and use your own code instead.
| | 01:22 | You'll also notice that I've set up
the screen here with all of the various
| | 01:25 | components of the screen showing.
| | 01:27 | If your screen looks a little bit
different don't worry about that.
| | 01:31 | By the time we get to each element of
the screen you'll know how to open that up
| | 01:35 | and how to turn that on.
| | 01:37 | So first I want to direct
your attention to the toolbar.
| | 01:41 | And you'll notice over the left there's
a Run button, and there's a Stop button
| | 01:45 | and then there's the Scheme menu.
| | 01:48 | The Scheme menu is analogous to the
Active Configuration menu for Xcode 3 and
| | 01:54 | you'll notice when I pull this down,
it's got some different schemes available
| | 01:57 | and you can edit schemes and create
new schemes and manage your schemes.
| | 02:01 | This is really a whole lot more powerful
than what we had in Xcode 3 and we will
| | 02:04 | go into details on this in another movie.
| | 02:07 | Then there is a Breakpoints button
for turning on or off breakpoints.
| | 02:11 | And that's followed by the Activity
Viewer and you'll notice that it just says
| | 02:15 | succeeded, no issues.
| | 02:17 | All kinds of messages can come up there
and it'll show you a progress bar when
| | 02:21 | things are going on and if there's more
than one thing going on there will be a
| | 02:24 | little number and you can click on that
number and you can see the progress of
| | 02:28 | the various things that are happening.
| | 02:30 | Then there's the Editor Selector and this
selects the different editors in the Editor area.
| | 02:36 | And so you'll notice if I click on
this Assistant Editor, it brings up an
| | 02:40 | Assistant Editor with
the corresponding .h files.
| | 02:43 | So you have the .m file on the
left and the .h file on the right.
| | 02:47 | This can be very convenient, especially if
you have enough screen real estate for it.
| | 02:51 | Here in this little movie format we
don't have a lot of screen real estate.
| | 02:56 | And then there's also the Version
Editor and that allows you to navigate
| | 03:01 | different versions, if you're
using source code management, different
| | 03:04 | versions of the same file.
| | 03:06 | So we will just leave this over
here on the main Editor Viewer.
| | 03:10 | Then you'll see the View Selector and
this allows you to turn on or off the
| | 03:14 | different regions of the screen.
| | 03:19 | And an Organizer button, which brings
up the Organizer window and you notice
| | 03:23 | that the documentation is now in the
Organizer window and there's a toolbar up
| | 03:28 | here with a lot of different
possibilities for what shows up in the Organizer.
| | 03:34 | Now let's take a look at the Editor area.
| | 03:37 | You'll notice up at the top of the Editor
area, there are jump bars for the editors.
| | 03:43 | This one here is very familiar.
| | 03:44 | You will recognize this from Xcode 3.
| | 03:46 | This is how you can navigate to
different parts of the file that you're editing.
| | 03:51 | There's also the breakpoint gutter.
| | 03:53 | And this is the area where
your breakpoints will show up.
| | 03:56 | And there's the focus selection area
where if I hover my cursor over this you'll
| | 04:01 | see that it will highlight
particular blocks of my code and that can be
| | 04:06 | convenient at times as well.
| | 04:08 | Over on the left is the Navigator area.
| | 04:11 | There is an Navigator Selector bar,
which we can use for selecting different
| | 04:16 | navigators in the Navigator area.
| | 04:19 | And there's a filter bar down at the
bottom where I can type in something
| | 04:23 | like .m and it'll show me all of my .m files
or .sib and it'll show me all my NIB files.
| | 04:31 | And I can click on this little X, this
little clear button, and it will clear this out.
| | 04:37 | Down here at the bottom
we have the Debugger area.
| | 04:40 | And if that's not showing, you can select
it with the View Selector up at the top.
| | 04:45 | The Debugger area has a debugger bar,
where you can perform various operations
| | 04:49 | on the Debugger area.
| | 04:50 | And it also has a selector or you can
select either just the debugger output or
| | 04:57 | just the log output or both.
| | 05:00 | And on the right, there's a Utility area
with an Inspector pane and a Library pane.
| | 05:08 | And the Inspector pane is where
you'll see the various inspectors.
| | 05:11 | If I bring up this NIB file this'll be
familiar from the old Interface Builder
| | 05:16 | and you'll notice that there is a
number of different inspectors available for
| | 05:21 | the different things in the Interface
Builder and of course the Inspector area
| | 05:25 | is also used for our code files and
here we can get documentation or just
| | 05:32 | information about the file.
| | 05:34 | And the Library pane has a Library
Selector bar for different kinds of things we
| | 05:38 | can grab from the library.
| | 05:41 | And then there's the objects
themselves, which can be dragged from the
| | 05:44 | library into the code.
| | 05:46 | For example from the Code Snippet
Library we could grab a little do-while
| | 05:50 | statement and drop it here into the code.
| | 05:53 | And that'll insert that do-while into the code.
| | 05:57 | And I'll just press Command+
Z here to undo that change.
| | 06:01 | So the new layout in Xcode 4 is a
significant change from previous versions.
| | 06:06 | There are real advantages to this more
integrated approach, but it may take a
| | 06:10 | little getting used to.
| | 06:11 | So I strongly suggest taking some time
to get to know this new integrated layout.
| | 06:17 | For a more complete discussion of the
differences between the Xcode 3 and Xcode
| | 06:21 | 4, please see the Xcode 4 New
Features title on lynda.com.
| | Collapse this transcript |
| Understanding the human interface guidelines| 00:00 | Apple's Human Interface Guidelines are
incorporated into the review guidelines
| | 00:05 | so they're not optional.
| | 00:06 | You must follow these guidelines
in order to have your app approved.
| | 00:09 | The good news is that for the most part
following these guidelines will make
| | 00:14 | your app more polished, easy to use,
and provide a better user experience and
| | 00:18 | generally work better than if you
were to provide a custom user interface.
| | 00:24 | So, this is the Apple Human Interface
Guidelines and you'll notice this is just
| | 00:28 | the title page and even that's
pretty long and then you have all of these
| | 00:33 | sections here, a lot of these, they
open up into many other things and so you
| | 00:39 | can see that this is
actually a very large document.
| | 00:43 | You can download the PDF by clicking
on this PDF link here and I suggest that
| | 00:49 | you download the PDF.
| | 00:50 | This is-- like I said, it's a
relatively large document and you are going to
| | 00:55 | want to take some time to study it.
| | 00:59 | The purpose of the Human Interface
Guidelines is to provide a consistent and
| | 01:03 | predictable experience for the user.
| | 01:05 | It's not so much a matter of best
practices, as it is about consistency.
| | 01:11 | While there certainly are those who
would say that Apple's interface is better
| | 01:15 | than that of other platforms,
| | 01:16 | the truth is that it just seems that way.
| | 01:19 | One major reason for this is the
Human Interface Guidelines. Because Apple
| | 01:23 | provides strong encouragement to use
consistent interface from application to application,
| | 01:29 | your application appears easier to use
because familiarity is always easier.
| | 01:35 | Also because the user-interface is so
rich and its application programming
| | 01:40 | interface is consistent, it's much
easier to program to the Human Interface
| | 01:45 | Guidelines than it would be not to.
| | 01:47 | This provides an added bonus in
the form of stability because these
| | 01:52 | user-interface elements are
based on well tested and mature code.
| | 01:57 | The Human Interface
Guidelines is a living document.
| | 02:00 | It gets updated with every release of the
operating system and sometimes in between.
| | 02:06 | It's a relatively large document so
I recommend that you spend some time
| | 02:09 | familiarizing yourself with it.
| | 02:11 | If you're really committed to
creating great apps for the Mac, I strongly
| | 02:15 | suggest that you set aside a day or
two or even longer, just to study and
| | 02:19 | experiment with the Human Interface Guidelines.
| | 02:22 | Once you're familiar with it,
it becomes easy to keep up.
| | 02:26 | Apple publishes change logs with
each update, so you can just read the
| | 02:29 | parts that have changed.
| | 02:31 | The primary principle to keep in mind
while considering these guidelines is that
| | 02:35 | your app should be easy for the user to use.
| | 02:38 | The user should be able to focus on the
task at hand rather than worrying about
| | 02:43 | how the application works.
| | 02:45 | The user should be familiar with the
controls and they should operate as would
| | 02:50 | be expected by someone
accustomed to using a Mac.
| | 02:53 | You will want to use familiar
technology instead of using technical jargon.
| | 02:57 | For example instead of saying "Select
this button to submit," you say something
| | 03:03 | like "Press the button."
| | 03:05 | And if you have animations as part of
your interface, you want to use them subtly.
| | 03:09 | Use them to enhance the task
at hand but not to distract.
| | 03:13 | When reporting on errors, you want
to make your error messages clear and
| | 03:17 | friendly. Instead of something like
"Error 42 bad input" you might want to say
| | 03:21 | something like "I didn't understand that date."
| | 03:24 | Likewise, you want to make it
easy to recover from errors.
| | 03:28 | So instead of making them click a bunch
of buttons and go all the way back and
| | 03:31 | re-input a whole bunch of data, you
want to make it so that they know what is
| | 03:34 | that went wrong and they can just get
on with the task at hand, which is why
| | 03:38 | they're using your application.
| | 03:39 | And as much as possible, you want
to accept multiple forms of input.
| | 03:44 | In other words to support various date
formats, allow users to push buttons in any order.
| | 03:51 | And the whole idea here is for the
application to be as forgiving as possible
| | 03:55 | of different ways that a person might use the
application or mistakes that they might make.
| | 04:00 | Apple provides a rich library of
standard widgets, controls, icons, and
| | 04:05 | other interface elements.
| | 04:07 | Using these standard resources will
make your interface seem familiar.
| | 04:11 | It's like when you are listening to the
radio and somebody calls in to request a song.
| | 04:15 | You might hear several people
over the course of the afternoon, calling
| | 04:19 | and request that same song. You
might hear that same song many times.
| | 04:22 | The reason for this is that people
gravitate towards things that seem familiar.
| | 04:27 | People like the same song because it's
familiar to them and makes them feel comfortable.
| | 04:32 | Likewise, using the standard interface
elements that Apple provides will make
| | 04:37 | your application seem familiar. Users will
gravitate towards it and they'll use it more often.
| | 04:42 | You want to be really
careful about using modal designs.
| | 04:46 | A model design is something that
requires somebody to complete an entire piece
| | 04:51 | of something before they
can go onto another piece.
| | 04:54 | It might be like a modal dialog box
that pops up in the middle of the screen
| | 04:58 | and that they have to do something
with that before they can get back to what
| | 05:01 | they were doing before.
| | 05:03 | You want to allow your user to use any
part of your application at any time.
| | 05:08 | You don't want to require them to
switch modes unless it's really necessary.
| | 05:13 | If you absolutely need a piece of
information before continuing with the task,
| | 05:17 | then of course you are going
to want use a modal dialog box.
| | 05:20 | But keep in mind that modal design is
for the convenience of the programmer.
| | 05:26 | It's not convenient for the user.
| | 05:28 | You want your application as much as
possible to be to the convenience of the user,
| | 05:32 | rather than the convenience of the programmer.
| | 05:35 | You want to keep in mind that
Macs come in all shapes and sizes.
| | 05:39 | There are Macs that are 3x4 or 4x5, 16x9, 16x10.
| | 05:44 | You never want to tie your application to
a particular display size or aspect ratio.
| | 05:51 | If you're developing a game, you may
want to create your own scroll bars that fit
| | 05:55 | how the game looks and feels.
| | 05:56 | But for the most part, for most Mac
applications, you don't want to go around
| | 06:00 | the operating system.
| | 06:02 | You want to stick with the
standard OS X technologies.
| | 06:06 | Keep in mind that the more your app
looks and feels like the rest of the Mac
| | 06:10 | experience, the more familiar it will
be and more people will want to use it.
| | 06:15 | Apple's Human Interface
Guidelines are really for the user.
| | 06:19 | There's a lot there to make your job
easier but mostly it's there to protect the
| | 06:23 | user experience, which ultimately
serves Apple's mission of making their
| | 06:27 | products persistently desirable in
the market and this is key to Apple's
| | 06:32 | success and by extension it's
key to the success of your app.
| | Collapse this transcript |
| Creating the icons| 00:00 | Creating icons for Mac apps is a bit
different from the process of creating
| | 00:04 | icons for other environments.
| | 00:06 | Icons for the Mac scale continuously.
| | 00:09 | Take a look at your dock and we'll go
ahead and turn Magnification on, and
| | 00:15 | you'll notice that the icons, they get
very large as you pass your mouse over
| | 00:20 | them and then they get smaller again.
| | 00:23 | You can actually adjust this and
make it very extreme or less extreme.
| | 00:28 | It's really very flexible and it
gives you an idea of what people expect
| | 00:34 | from icons on the Mac.
| | 00:35 | I am going to go ahead and
turn Magnification off again here.
| | 00:39 | So Apple provides a tool for making the icons.
| | 00:42 | It's called Icon Composer and you can
find that in the root directory under
| | 00:47 | Developer and Applications and
Utilities and under here Icon Composer.
| | 00:55 | So this is part of Xcode and it comes with
Xcode when you install Xcode on your machine.
| | 01:01 | So if I'll open this up and you'll see
that there is a place here for 512 pixels square,
| | 01:06 | 256, 128, 32 and 16 pixel
square images, and you basically copy and
| | 01:15 | paste those in and save it and it
creates this composite icon file that has all
| | 01:19 | of this information in it, and that
allows the operating system to use the icon
| | 01:25 | in so many different ways.
| | 01:27 | So let's go ahead and
create an icon for our app.
| | 01:30 | I'll come over here to the
Exercise Files under Chapter 1 and icons-start.
| | 01:36 | Now this is the Exercise Files off the desktop.
| | 01:38 | I have just stuck it in my places over
here in Finder, and you will see this
| | 01:42 | file BWDemoIcon.psd. That's a Photoshop file.
| | 01:46 | I am using Photoshop.
You can use any image editor.
| | 01:50 | Photoshop is very popular and
common, and so I am using it here for
| | 01:53 | demonstration purposes.
| | 01:55 | Now icons are very big deal on the Mac.
| | 01:57 | People expect a lot of their icons.
| | 02:00 | They expect them to look great.
| | 02:01 | they expect them to work well.
| | 02:03 | So I am going to give you some examples
of some of the challenges you are going
| | 02:06 | to find in creating icons.
| | 02:08 | I have created this icon specifically
to have some challenges that we can look at,
| | 02:12 | so you can get an idea of the kinds
of things that you're going to run into.
| | 02:16 | Apple actually recommends right there
in their Human Interface Guidelines that
| | 02:20 | you hire a designer to design your icon,
and the reason for that is that people
| | 02:25 | expect a lot of their icons on a Mac.
| | 02:28 | So you want your icon to
compete well in the icon marketplace.
| | 02:32 | They suggest that you start on paper ,
that you draw it first on paper and use a
| | 02:36 | bunch of ideas until you find the design
that you want and then go to your image
| | 02:40 | editing program and create an icon.
| | 02:43 | They recommend that you use transparency.
| | 02:45 | You can see that this icon
here uses transparency well.
| | 02:48 | That you use shadows and you see
we have some shadows down here.
| | 02:51 | If I turn on my white
background, you can see the shadows.
| | 02:54 | And inner glow on black areas. You'll
notice that this area here is black and if
| | 03:01 | we use a black background, it does
not disappear, because it has this inner
| | 03:05 | shadow, against a white background you
hardly even notice that inner shadow, but
| | 03:09 | against a black background, it
really helps the icon itself to stand out.
| | 03:15 | So that it still shows up
against that black background.
| | 03:18 | If I turn off that Inner Glow
there you'll see that the black just
| | 03:21 | completely disappears into the
background there. And you want to compose for
| | 03:25 | all of your different sizes.
| | 03:26 | So we are going to do that right now.
| | 03:27 | This is 512x512 and if I go ahead
and under the File menu here, I use the
| | 03:34 | keyboard shortcut, which is Command+Option
+Shift+S. So this is the Save for Web &
| | 03:40 | Devices, and you will notice
our image size here is 512x512.
| | 03:43 | So we are going to go ahead and start
by saving that and we are saving it as a
| | 03:49 | PNG-24 with Transparency, and I am
going to save that and I am going to put it
| | 03:55 | in my Exercise Files Chapter 1 and I
am going to go ahead and create a folder
| | 03:59 | here called Icons and I am going
to save it as BWDemoIcon-512.png.
| | 04:11 | So now I have a 512 pixel version.
| | 04:16 | I'll open that up in Preview, there it is,
and against the gray background there
| | 04:21 | you can still see the shadows and all of that.
| | 04:24 | I am going to go ahead and
save this in some other sizes.
| | 04:29 | Back to my Save for Web & Devices and
I am going to come in here. I am going
| | 04:33 | to say 256 and you will notice because I have
the little lock there, it keeps the aspect ratio.
| | 04:39 | I'll just press the Tab key and it goes
ahead and it shows it to me in that size
| | 04:43 | and I say okay, that's okay, that looks good.
| | 04:46 | I am going to go ahead and save that.
| | 04:48 | I don't have to do anything to that to
make that work, and I'll save that as the
| | 04:51 | 256 pixel version. And
we'll do exactly the same thing.
| | 04:55 | And you will notice that we still need
a 128 and a 32 and a 16 and so we'll
| | 05:01 | just go ahead and do those.
| | 05:02 | This is 128 and there it is in 128.
| | 05:08 | It's still pretty good.
| | 05:10 | If you have a lot of detail, you might
want to use some layers that might have
| | 05:14 | some detail or something like that,
but that's still looking pretty good.
| | 05:17 | We are going to make some
adjustments at the next size though.
| | 05:20 | So this is the 128 version.
| | 05:23 | I'll save that and now we are
going to go to the 32 pixel version.
| | 05:26 | Now you'll notice that if I do this
and if I scale this down to 32 pixels,
| | 05:33 | the word DEMO becomes completely illegible.
| | 05:36 | There's no way that I can even read that.
| | 05:38 | So I am not going to save that.
Instead I am going to turn off my Demo layer
| | 05:41 | here and I am going to go
ahead and save it like this.
| | 05:45 | And I am going to say that's 32 pixels.
| | 05:49 | So that's actually very
legible there. And that 32.
| | 05:55 | Obviously, there's a lot more than you
can do to make it work in these different
| | 06:00 | sizes if you want to, and I
strongly recommend that you do.
| | 06:03 | You really want it to-- but Bicubic
isn't working too good. I am going to say
| | 06:07 | Bicubic Sharper. That's a little bit
better and we will save that as -16 and
| | 06:14 | there we have our icons now.
| | 06:17 | So here is all of our icons in this
folder and all I have to do at this point
| | 06:21 | is just drag them in and
there is the 512 pixel version.
| | 06:26 | There is the 256 pixel version and I am
just going to fill this all in right here.
| | 06:30 | And watch what we can do now.
| | 06:33 | So now we're in the Icon Composer and
if we want to, we can look at it with a
| | 06:40 | number of different backgrounds.
| | 06:41 | Here's a light gray background.
| | 06:44 | Here's the Grass Blades background.
| | 06:45 | So you can see what your icon looks
like against these different backgrounds,
| | 06:49 | because it's going to show up
in your users using of the icon.
| | 06:55 | You can even specify
another image if you wanted to.
| | 06:59 | And here's a white background.
| | 07:01 | There is a black background.
| | 07:03 | You can see our inner glow,
that's working pretty well.
| | 07:05 | You can pick a custom color
if you want to, which is gray.
| | 07:14 | The other thing that you can do.
| | 07:15 | Let me bring it up against the Grass Blades.
| | 07:17 | You can actually scale it down
continuously and you can watch when it gets
| | 07:22 | down to the different levels and you'll see the
word Demo disappear, and now you just got that.
| | 07:28 | Let's see.
| | 07:32 | So you can really do a lot in your Icon
Composer to test your icon and make sure
| | 07:37 | that it's working the way
that you expect it to work.
| | 07:40 | So we are going to say that this is
okay and we are going to go ahead and save it now,
| | 07:46 | and we are going to Save As
and you will notice that it brings up the
| | 07:52 | ICNS file extension, because that's
what we want for Macintosh icon file.
| | 07:59 | Now we are going to go into our
Exercise Files folder and the icons that we just
| | 08:04 | made and we are going to name it BWDemo.icns.
| | 08:10 | You wanted to have exactly the
same name to the left of the dot
| | 08:14 | as your application, and that's important
for when we start putting the bundle together.
| | 08:18 | So I am going to go ahead and save that,
and now we have an icon file here and
| | 08:24 | you'll notice in the Finder that it's
showing the 32 pixel version right there,
| | 08:31 | and you'd see it doesn't have the demo on it.
| | 08:33 | Now you'll also notice that if we go
here into the cover flow view and we'll go
| | 08:38 | ahead and select the icon file, that
it's actually showing the larger version,
| | 08:44 | and you'll notice some
other stuff here about this.
| | 08:48 | Notice that even though our file has all
this space under the word Demo, that in
| | 08:55 | the cover flow it's actually bringing
it right up to the glass there, so that
| | 08:59 | it can show that reflection.
| | 09:02 | This is one of the little tricks that the
operating system plays with these files.
| | 09:05 | You want to make sure that your
transparency mask is really coherent.
| | 09:10 | Now we just have it
automatically made by Photoshop.
| | 09:13 | If you look here under Masks, you
can see what the mask looks like.
| | 09:16 | That's important because the operating
system wants to know where are all these
| | 09:19 | blank spaces around it.
| | 09:21 | So that you can use it for things like that.
| | 09:23 | So that actually looks really gorgeous there.
| | 09:26 | And we can see that that icon
is going to work great for us.
| | 09:30 | So don't skimp on your icon.
| | 09:32 | Remember the user experience
is everything for a Mac App.
| | 09:35 | Apple provides this excellent tool in
Icon Composer for creating a composite
| | 09:40 | icon file with all the different images in it.
| | Collapse this transcript |
| Creating screenshots| 00:00 | One of the App Store submission
requirements is at least one 1280 pixels by 800
| | 00:06 | pixels screenshot of your application.
| | 00:09 | This image is your customer's first
impression so you want it be perfect.
| | 00:13 | There are two distinct possibilities
for a screenshot. If your app is a full
| | 00:18 | screen app or if your app is not a full screen.
| | 00:21 | Our app is not a full screen app
so we are going to start with that.
| | 00:25 | And then we will do a full screen
version using Firefox, just to show you
| | 00:29 | how that process works.
| | 00:30 | Now, one thing you'll notice here is
that I am using Photoshop to build the
| | 00:35 | screenshot, but you can certainly use
whatever graphics application you are
| | 00:39 | comfortable with, whatever you have.
| | 00:41 | I am using Photoshop because it's
very popular and it's what I have here at
| | 00:45 | the lynda.com studios.
| | 00:47 | Now, our first step is to create
a screenshot of the app itself.
| | 00:51 | So, I am going to come up to here to
our BWDemo application,. It's in this
| | 00:55 | BWDemo-start folder inside
Chapter 1 of our Exercise folder.
| | 00:59 | I am just going to open Xcode
using this Xcode project file here.
| | 01:04 | I am just going to double-click on
that and that will open up Xcode.
| | 01:07 | And now I am going to build the app
with Command+B, and again this is just
| | 01:11 | a very simple application. It doesn't really
do anything but it brings up this screen here.
| | 01:15 | Press Command+R and you can see it.
| | 01:17 | And that's the application there.
| | 01:19 | It does nothing, it says nothing
here, it says this page is blank, and
| | 01:23 | that's all it does.
| | 01:24 | But this is our application, and you'll
notice that it's not a full screen app.
| | 01:29 | It doesn't take up the entire screen.
| | 01:30 | It just takes up this
little space on the screen.
| | 01:32 | You also notice that because it's an OS
X App, it has this little shadow around it.
| | 01:37 | That's just a normal part of
the OS X environment so we want our
| | 01:41 | screenshot to have that.
| | 01:42 | But what's beautiful about Mac OS X is
that when I take the screenshot of this
| | 01:47 | application, you'll have that automatically.
| | 01:50 | So in order to take the screenshot of
a window that's not taking up the full screen,
| | 01:54 | you want to press Shift+
Command+4, so I am going to press
| | 01:58 | Shif+Command+4 on my desktop.
| | 02:00 | You will notice that my cursor changes
to this little target and its got rows
| | 02:05 | and columns there of numbers
that shift as I move it around.
| | 02:08 | And that's not really what we want.
What we want is not to just select an
| | 02:13 | area and take a screenshot of that. We want
to take a screenshot of this entire window.
| | 02:17 | So, OS X has this other feature.
It's called Camera Mode and when I press the
| | 02:22 | Spacebar, you notice that my
cursor changes to a camera.
| | 02:25 | And if I move my cursor over to
another window, that one highlights.
| | 02:30 | So what this does is it takes a
screenshot of a given window, so I can move it
| | 02:35 | to whatever window I want to on my
screen and when I click my mouse button,
| | 02:39 | it will take a screenshot of that window.
| | 02:42 | So I am going to go ahead and quit
this and I am going to quit Xcode.
| | 02:44 | I am going to go over here to my Desktop.
| | 02:48 | I'm going to take this file here,
which is the screenshot that I just took.
| | 02:50 | I am just going to drag it into
my Exercise Files and Chapter 1 and
| | 02:55 | Screenshots, and there it is.
| | 02:58 | All right, so when I open that up,
you'll see there is my application and
| | 03:04 | you will notice it's got space here for
that shadow and that shadow has alpha
| | 03:08 | transparency, which makes it really
easy to composite it onto a screen.
| | 03:13 | So that's our first step,
we now have this screenshot.
| | 03:15 | But Apple is requiring
that it be a 1280x800 screen.
| | 03:20 | And so all I am going to do is I am
going to create a 1280x800 screen with a
| | 03:24 | normal Apple looking background, and
I am going to drop this on top of it.
| | 03:28 | So here's how we do that.
| | 03:30 | I am going to quit Preview.
| | 03:31 | I am going to go over here to my hard
disk and in under Library and Desktop
| | 03:36 | Pictures, I am going to grab
a standard Apple background.
| | 03:39 | And all your standard Apple backgrounds
are here. You have got this one and that
| | 03:43 | one and that one and that one and so on.
| | 03:46 | I am going to get the standard one,
which is actually under this Nature folder
| | 03:50 | and it's called Aurora.
| | 03:53 | And that's it right there in Preview.
| | 03:57 | So, I am just going to make a copy of that.
| | 03:59 | I am going to press Command+C and
copy it and come over here to my Exercise
| | 04:03 | folders in my screenshots and press
Command+V, and there I have a copy of it now
| | 04:08 | in my folder right there.
| | 04:10 | I am going to open that in Photoshop.
| | 04:14 | Now, I am going to resize it.
| | 04:19 | Image Size to 1280x800 and say OK and
now I have a 1280x800 version of that,
| | 04:28 | and I'm going to select it all by
pressing Command+A and copy it into my copy
| | 04:34 | buffer by pressing Command+C.
Now when I say File > New, it will assume that I am
| | 04:40 | going to paste from my clipboard in there.
| | 04:42 | So, I am just going to name it
BWDemoScreenshot, and Background Content is
| | 04:50 | Transparent. I want RGB color.
| | 04:52 | It's probably going to pick all this up
from the clipboard, but just in case it doesn't,
| | 04:56 | you want to check all your
settings to make sure that it makes sense.
| | 04:58 | And say OK and now I can just press
Command+V to Paste, and there we have a
| | 05:04 | 1280x800 with a standard Apple background.
| | 05:08 | I am just going to say here,
this is Aurora for my layer there.
| | 05:12 | All right, and there is that.
| | 05:14 | Now I am going to come back out here
and I am going to take my screenshot and
| | 05:19 | I am going to open that in Photoshop,
and there is my screenshot with its alpha
| | 05:25 | transparency drop shadow around it.
| | 05:27 | I am just going to Command+A to select
it, Command+C to copy it, come over here
| | 05:33 | and Command+V to paste.
| | 05:35 | You will notice it puts it on
another layer by itself.
| | 05:37 | I am just going to put in here
BWDemo for the title of the layer.
| | 05:40 | And there we have it and you can see
it's got the nice little drop shadow.
| | 05:44 | It looks just like a Mac
screen with an alpha running on it.
| | 05:47 | So, I am just going to Command+S to save
and so I will save my Photoshop file there.
| | 05:53 | I am saving it in my Screenshots
folder and just press Save, and I don't care
| | 05:59 | about compatibility because I'm
not going to be using this in another
| | 06:03 | application, and so there we have it.
| | 06:06 | Now all I need to do is export this as
a PNG file, and so I will come up here to
| | 06:11 | File and Save for Web & Devices and
I will select PNG-24 from my Presets and
| | 06:18 | this is what it looks like there.
| | 06:20 | My buttons are off the screen because
of the size of the screen in here in
| | 06:23 | the recording booth.
| | 06:24 | I am just going to press the Return
key and I am going to save the optimized
| | 06:29 | file here as BWDemoScreenshot.png
in that same Screenshots folder.
| | 06:35 | Save it and there we have it.
| | 06:39 | Now, we will come over here and here's
our PNG file and there is our perfect
| | 06:44 | screenshot that's all ready to
be submitted to the App Store.
| | 06:50 | Now, that's how you do it with an
application that's not full screen.
| | 06:55 | Here's how to do it real quickly
with a full screen application.
| | 06:58 | I am going to quit Preview here.
| | 07:00 | I am just going to rename this PNG
file here as my BWDemoScreenshot.
| | 07:05 | I am going to call this ScreenCapture
because that's the one that I captured
| | 07:11 | with my Shift+Command+4. Now, for a
full screen app, the first thing you are
| | 07:16 | going to need to do is you are going
to need to set your screen to 1280x800.
| | 07:20 | Now if you have one of the newer Macs,
like my iMac at home is actually a 16:9,
| | 07:27 | it's not a 16:10 aspect ratio.
| | 07:29 | So I can't actually set
that screen to 1280x800.
| | 07:33 | You are going to need to be able to
take a screenshot of a 1280x800 screen or
| | 07:38 | you're going to need to do a little
bit of creative editing in your image
| | 07:42 | editing to make it fit
and to make it look right.
| | 07:45 | Really there is no other fix for this.
| | 07:48 | For my purposes, I happened to also have
a laptop that has a 16:10 screen that I
| | 07:53 | was able to set to 1280x800.
| | 07:57 | And I actually took the screenshot
already on that screen so we are just
| | 08:01 | going to start with that.
| | 08:02 | Now, just so that you know in order to
take your screenshot, there are a couple
| | 08:07 | of things that you want to do.
| | 08:08 | I am going to bring up a
screen with Firefox here.
| | 08:10 | In order to take your screenshot,
once you have your screen set to the
| | 08:15 | right resolution, which this one is not, but
we'll just pretend that it is for a moment here.
| | 08:18 | You notice this little space down here
at the bottom. I don't know if you can
| | 08:21 | see it on yours but it's a space for
your mouse to go to bring up the dock,
| | 08:25 | because I have my dock set to Auto Hide.
| | 08:28 | You will notice that the actual full
screen window of Firefox here doesn't go
| | 08:32 | all the way to the bottom, so
I will have to actually drag that.
| | 08:35 | I am going to grab this corner of it
here and I am going to drag it down so
| | 08:39 | that it actually fills the entire
screen before I take the screenshot.
| | 08:43 | Then there's a couple of more things
you are going to want to do. You are going
| | 08:46 | to want to come in to your System
Preferences and you are going to want to make
| | 08:50 | sure that your menu bar
is not set to translucent.
| | 08:54 | And so, if I go into Desktop &
Screensaver and this checkbox here is actually
| | 08:59 | checked by default, in a default
installation of OS X, from 10.5 on and this is
| | 09:05 | 10.6 and you're probably using 10.6
if you're designing Mac applications.
| | 09:11 | So you are going to want to make sure
that this is unchecked because otherwise
| | 09:13 | watch my menu bar up there at the top.
| | 09:16 | You see it turns blue. That's because I have
a blue background and you don't want that.
| | 09:20 | If you have a pattern or something
it will show up, so you want to have that
| | 09:23 | unchecked, so it's got this
sort of default look to it.
| | 09:25 | And now we are all set.
| | 09:27 | We've got this all set because I brought
that up. And undid what I changed down here.
| | 09:31 | So, we will fill the
screen with the application.
| | 09:33 | And now I am going to press Shift+
Command+3, and when I press Shift+Command+3,
| | 09:38 | it will take a screenshot of the entire screen.
| | 09:42 | So when I bring up the Finder here under
my Desktop, I've got this screenshot here.
| | 09:46 | Now this is actually one that I took on
my laptop and there's another advantage
| | 09:50 | to being using this one and
we will take a look at it.
| | 09:52 | Well, see I am going to drag this
here into my Screenshots folder and we
| | 09:57 | will take a look at it.
| | 09:59 | And here it is from my laptop and this
is 1280x800. It's the correct dimensions
| | 10:04 | and it's that same Firefox screen.
| | 10:07 | You will notice also that I have all of
these other little things up there in my
| | 10:10 | menu bar and I'm going to
want to get rid of those.
| | 10:12 | So, I will show you how to do that as
well when we open this in Photoshop.
| | 10:16 | So, we will quit this and we will go ahead
and open it in Photoshop and there it is.
| | 10:23 | I am just going to Command+A,
Command+C to copy it, and come over here to
| | 10:28 | our 1280x800 screen.
| | 10:30 | I am going to create a little folder
here and I will call this fullscreen.
| | 10:36 | And I am just going to paste and that
pasted into that folder there and now we
| | 10:41 | have our fullscreen
screenshot right there in our image.
| | 10:44 | Let me close some of these others
things that I don't need anymore.
| | 10:48 | And now the first thing we want to do
is we want to get rid of all of the stuff
| | 10:51 | over here because we don't
really want that in our screenshot.
| | 10:56 | So, I am just going to zoom in really
close and I am going to select some of
| | 11:00 | this blank area here and I'm just
going to copy it to cover this up.
| | 11:06 | And when I do this, Photoshop
will create another layer for me.
| | 11:10 | So I am going to copy that and paste it and
then I am going to move the one I pasted over.
| | 11:16 | So I am just going to use this to cover
up these areas and I will paste another
| | 11:20 | one over here. And one
more. And there we have it.
| | 11:30 | So we have covered that up and we now
have just a really nice clean screenshot.
| | 11:38 | I am going to go ahead and I going to
Merge these layers here so that they
| | 11:41 | don't take up so much space here, and
I am just going to call that menubar mask.
| | 11:46 | I'm going to call this one here firefox.
| | 11:49 | And now we are all ready.
| | 11:52 | All I have to do is save this. Command+S
and it's saved, and Save for Web & Devices.
| | 11:59 | The same drills with the other one.
| | 12:01 | I will call this one -firefox
so we know which one it is.
| | 12:06 | Now, I can quit Photoshop and I can
come over here and bring it up and there is
| | 12:12 | our perfect screenshot of
a fullscreen application.
| | 12:16 | The screenshot is an important part of
your online presence in the App Store.
| | 12:20 | This is the first impression for your
customers, so you want it to show your
| | 12:24 | app in its best light.
| | 12:25 | Feel free to be creative, but make sure
it's a good representation of what your
| | 12:29 | app actually looks like.
| | 12:31 | This will help your app get approved
and it will also help a lot with your
| | 12:34 | customer's sense of satisfaction after they buy.
| | Collapse this transcript |
| Generating the certificates and the AppID| 00:00 | In order to submit your app to the App
Store, you need to sign both your app and
| | 00:05 | your installation bundle.
| | 00:06 | This requires two separate signing certificates.
| | 00:09 | So we are going to create those
certificates now. We are going to start by
| | 00:12 | going to the Developer
Certificates utility, which is at
| | 00:16 | developer.apple.com/certificates and
we're going to start by creating certificates.
| | 00:28 | So I am going to click on this
link here, Create Certificates.
| | 00:31 | If I go back here to the overview,
you can also get there by clicking on Mac
| | 00:34 | Certificates here and saying Create
Certificate up here and you get exactly the same thing.
| | 00:40 | You want both the Software Certificate
and an Installer Package Certificate and
| | 00:45 | so this will create both of them.
| | 00:46 | I'm going to click on Create Certificate here.
| | 00:50 | Now it's giving me some instructions.
| | 00:51 | It's telling me to Launch Keychain
Access to generate the certificate requests.
| | 00:57 | This is called a CSR and that stands
for Certificate Signing Request and we do
| | 01:03 | this through the Keychain
application here on the Mac.
| | 01:07 | So the easy way to do this is
to use Spotlight to find it.
| | 01:09 | So I am going to press Command+Space
and I am going to type keychain and
| | 01:13 | there it is, it comes right up there,
and I am going to click on that and here
| | 01:17 | is my Keychain Access.
| | 01:19 | Now up here in the Keychain Access menu,
you'll see that there is Certificate
| | 01:24 | Assistant and I am going to say
Request a Certificate From a Certificate
| | 01:28 | Authority, because that's
what we're actually doing.
| | 01:30 | We're requesting the certificate
authority, which is the Apple Developer
| | 01:35 | Certificate utility to generate
a certificate and give it to us.
| | 01:38 | So we need to generate a request and sign
that request and give it the signing key.
| | 01:45 | So that's what we're going to do here.
| | 01:46 | So I am going to enter my email
address here and under Common Name, this is
| | 01:53 | where you put the name of the key.
| | 01:54 | So I am going to call this Apple
Developer Key and nothing needs to go here in
| | 02:02 | the Certificate Authority Email Address.
And I am going to say Save to Disk and Continue.
| | 02:09 | It's asking me where to put it.
| | 02:10 | I am just going to put it
on the Desktop here for now.
| | 02:15 | So the certificate request has been
created on disk. We are going to want to find it.
| | 02:19 | So I am going to click on Show in
Finder and there it is on our Desktop and now
| | 02:23 | we can go back here to the
web browser and Continue.
| | 02:28 | Now we are going to browse for the
certificate request and I happen to know it's
| | 02:32 | on my Desktop and there is the
Certificate Signing Request, the CSR, and I am
| | 02:38 | going to say Open and Generate.
| | 02:40 | This will generate the certificate.
| | 02:44 | This is the Application Certificate.
| | 02:47 | So I am going to press Continue and I
am going to go ahead and download that,
| | 02:51 | mac_app_identity.cer.
| | 02:54 | I am going to save it and there it is.
Show in Finder. It's in my Downloads folder
| | 03:01 | and I am just going to double-click on
that because that will install it in the
| | 03:06 | Keychain Access and it's this one
right here, 3rd Party Mac Developer
| | 03:14 | Application Certificate.
| | 03:17 | Now we go back to the web browser and
we click Continue and now we are going to
| | 03:22 | generate the certificate for the installer.
| | 03:24 | I am going to go back to Keychain
Access, which is right there, and I'm going to
| | 03:29 | generate another CSR. Certificate
Assistant > Request a Certificate From
| | 03:34 | Certificate Authority and put in my
email address again, and this is the app
| | 03:40 | signing certificate.
| | 03:41 | So this will be the Mac Installer Key
and I am going to Save to Disk and I'll go
| | 03:52 | ahead and save this over the other one.
| | 03:56 | We know where that is and so we'll
press Continue and it's on the Desktop
| | 04:02 | and I'll say Generate and press
Continue and I am going to download this one.
| | 04:10 | Mac Installer Identity.
| | 04:11 | Save and Show in Finder, double-click on
that, and that installs it in my keychain.
| | 04:24 | So now I have the Developer Application
Certificate and the Developer Installer
| | 04:28 | Certificate, both of them
installed in Keychain Access.
| | 04:31 | So just want to show you something else here.
| | 04:33 | If we go down here to My Certificates
in Keychain Access, you'll see that you
| | 04:37 | have your two certificates.
| | 04:39 | If you ever want to do your development
on another machine, you'll need both the
| | 04:43 | certificate and the signing key.
| | 04:44 | So if you press this little expander
arrow there, you'll see that you get a key
| | 04:50 | for both of them, the Apple
Developer Key and the Mac Installer Key.
| | 04:53 | That's just what I named them and I
can see that I named them a little bit
| | 04:55 | inconsistently there.
| | 04:56 | But it's okay. They are in the Keychain
Access and they are associated in this
| | 05:00 | way under the My Certificates
tab over here in Categories.
| | 05:05 | So what you'll want to do, you can
download the certificate from the Apple
| | 05:09 | web site and install it in your Keychain
on your other machine, but you are going
| | 05:13 | to need to export this developer key here.
| | 05:16 | So you right-click on that and you
click on Export Apple Developer Key and
| | 05:21 | you name it something intelligent and put
it some place where you'll know where it is.
| | 05:25 | Then all you have to do is copy that
file over to your other Mac where you
| | 05:30 | are going to do development and just
double-click on it and it will install it
| | 05:33 | in your Keychain Access, just the way that
we did with the certificates on this machine.
| | 05:37 | So we've generated our
keys and our certificates.
| | 05:41 | I am going to quit Keychain Access here,
I am pressing Command+Q, and I am going
| | 05:45 | to quit these Finder windows
there and my Download window.
| | 05:49 | Now we are right back here and I say
Done and there we have our certificates now
| | 05:54 | in our Certificates tab over
here on the left-hand side.
| | 05:57 | So when I click on Mac Certificates,
you see we have these two certificates.
| | 06:03 | You can download them again if you
lose them or put them on another Mac.
| | 06:07 | And now it will work just fine.
| | 06:08 | Now one other thing what you need
to do while we're here and it's not
| | 06:11 | technically your certificate and I
guess needed some place to put it.
| | 06:15 | So they put it here in the Certificate
Utility, is we need to generate our App ID.
| | 06:20 | The App ID is a unique identifier for your
application and it's used for a lot of purposes.
| | 06:25 | It's used to identify your application on your Mac.
| | 06:28 | It's used for things like the
Finder to associate file types.
| | 06:31 | It's used for Spotlight and it's also
used by the App Store to identify your
| | 06:36 | app on the App Store.
| | 06:37 | You want to create an App
ID and it has to be unique.
| | 06:40 | It has to actually be unique
all across the entire world.
| | 06:44 | Nobody else will have exactly the same
App ID. And the way that you do this is
| | 06:49 | by putting it in what they call reverse-
domain name style or reverse-domain notation.
| | 06:56 | So first I am going to give it a
description here and this is just a name for
| | 07:00 | the App ID. It's not the name of the app.
| | 07:02 | Now I am going call this BW Demo App
and then the App ID it's also called
| | 07:09 | the Bundle Identifier.
| | 07:11 | I am going to say com.bearnet. This is
my domain. You are going to want to use
| | 07:16 | your own domain for this.
| | 07:17 | So if your domain is example.com,
you would say com.example.
| | 07:22 | I am using a domain name
that I use for things like this,
| | 07:27 | com.bearnet.bwdemo2011.
| | 07:32 | That will be the bundle identifier and
I am going to put that in the info.plist.
| | 07:37 | Later on in the course when we talk
about the info.plist, this will identify
| | 07:42 | this application uniquely, a worldwide unique.
| | 07:46 | So I scroll down here and
say Continue and confirm.
| | 07:51 | You want to confirm this because
you'll not be able to edit this.
| | 07:56 | You can delete it but you cannot edit.
| | 07:58 | You are not going to be able to change it.
| | 07:59 | This is going to identify your application.
| | 08:01 | So I'll also save and
there we now have an App ID.
| | 08:04 | Later on when we go to iTunes Connect
and we want to identify the App for the
| | 08:08 | App Store. You'll see it will
actually show up in a little drop down box to
| | 08:12 | allow us to select this App ID, which is
also called a bundle identifier for that
| | 08:17 | App that we are going to submit to the store.
| | 08:19 | So now we've generated the signing
certificates. We've generated the App
| | 08:23 | ID bundle identifier.
| | 08:25 | These are important parts of the
security chain for your application.
| | 08:28 | The certificates give the customer
confidence that the apps they are installing
| | 08:32 | are genuine and it also helps to keep
your paid apps from being shared with
| | 08:36 | users who have not paid for them.
| | 08:38 | Either way, these certificates are
required by Apple for your app to be
| | 08:41 | included in the App Store.
| | Collapse this transcript |
|
|
2. Preparing the BundleUnderstanding the application bundle| 00:00 | The Mac apps store approval
guidelines require that all of your
| | 00:03 | application resources reside within
the application bundle, installed in
| | 00:07 | the user's application folder.
| | 00:10 | So this begs the question, what
exactly is an application bundle?
| | 00:15 | An application bundle is a
container for your application.
| | 00:20 | The application bundle is
specifically designed to contain all the files
| | 00:23 | necessary to run your application.
| | 00:27 | It's actually a self-contained file
system that contains directories and files,
| | 00:32 | just like the file system on your computer.
| | 00:35 | The files contained in the bundle
include the executable application,
| | 00:39 | configuration files, images,
datasets, and other assets.
| | 00:43 | XIB files, which is spelled XIB, but
pronounced NIB, because these are actually
| | 00:50 | XML versions of older file types
that were actually spelled NIB.
| | 00:55 | These XIB files are the
configuration files for screen layouts.
| | 00:59 | They're created in Interface Builder and
they are loaded a run time by the application.
| | 01:04 | Other assets include Icon files in a Mac App
these are generally in the Mac ICNS format.
| | 01:10 | Other image files may be
loaded by the upper runtime.
| | 01:13 | data files were also included in here.
| | 01:16 | In the Info.plist files is a special
that's like an inventory of all the
| | 01:21 | files in the bundle, and the general
configuration file for load time for the application.
| | 01:27 | Let's take a look real quick at the
application bundle and how it's setup from within Xcode.
| | 01:32 | So we're in the Chapter2 folder and
under BWDemo-start you'll see these are the
| | 01:39 | files as they are in Xcode, but once
Xcode compiles your program, it builds a bundle
| | 01:46 | and so under Build and under
Debug, you'll see this BWDemo.app.
| | 01:52 | Like any application file,
it has his .app extension.
| | 01:55 | So it looks like a normal file, but if
you right-click on it or Ctrl+Click on it,
| | 01:59 | you'll notice that you get
something here that says Show Package Contents.
| | 02:04 | So I'll click on that and here we
have a Contents folder and we have all of
| | 02:09 | these other things.
There is the Info.plist file.
| | 02:13 | Under Mac OS we have the actual
executable of the application. Package Info
| | 02:19 | Resources, which include your credits,
your strings, and these actual XIB files
| | 02:25 | which have the NIB extension.
| | 02:26 | So these are the compiled
versions of the XML XIB files.
| | 02:31 | So those are the contents
of your application bundle.
| | 02:35 | You can actually look inside the bundle
of any application that you find in the
| | 02:38 | Applications directory, just by right
clicking on the .app file and selecting
| | 02:43 | Show the Bundle Contents.
| | 02:45 | So the application bundle gets
installed on your users machine. I's the result
| | 02:50 | of your work. It's your product.
Understanding what it is and how it works is an
| | 02:54 | important part of learning to
distribute Mac OS X applications.
| | Collapse this transcript |
| Signing the app with Xcode 3| 00:00 | In order to distribute your app in the
App Store it must be signed. Oce you
| | 00:04 | have your app certificate,
this part is relatively easy.
| | 00:07 | So we're going to start by making a
working copy of our application directory.
| | 00:10 | So this is the BWDemo-start directory
and I'm just going to make a working copy
| | 00:15 | of this entire directory. This has
our project in it, our Xcode project.
| | 00:19 | So I'm going to drag the directory
with my mouse. I'm going to hold down the
| | 00:24 | Option key, so it's like a Option-drag
and that creates a working copy in Mac OS
| | 00:29 | X and I'm just going to rename this working.
| | 00:33 | In that way, if I want to do this
exercise again or whatever, I've still got the
| | 00:39 | unchanged original one there. If for
some reason I want to revert, there it is.
| | 00:43 | So I'm going to open up the application
in Xcode by double-clicking on the Xcode project
| | 00:48 | and here's the application in
Xcode, and I'm going to select the root of
| | 00:53 | the tree here on the left-hand side
under Groups & Files and I'm going to press
| | 00:58 | Command+I, which brings up the
configurations, and then up here in the Tab,
| | 01:04 | you have all these different
configuration options here.
| | 01:07 | I'm going to go under Build and for
configuration I'm going to select Release.
| | 01:13 | So I'm working on the Release
configuration, because what we want to do is you
| | 01:16 | want to sign the application for
when we actually build it for release.
| | 01:22 | So there's a few things here we want
to check. Under Architectures we want
| | 01:25 | to make sure that it says 32/64 bit
Universal. So that's the one that we
| | 01:30 | want to select there. Base SDK is okay.
| | 01:34 | Valid Architectures, this
actually defaults to the wrong thing.
| | 01:39 | The Apps store will never support
PowerPC processors. The App store is really
| | 01:44 | only available on OS X 10.6.6 and
later, and so that will never support
| | 01:50 | PowerPC architecture.
| | 01:52 | So we want to change this for Valid
Architectures, and it's only going to
| | 01:56 | have the i386 and the X86_64, so it's the 32
and 64 bit versions of the Intel processors.
| | 02:05 | So I double-click on that and I bring
this up and for PowerPC I say minus.
| | 02:11 | I'll click on little minus sign for all
of these until this list only has these
| | 02:16 | two architectures, the i386 and the x86_64.
| | 02:22 | I say OK and now under Valid
Architectures it just has those two
| | 02:27 | architectures listed.
| | 02:29 | Next, we want to come down here and
configure the Debug Information Format.
| | 02:32 | This is also required for submitting to
the App Store. You want to select the
| | 02:36 | one that's a DWARF with dSYM file, and
you need make sure that that's selected
| | 02:41 | for the App Store.
| | 02:42 | Then finally scrolling down under Code
Signing, you want to select your Code
| | 02:47 | Signing Identity and this is the only
one here that's got the little drop-down
| | 02:51 | indicator there, and you want to select
your certificate that you installed in
| | 02:55 | the last chapter and this is your
Developer Application Certificate.
| | 03:00 | It won't even list the Installer
Certificate because that's not valid in this
| | 03:03 | context, and this will sign your
application with this certificate.
| | 03:09 | So I can close this now and I'm going
to press Command+S to save my project,
| | 03:14 | which probably won't do anything, but I
want to build it and test it and so I'm
| | 03:18 | going to select up here, from my
Active Configuration, I'm going to select
| | 03:21 | Release, and I'm going to press Command+
B, which is under the Build menu and it
| | 03:28 | Builds, but we can go ahead and select
it up here. Command+B builds and as see
| | 03:32 | down at the bottom, it's pre-compiling
and building, and now we get this little
| | 03:37 | dialog that says codesign wants to
sign using key "Apple Developer Key" in
| | 03:41 | your keychain and you
want to select Always Allow.
| | 03:44 | If you select the Details here, you
can get a little bit of details about it.
| | 03:48 | Not much, but you want to select
Always Allow and so that every time you
| | 03:52 | compile it doesn't have to
ask you this question again.
| | 03:55 | So I'm going say Always Allow and
it says down at the bottom there,
| | 03:58 | it says Build Succeeded.
| | 04:00 | So now I can run it and I'm going to
press Command+R and you'll see a lot
| | 04:05 | of options up here.
| | 04:06 | It's just the run like this, but
Command+R also does the same thing.
| | 04:10 | There is our simple little
application that says nothing here, this page
| | 04:13 | intentionally left blank.
| | 04:16 | So now you have signed your app and
I'll go ahead and quit that and I'm going
| | 04:20 | to quit Xcode. So now you signed
your app with your Installed Developer
| | 04:25 | Certificate and you're ready to put
the rest of your app bundle together, to
| | 04:28 | submit to the App Store.
| | Collapse this transcript |
| Signing the app with Xcode 4| 00:00 | In order to distribute your app
in the App Store it must be signed.
| | 00:04 | Once you have your app
certificate, this part is relatively easy.
| | 00:08 | In this movie I'll show you how
to sign your app using Xcode 4.
| | 00:12 | The process is somewhat
different from the process with Xcode 3.
| | 00:15 | So we'll start by making a working copy
of BWDemo-start in the Chapter 2 folder
| | 00:22 | of our exercise files.
| | 00:24 | And I'm just going to go ahead
and rename that to BWDemo-working.
| | 00:28 | And I'm going to open the Xcode
project file out of that project folder.
| | 00:34 | So this loads up the project in Xcode 4.
| | 00:37 | Over here in the Navigator I'm just
going to select the project itself and
| | 00:42 | that'll bring up the Project Editor.
| | 00:44 | Now the first thing I want to do is
set the bundle identifier and I should be
| | 00:48 | able to edit it right here, but the
problem is because part of it is being
| | 00:51 | filled in automatically it
actually doesn't let me edit that.
| | 00:56 | It'll let me edit this part on the left,
if we want to get technical, but it's
| | 01:00 | not letting me edit the whole thing.
| | 01:01 | So I need to edit it in the info.plist file,
which is conveniently right here in the second tab.
| | 01:08 | And right over here, see the part
that's filled in by a variable there, that's
| | 01:12 | what's preventing it from
being edited in the Summary pane.
| | 01:15 | So I'm just going to type
in my bundle identifier.
| | 01:17 | Your bundle identifier will be different.
| | 01:19 | Doo not use my bundle identifier.
| | 01:22 | com.bearnet.bwdemo2011.
| | 01:27 | And now when I come back over here to
the Summary pane, you see it is not grayed
| | 01:30 | out and I could actually edit it if I wanted to.
| | 01:33 | I want to set the Application Category.
| | 01:36 | Now both of these things are going to
be covered in a later movie and actually
| | 01:41 | the later movie will show you how
to set these things up in Xcode 3.
| | 01:45 | But we're doing it here so that you
can see how to do it in Xcode 4 and then
| | 01:48 | those things will already be done when
you get to that part in the later movie.
| | 01:52 | Our Deployment Target defaults to
10.6 so we don't need to change that.
| | 01:57 | And now this pane is done.
| | 02:00 | Now we will come over to the Build Settings
tab and we're going to check a few things.
| | 02:04 | The defaults are now more correct than
they were in Xcode 3 because Xcode 4 is
| | 02:10 | designed for actually
submitting things to the Mac App Store.
| | 02:12 | Xcode 3 was was designed long before
that and with different defaults that
| | 02:17 | worked for universal applications
that would run with PowerPC processors
| | 02:21 | and things like that.
| | 02:22 | None of that is necessary
anymore with the App Store.
| | 02:25 | The App Store is only for
Intel architecture Macs.
| | 02:28 | So things like Architecture is
going to be set to 32/64-bit Intel, and
| | 02:32 | that's exactly correct.
| | 02:34 | The Base SDK is Mac OS X 10.6.
| | 02:38 | The Valid Architectures
are just i386 and x86_64.
| | 02:44 | And so these things are fine with the
defaults from Xcode 4 and the for Xcode 3
| | 02:50 | were wrong and needed to be updated.
| | 02:52 | Now scrolling down here to the Build Options,
again this default is correct in Xcode 4.
| | 02:59 | DWARF with dSYM File for
the Release Configuration.
| | 03:03 | And scrolling down farther to Code Signing,
now we're actually going to sign the app.
| | 03:08 | So here in this column here, which is
the target-- this column is the project,
| | 03:13 | this column is the Mac OS default,
ad this is what it resolves to.
| | 03:17 | In the actual target column we want
to come down here and click under Code
| | 03:21 | Signing Identity and I'm just going
to select my code signing signature.
| | 03:26 | And that part is done.
| | 03:29 | So now we're just going to-- let's see
and make sure that my scheme is correct.
| | 03:33 | And it is and I'm just going
to press Command+B to build.
| | 03:38 | It wants to use my private key in my Keychain.
| | 03:41 | I would normally select Always Allow,
but this isn't actually my computer so I'm
| | 03:45 | just going to say Allow.
| | 03:46 | And the build succeeded.
| | 03:49 | So now you've signed your app with
your installed developer certificate and
| | 03:53 | you're ready to put the rest of your
app bundle together to submit it to the
| | 03:57 | App Store.
| | Collapse this transcript |
| Setting up the info.plist file | 00:00 | Apple refers to the Info.plist
file as meta information for the
| | 00:04 | application bundle.
| | 00:05 | You can think of it like a
master configuration file.
| | 00:08 | It's the starting point for the
system to look for vital files and
| | 00:12 | information in your bundle.
| | 00:15 | We're going to start by making a
working copy of what we finished in movie
| | 00:19 | number two in this chapter and so
I am going to drag this, holding down the
| | 00:23 | Option key and make a working copy of it.
| | 00:26 | I'm going to rename it and I'm
going to say BWDemo-03-working.
| | 00:31 | Then you'll notice inside this folder,
there's a file called BWDemo-Info.plist
| | 00:37 | and that's our info.plist file.
| | 00:40 | So let's go ahead and open Xcode by
double-clicking on the Xcode project file here.
| | 00:46 | We will look down inside our
Resources folder and we'll see the file right here,
| | 00:51 | BWDemo-Info.plist, and when I
select that it's going to come up here in the
| | 00:57 | little editor and this is a
special editor for plist files.
| | 01:02 | In fact, if we were to go back to our
Finder and just double-click on that plist file,
| | 01:08 | it will open this Property
List Editor and that's actually the same
| | 01:13 | application that's running
in that window down there.
| | 01:17 | So coming back into Xcode we can see
these are the default things that are in
| | 01:22 | the info.plist and we are going to need to
update it and change a few things in there.
| | 01:27 | The plist file itself is in XML.
| | 01:30 | If I look at this in the Finder and
open it in a text editor, I am going to
| | 01:33 | right-click on it here and I'm going to
select BBEdit, which is just a plain text editor.
| | 01:39 | You can see that the file itself is just XML.
| | 01:44 | In fact, if you wanted to edit it this
way, it would work. It's just a whole lot
| | 01:49 | more complicated to edit this way.
| | 01:51 | So the Property List Editor is a great
way to work with these files and that
| | 01:56 | comes up right here in
Xcode and its editor window.
| | 02:00 | So on the left-hand side you have
Keys and on the right hand side you have
| | 02:03 | Values and there is a number of keys available.
| | 02:06 | This is just a very small
subset of what's available.
| | 02:09 | This is what's installed by default
when you create a project in Xcode for the Mac,
| | 02:14 | but there's actually a
whole lot more stuff available.
| | 02:18 | You can find documentation for
that on the Developer web site.
| | 02:22 | I am going to bring up Firefox here
and here's the Mac Dev Center and I am
| | 02:26 | all logged in already.
| | 02:28 | If I put into the Search field here and I
type "information property list key reference,"
| | 02:38 | you see here this first one here,
Information Property List Key Reference.
| | 02:41 | That's the document we're looking for,
and this has all kinds of information.
| | 02:45 | You can download the PDF. It's about 60-70
pages and it's got kinds of information.
| | 02:50 | If you look here under the Core
Foundation Keys, here is the main keys that you
| | 02:55 | might find yourself using in a Mac OS X App.
| | 02:59 | So you have the key name, which is
actually the name in the XML file, and then you
| | 03:02 | have the Xcode name.
| | 03:04 | This is what it displays
here in Xcode in this editor.
| | 03:08 | So there is the documentation for it
and you can find all kinds of things that
| | 03:12 | you can do with it and oftentimes
instructions that you'll get for using
| | 03:16 | different facilities, different
features in OS X, will instruct you to put in
| | 03:21 | certain keys in your info.plist file.
| | 03:25 | In fact, we are going to do one of them today.
| | 03:27 | So the first thing we are going to do
is we are going to come down here to
| | 03:29 | Bundle identifier and if I select
Bundle identifier in the left, if I click on
| | 03:33 | it again it will let me
edit in and I don't want that.
| | 03:35 | If I click on this little arrow thing,
it will give me all kinds of choices
| | 03:38 | and I don't want that.
| | 03:39 | So I am just pressing Escape to get out of that.
| | 03:41 | What I want to do is I want to select
this and then press Tab and when I press Tab
| | 03:45 | it will actually allow me to edit the value.
| | 03:48 | That's what it is that
you want to be able to do.
| | 03:50 | Here's where we put our bundle
identifier, which is the same as our App ID that
| | 03:55 | we entered in the Developer
Certificate utility in an earlier movie.
| | 03:59 | So I am going to type com.bearnet and this is
mine. Yours will be different and bwdemo2011.
| | 04:07 | This identifier has to be completely
unique worldwide, which means that you
| | 04:12 | want to use your domain, and so I hit
Enter and it took me to next field, which
| | 04:17 | is what it will do.
| | 04:18 | This editor is not easy to use but it does work.
| | 04:22 | So this is in a reverse-domain notation.
| | 04:25 | So if your domain were
example.com, you would say com.example. and
| | 04:30 | the name of your app and
that would make it unique worldwide.
| | 04:33 | This is actually registered in the
developers website. It's going to be used
| | 04:38 | for a lot of different purposes, including
identifying your app in iTunes in the App Store.
| | 04:45 | So you want to make sure that it's
unique. Do not use my identifier, do not
| | 04:49 | use my domain name.
| | 04:50 | The next thing we are going to do here
is we're going to import our icon files
| | 04:53 | so that we can use our icons.
| | 04:55 | So I am going to switch back here to
the Finder and come into our Icons folder
| | 05:00 | and there is our icon file right there.
| | 05:03 | I am just going to take that icon file
and I am going to drag it over here into
| | 05:08 | Resources and when I let go, I will get
this little dialog box that says, it gives
| | 05:12 | me the option to copy the items
into the group's folder if needed.
| | 05:16 | It's really important that you check that box.
| | 05:18 | You want to make a copy of it. You
don't want it to just reference the file
| | 05:22 | outside in your source directory tree,
because then it's not going to be part of
| | 05:26 | the bundle and if you were to actually
delete that file or move that file you
| | 05:32 | would have trouble building your application.
| | 05:34 | So you want to copy the items in and
we'll click Add and there we have our icon
| | 05:39 | file now in our Resources, and it's
BWDemo.icns and we are here under Icon file,
| | 05:45 | I am going to type that in. BWDemo.icns
and I pressed Command+S when I was done typing.
| | 05:53 | That will put our icon into the bundle.
| | 05:55 | We see the purpose here of the
info.plist is to configure the bundle and so now
| | 06:00 | it knows where your icon
file is inside of the bundle.
| | 06:04 | Finally, one other thing we're going to
do here, we're going to create a new key
| | 06:07 | and this is a key that's not actually in
its dictionary and so when we create it
| | 06:12 | it's not going to give us a human readable name.
| | 06:14 | It's a new key and I am going to start
by showing you the documentation for this
| | 06:18 | on the developer web site.
| | 06:20 | So I am just going to ahead and
I am going to type in an address.
| | 06:22 | You need to be logged in to
be able to see this web page.
| | 06:25 | It's developer.apple.com/devcenter
/mac/documents/submitting.html, like that.
| | 06:41 | This is the general instructions on
submitting to the Mac App Store and if you
| | 06:46 | come down here and click on
Categorizing Your Application, you see these
| | 06:50 | instructions for adding the
LSApplicationCategoryType key at the root level of
| | 06:55 | your info.plist file.
| | 06:57 | So I am going to double-click on
this and press Command+C and that way I
| | 07:00 | can copy and paste and I'll be sure to spell
it correctly, because that's really important.
| | 07:05 | I am going to come back over here to
Xcode and I'm going to click on this
| | 07:11 | little symbol over there which turns
it into a plus and gives me a place to
| | 07:14 | enter a new property list key, and I am
going to press Command+V and paste that
| | 07:20 | in and press the Tab key.
| | 07:23 | That gives me a place
where I can enter the values.
| | 07:26 | So I've got the key, LSApplicationCategoryType.
| | 07:29 | Now, this is actually used by the App
Store to categorize your application
| | 07:35 | and this is required.
| | 07:37 | So I am going to come down here and I am
going to find the one that says Utilities.
| | 07:41 | This is the key that I am
going to use for Utilities.
| | 07:43 | It's public.app-category.utilities and
I am going to press Command+C. I am going
| | 07:49 | to come back over here to Xcode and
paste that in and press Command+S to Save.
| | 07:54 | So now we've added our category type.
| | 07:58 | Now that we've filled in all the
things that are required in our Info.plist file,
| | 08:02 | we just want to run it and
test it and I'd like to also take this
| | 08:05 | opportunity to show the icon in action.
| | 08:08 | Because this is the first time we've
actually incorporated the icon into our app.
| | 08:12 | I am just going to press Command+S to
save and I've already saved, so it will beep
| | 08:16 | that me and Command+B to Build and
it wants to save before building.
| | 08:21 | This is actually a quirk of Xcode.
| | 08:23 | When you press Command+S and what you
have open is the Info.plist file, because
| | 08:29 | the editor is this separate plist
editor, it doesn't actually pass that save
| | 08:34 | back onto the rest of the document
and yet you've changed your bundle by
| | 08:39 | editing the plist file.
| | 08:40 | So, it's always going to do this.
When you change the plist file and when you
| | 08:44 | press Command+S and then you press
Command+B to build, it's always going to ask
| | 08:47 | if you want to save before building
and I just press Enter to save all.
| | 08:51 | Now here it is Building, Compiling, Building,
Build succeed it, and Command+R to run it.
| | 08:56 | So now we have our application and
our application is actually running.
| | 09:01 | If I press the Command+Tab key,
you see there is our icon.
| | 09:05 | So I am going to press
Command+Q to get out of this.
| | 09:07 | That tells us that the plist file
got edited and that particular entry is
| | 09:13 | actually working. That's
the icon file entry there.
| | 09:16 | So that's all that we need to do.
That's all that's required of us for
| | 09:20 | the Info.plist file.
| | 09:21 | Of course, you may have other things you
need to do depending on your application.
| | 09:25 | The Info.plist file is a key
component of the application bundle.
| | 09:29 | We've covered the basic parts required
for submitting your app to the App Store,
| | 09:33 | and for more details, of course, about
its many uses you can use the Information
| | 09:38 | Property List Key Reference document
that you saw at the beginning of this movie
| | 09:42 | and it's available in the Developer portal.
| | Collapse this transcript |
| Creating and testing the installer| 00:00 | The application installer is a key
piece of the process of submitting your
| | 00:04 | application to the App store.
| | 00:06 | It's really a very simple piece and
Xcode will take care of creating it for you.
| | 00:11 | So we'll start by making a working copy
of BWDemo-03-done,. You can of course use
| | 00:16 | the results from your last
chapter if you've been following along.
| | 00:20 | I will call this BWDemo-04-working.
| | 00:25 | We'll go ahead and open our Xcode
project in Xcode and the first thing I'm
| | 00:30 | going to do, I am going to select this
node at the top of the tree there and I'm
| | 00:34 | going to press Command+I and I am
going to confirm our Build settings.
| | 00:38 | So we want to have Build selected
up here and we want to have Release
| | 00:40 | selected in the Configuration, and
confirm that our Architecture is set to
| | 00:46 | 32/64-bit Universal, our Valid
Architectures has no PowerPC in it, just the
| | 00:52 | i386 and the x86_64.
| | 00:56 | Our Debug Information is DWARF with
dSYM File and we are signing our project
| | 01:01 | with the correct code signing certificate.
| | 01:05 | So confirm that all that's correct,
and then we will come down here and
| | 01:08 | check that it builds. I am going to
Run a Clean first and make sure that
| | 01:12 | it's all clean. And I build.
| | 01:15 | Press Command+B to build
and it builds successfully.
| | 01:19 | So that's all very good.
| | 01:21 | Now we will create the installer.
| | 01:24 | To create the installer all you can do
is you come up here and you select Build
| | 01:27 | and Archive, and there we have it.
| | 01:30 | It created the installer and
it's opened up the Organizer for us.
| | 01:34 | If it doesn't open up the Organizer
for you automatically, you can just go up
| | 01:37 | here to Window and Organizer and open
up the Organizer yourself, and you will
| | 01:42 | see that we have here an Achieved Applications.
| | 01:44 | There is our application BWDemo, there
is our small icon, there is our big icon.
| | 01:49 | There is the date and time so we can
confirm that this is the one that we just
| | 01:53 | built. And now click on Share.
| | 01:57 | When you click on Share, it's going to
offer to sign the application. You need
| | 02:01 | to sign the application with the
Installer Certificate and it shouldn't offer
| | 02:06 | you any of the other ones.
Just the Installer Certificate.
| | 02:09 | I am going to say Save to Disk here
and it may come up and ask you for
| | 02:13 | permission to use the key out of your
keychain. Just say go ahead and give it
| | 02:17 | that permission all the time, and I am
going to save this one the desktop.
| | 02:21 | You want to save at some place where you
remember where it is. I am just using the
| | 02:25 | Desktop for our purposes here for our tutorial.
| | 02:29 | And I'll just type BWDemo for the name.
I don't need to type .package. It will
| | 02:34 | add that itself, so don't add any extension
to this. And I will click Save and we are done.
| | 02:40 | We have built our installer.
| | 02:42 | So I will close this and open up the
Finder and go to the Desktop and we can see
| | 02:48 | there is the BWDemo.pkg. That's the installer.
| | 02:52 | So our next step is to test the
installer and you don't want to just
| | 02:56 | double-click on the installer because
that's not the way that it's going to be
| | 02:59 | run when people download
your app from the App Store.
| | 03:03 | The App Store is going to run it for
you and it runs it differently then you
| | 03:06 | would just by double-clicking on it.
| | 03:08 | For one thing the App Store is running
is the system root and it installs things
| | 03:13 | in the root of your file system.
| | 03:15 | On a Mac, in Mac OS X there are actually
two different applications directories.
| | 03:20 | One is for individual users, so it
would be the one off of my user directory in
| | 03:26 | the Applications folder.
| | 03:27 | And the other one is for the entire
system. That's the one off of your hard
| | 03:31 | disk in that Applications directory,
and that's where this is actually going to
| | 03:36 | get installed, because that's the
way that the App Store does it.
| | 03:40 | So in order to test it we need to run
Terminal and test it from the command line.
| | 03:45 | So I am going to press Command+Space
and I am going type in terminal. And this
| | 03:52 | is opening up kind of big here to set
up for a larger screen. And I am going to
| | 03:56 | navigate to my Desktop and type
ls and there is our demo package.
| | 04:02 | Now, I am going to run the installer
here and it's going to do it wrong and
| | 04:06 | I am doing this on purpose, because no doubt
you're going to run into this error at some point.
| | 04:12 | The problem is, is that the way the
installer works is it will go first and
| | 04:18 | look for any instances of the app that
it finds in your file system and it will
| | 04:23 | update that instance rather than installing
a fresh one in the Applications directory.
| | 04:27 | If it finds it anywhere already on your
hard disk, it will just update it instead
| | 04:31 | of installing it clean.
| | 04:33 | And there are actually several
instances of this already on the hard disk.
| | 04:38 | So it's going to pick one and update
it and that's not what we want it to do.
| | 04:41 | But I want to show you what that looks
like before we go and fix the problem.
| | 04:44 | So I am going to type sudo.
That runs a command as root and that's
| | 04:49 | important because that's the way the
App Store is going to be running it
| | 04:53 | for the installation.
| | 04:54 | And I will type installer, which is a
system command that installs packages;
| | 05:00 | -store, so it's going to run in the
store mode; -pkg, to give it the name of the
| | 05:05 | package, which is right here, it's
BWDemo.pkg; and -target and a slash for
| | 05:13 | the root of the file system.
| | 05:15 | So that sudo installer-store-package,
the name of the package, -target and a
| | 05:24 | single forward slash.
| | 05:25 | So we will go ahead and run this and
it's going to ask for my password because
| | 05:31 | sudo is running as the root and it
might also give you some long instructions.
| | 05:36 | It's not giving me that because
it gave it to me a few minutes ago.
| | 05:38 | So it's going to ask you a
password and there might also be some long
| | 05:41 | instructions before it.
| | 05:42 | Just type in your password and you have
to have an administrator account, which
| | 05:47 | you probably do, and there we go.
| | 05:50 | Now you will notice here that it says
Bundle com.bearnet.bwdemo2011, that's our
| | 05:56 | bundle identifier, will be
relocated to /Users bw blah, blah, blah,
| | 06:01 | Library/Application Support,
Shared Applications, blah, blah, blah.
| | 06:06 | It's finding another instance of the
application and it's updating that instead
| | 06:11 | of installing it fresh.
| | 06:12 | So this is a problem.
| | 06:14 | I would hope that they fix this in
future versions of Xcode and they find a way
| | 06:18 | to allow us to test it without going
through all this rigmarole, but for now we
| | 06:21 | got to go through some rigmarole.
| | 06:23 | We have to delete all the
instances of BWDemo app.
| | 06:27 | So I am going to show you how to do that.
| | 06:28 | There are some few
different things we need to do.
| | 06:30 | First, we are going to go into the
Organizer and we are going to delete this one.
| | 06:33 | This is the one that we just
created when we created the bundle.
| | 06:37 | It had to first build the application
before it could create the installer
| | 06:41 | package and we need to get rid of that.
| | 06:43 | So I am going to press the Delete
key on my keyboard and go ahead and
| | 06:47 | select Move to Trash.
| | 06:48 | Now that one is gone.
| | 06:49 | I can close the Organizer.
| | 06:52 | The other one is actually right here.
| | 06:54 | If I come out here to the
Finder and we go over here to our
| | 06:58 | ExerciseFiles/Chap02, this is our
project and I go under build and Release,
| | 07:04 | you'll see that there is one there
because at some point I built it for the Release.
| | 07:09 | There might have been one under Debug
also, but I haven't done that recently.
| | 07:13 | So this needs to get deleted also.
| | 07:15 | The easy way to do that is from Xcode.
| | 07:19 | I just come over here and I go to Build
and I say Clean All Targets and select Clean.
| | 07:25 | Now we will come out here and we will see that
| | 07:26 | that's gone and that one if
there was one will be gone too.
| | 07:31 | Finally, we've got some other instances here.
| | 07:34 | That doesn't have any. This one does.
| | 07:36 | I am just going to
delete those with my keyboard.
| | 07:39 | So it's under the Package directory,
under build, and you check in the Debug
| | 07:44 | and Release folders.
| | 07:45 | If you find it, you select them both
and I will just press Command+Delete and
| | 07:49 | that will send those to the trash.
| | 07:51 | So I am just going to look real quick
and make sure I don't have any others.
| | 07:54 | Because we've been building this over
and over in different directories as we go
| | 07:59 | through our tutorial here,
you might find several.
| | 08:02 | You just need to look from all. And none there.
| | 08:08 | I am going to go back to Chap01.
| | 08:10 | Okay, we've seemed to have gotten them all.
| | 08:12 | Now when I come back over here and I am
just going to pressing the Up arrow and
| | 08:16 | run this command again. You will see it
says Bundle com.bearnet.bwdemo2011 will
| | 08:24 | be installed to Applications and
that's exactly where we want it installed.
| | 08:28 | So now if I come back over here to my
Finder and I select Applications, I will
| | 08:33 | find the app right here.
| | 08:34 | There it is, BWDemo.app, and
I will just drag that into my dock.
| | 08:39 | Actually, the installer will install it
in the dock also in the current release
| | 08:44 | of the Mac App Store.
| | 08:46 | And I will just select that and there
it runs it just fine and I can quit that
| | 08:51 | and I can take this out of my dock
and I can even erase this from my
| | 08:55 | Applications folder.
| | 08:56 | We have tested it successfully.
| | 08:59 | So we've installed the app with the
Installer, it got installed in Applications,
| | 09:04 | we've tested it from the dock.
| | 09:05 | It's all working exactly as it needs to.
| | 09:08 | You notice I need to type my password
to delete it and that's because it's
| | 09:12 | installed in the root Applications
rather than in the user Applications.
| | 09:17 | So it needs to be deleted by
an administrator. So that's it.
| | 09:22 | You've not successfully created and
tested the Installer for your app.
| | 09:26 | I know this is a little bit complicated
and that's just the way it is right now.
| | 09:30 | Hopefully, it will get better in the
future, but you need to make sure that all
| | 09:33 | of your instances of your app are
deleted before you test the installer and then
| | 09:37 | it should just work just fine.
| | Collapse this transcript |
|
|
3. Submitting Your AppUnderstanding the submission process| 00:00 | Once you have your application bundle
and installer all ready, it's time to
| | 00:04 | submit your app to the App Store.
| | 00:06 | Here's an overview of the entire process.
| | 00:09 | If you've been following along step-by-
step these are the things we've already done.
| | 00:13 | We've signed our application and
installer with certificates that we got using
| | 00:17 | the Developer Certificate Utility, we've
assigned our App ID and installed it in
| | 00:22 | our info.plist file, and we've
created and tested our installer.
| | 00:27 | Now, we'll use iTunes Connect to
submit the app to the App Store.
| | 00:32 | Sometimes called ITC for short, iTunes
Connect is Apple's portal for submitting
| | 00:37 | apps to the App Store.
| | 00:38 | There is documentation available as well.
| | 00:41 | iTunes Connect actually does a lot in
the way of managing your app and managing
| | 00:45 | different things you can do with it.
| | 00:47 | It manages all of your accounts, allows
you to get paid, and it does all of these
| | 00:51 | different things and there's
a full developer's guide here.
| | 00:54 | If you click on this link you'll get
a PDF file that has a rather lengthy
| | 00:58 | manual describing in great detail all of the
things that you can use iTunes Connect for.
| | 01:03 | There's also an iPhone App where you can do
some of these things remotely from your iPhone.
| | 01:09 | iTunes Connect is also where you enter
all the metadata, the keywords, icons,
| | 01:14 | screenshots to get your app ready for
the store, and to maintain the app page in
| | 01:19 | the App Store after it's in the store.
| | 01:22 | Finally, we'll submit the app
with Xcode or Application Loader.
| | 01:26 | I'll show you how to submit with
both Xcode and with Application Loader.
| | 01:31 | But at this point I'm recommending to
use Application Loader. It's not much more
| | 01:35 | complicated and there are some problems
with recent versions of Xcode that make
| | 01:39 | it just not work sometimes.
| | 01:40 | So I'm suggesting to use Application Loader.
I'll will show you how to do it both ways.
| | 01:46 | Once your app has been submitted you'll
follow-up with iTunes Connect to check
| | 01:49 | on the status of your submission
process and to manage the metadata after your
| | 01:53 | app has been approved.
| | 01:56 | iTunes Connect is the portal for
managing your app on the App Store.
| | 01:59 | You want to get very familiar with it.
| | 02:01 | It has a lot of options, a lot of
things you can do beyond the essentials that
| | 02:04 | we cover in this tutorial.
| | 02:05 | You'll want to familiarize yourself
with its documentation so that you can use
| | 02:10 | all of its features.
| | Collapse this transcript |
| Registering your application in iTunes Connect| 00:00 | iTunes Connect is like the backroom at
the store where the inventory is kept and
| | 00:04 | the bookkeeper adds up all the day's sales.
| | 00:06 | You can get to iTunes Connect by typing
in itunesconnect.apple.com and this is
| | 00:15 | getting me right to this screen
because I've already logged in.
| | 00:18 | You'll probably get a log-in screen where you
have to type in your Apple ID and your password.
| | 00:22 | In order to submit our app we're going
to click on Manage Your Applications and
| | 00:26 | Add New App and Mac OS X App, and
we'll type in the app name, which is BWDemo,
| | 00:36 | and we'll type-in a SKU number.
| | 00:38 | Now it says number and it doesn't
actually required to be a number. It's a
| | 00:42 | Stock Keeping Unit.
| | 00:43 | What that means is that this needs
to be a unique identifier, unique only
| | 00:47 | within your organization.
| | 00:49 | So I'm just going to type here BWDemo.
| | 00:51 | We'll select the Bundle ID that we
entered in the Developer Certificate utility
| | 00:55 | and I'll press Continue.
| | 00:58 | The availability date, I'm just going
to select the date in the future because
| | 01:01 | I'm going to delete this right away.
This is just for demonstration purposes.
| | 01:04 | You'll notice that once you select a tier,
then it explains what all these other ones are.
| | 01:08 | Tier1 is $00.99, Tier2 is $1.99.
| | 01:12 | Once you select a price tier, it
brings up this link for pricing matrix.
| | 01:16 | These tiers are labeled Tier1, Tier2,
Tier3 like that because they don't want to
| | 01:20 | put in an amount because it's different
in different currencies. And so you click
| | 01:24 | on this pricing matrix.
| | 01:25 | You can see that Tier 1 is $0.99, Tier
2 is $ 1.99 in US dollars or in Canadian
| | 01:31 | dollars and here you have in euro, pounds,
yen, australian dollars, and how much
| | 01:37 | of that is your commission.
| | 01:39 | So this chart, it goes all the way
down to $1,000 all the way at the end.
| | 01:44 | So that's the pricing matrix.
| | 01:47 | So we'll go ahead and continue.
| | 01:49 | I'm just going to put in a version
number and a description, Demo demo demo.
| | 01:56 | You are going to want to put in a description.
| | 01:57 | This is what's actually
going to show up on the store.
| | 02:00 | So what I'm entering here obviously is stuff
that would be summarily rejected by the App Store.
| | 02:06 | So here you're going to want put in
real information. You're going to want to
| | 02:09 | actually have this information
prepared before you get this far.
| | 02:13 | Our primary category is Utilities and
our secondary category is optional.
| | 02:19 | I'm not going to fill that in.
| | 02:20 | You're going to want to put-in
keywords, again if you click on the little
| | 02:23 | question mark here, it explains that
your keywords are separated by commas.
| | 02:28 | So you can, again, demo, trial, example,
all the words that I am not allowed to
| | 02:35 | put in here, and you want to put in
copyright information, your contact email
| | 02:41 | address, your support URL, and this is
where you put in notes for the reviewers.
| | 02:52 | If there's anything about your app
that you need to explain in advance, you
| | 02:55 | want to put it in here.
| | 02:56 | One example that they have in the
documentation is if you have any Easter
| | 03:00 | I'm you want to tell them where
they are, so they don't discover them by
| | 03:02 | accident, because if they discover them by
accident they're going to reject your application.
| | 03:06 | Your keywords, you want to make
sure that you select keywords that are
| | 03:09 | descriptive but they're not too general.
| | 03:11 | In other words if you have a game,
you don't want to just put game there.
| | 03:14 | You want to put car racing game, or
whatever kind of a game it is.
| | 03:19 | So you want to have keywords that are
really going to help people to search for
| | 03:22 | your app and find it.
| | 03:24 | You have to select a rating here,
and you have to fill in all of these.
| | 03:31 | They will actually reject your app if
you don't. So I'm just going to go ahead
| | 03:34 | and put None here because there's
really no content at all in this application.
| | 03:43 | And rumor has it is that if you
select the wrong combination of things here
| | 03:48 | they will not even accept your app in the first
place. I don't know that that's necessarily true.
| | 03:54 | So down here you want to import your screenshot.
| | 03:58 | So I'm going to select on Choose
File and we'll go to our Chapter 3
| | 04:03 | Screenshots and here we have our PNG
file of the screenshot and there is
| | 04:08 | little preview of it.
| | 04:10 | I'll say Open and there it is.
| | 04:14 | So this screen is now filled in.
| | 04:16 | There is everything we need. We'll say Save.
| | 04:22 | So now our status is prepared for
upload and we're going to view the
| | 04:25 | details and we can see all the
details of all of our metadata and our
| | 04:30 | screenshot and everything.
| | 04:31 | We can edit it if we want to.
| | 04:33 | When everything is ready and we're
ready to upload our binary, we click on
| | 04:38 | Ready to Upload Binary and we have to
go through these confirmation screens
| | 04:43 | for Export Compliance.
| | 04:44 | This does not use any encryption.
| | 04:47 | So I'm going to say No, and Save.
| | 04:50 | So as you're now ready to upload using
Application Loader and it says using
| | 04:57 | Application Loader. Of course you can
run Application Loader from within Xcode
| | 05:01 | and we'll show you how to do that.
| | 05:03 | But for now, we go back and we see
that our status is now waiting for upload
| | 05:07 | and that means that we're
ready to upload our application.
| | 05:11 | So once the metadata is all set in
iTunes Connect and your app is in the ready
| | 05:15 | for upload state, it's time to upload
the app using Xcode or Application Loader.
| | 05:20 | This process is covered in the
other movies in this chapter.
| | Collapse this transcript |
| Submitting with Xcode| 00:00 | The process of submitting your app
with Xcode is really very simple.
| | 00:04 | I'll cover it here and show you how it
works, but right now I am recommending
| | 00:06 | that you use Application Loader instead.
| | 00:09 | I found that sometimes submitting with
Xcode does not work when it should.
| | 00:13 | There are bugs relating to how to use
data from the info.plist file.
| | 00:17 | These bugs make the submission
process just not work sometimes.
| | 00:21 | So until the next version of Xcode I am
just using Application Loader myself and
| | 00:25 | I am recommending that you do the same thing.
| | 00:27 | But for now we'll show you how this
works and then at least you'll know how
| | 00:31 | to use it and you can try it and if
it doesn't work for you, you can use
| | 00:34 | Application Loader.
| | 00:35 | So I am going to start by making a
working copy of BWDemo-start and I'm just
| | 00:40 | holding down the Option key while I
drag it and I am going to change this to
| | 00:46 | say BWDemo-working and I will double-
click on the Xcode Project to open Xcode.
| | 00:55 | And I'm going to start by
doing the Build and Archive.
| | 00:58 | Now, we've already got everything setup.
| | 01:01 | We have got our property list setup,
we've got all our assets in here, the
| | 01:04 | icons, and certificates, and everything
is all ready to go as we've gone through
| | 01:09 | the rest of the course.
| | 01:11 | So this is actually ready to submit and
so I did build an archive and now I am
| | 01:16 | going to go over here to the
Organizer and select BWDemo and over here I am
| | 01:23 | going to select Validate.
| | 01:25 | First, you have to validate it.
| | 01:27 | I'm going to put in my username and
password, and I am going to say remember in
| | 01:32 | the Keychain, and I am going to
select Login and here we are.
| | 01:38 | It's wanting me to choose this
identity and this application.
| | 01:43 | So it's gone into my iTunes Connect
account and it's found the application that
| | 01:49 | is in its ready for upload state.
| | 01:51 | So I am going to select Validate here
and it will check and make sure that it
| | 01:55 | passes the validation. There we go!
| | 01:57 | Validated archive application. It has
passed the validation and can now be
| | 02:00 | submitted to the App Store.
| | 02:02 | So I am going to say OK and I am
going to go ahead and press Submit.
| | 02:06 | Again, I will log in and I'll select
the App and the Certificate and Submit,
| | 02:15 | and it's uploading it now. There we have it!
| | 02:18 | The application BWDemo has
been submitted to the App Store.
| | 02:23 | So the submission process with
Xcode is really very, very simple.
| | 02:26 | For now I'm using Application Loader,
because sometimes this just doesn't work,
| | 02:30 | and as you'll see if you check the
movie on Application Loader it's really not
| | 02:35 | that much more difficult.
| | 02:36 | I'm sure the Xcode version will be
fixed sometime in the near future and at
| | 02:41 | that point, I will start
recommending using it again.
| | Collapse this transcript |
| Submitting with Application Loader| 00:00 | When you submit your app to the App
Store from within Xcode, it's actually using
| | 00:05 | another utility called
Application Loader to do the work.
| | 00:08 | Here's how you use Application Loader directly.
| | 00:11 | You will find Application Loader on
your hard disk under the Developer
| | 00:16 | Directory which is where Xcode is
and under Applications/Utilities, and
| | 00:21 | Application Loader.
| | 00:23 | When you run Application Loader for
the first time-- and you'll notice that it
| | 00:27 | didn't do this. This time
because I am already logged in.
| | 00:30 | When you run it for the first time, it
will run its Setup Wizard and its Setup
| | 00:36 | Wizard looks like this and you say
Next and you log in with your iTunes
| | 00:40 | Connect login information.
| | 00:42 | I will click Next and it says that my
login information has been verified.
| | 00:47 | Now it will say Choose an application.
| | 00:50 | It will give you a list of the
applications that are in there ready to upload
| | 00:55 | state in iTunes Connect and I've got
this one, BWDemo.1.0, and it says Next and
| | 01:01 | there is the information and Choose
and I can choose my package file here.
| | 01:07 | I've got it in Chapter 3 of my
Exercise Files on my desktop here and I will
| | 01:12 | choose my package, my installer
package, and say Open and I will say Send.
| | 01:20 | Now, it's checking with the App Store.
| | 01:23 | It's going to verify the assets and upload the
package and there it's all done. I'll say Next.
| | 01:31 | It says you have succeeded. You've
successfully added your application to the iTunes Store.
| | 01:38 | So the process of submitting your app
to the App Store with Application Loader
| | 01:41 | is really not much different
than the process with Xcode.
| | 01:43 | Of course you have to compile and build
your package in Xcode and save it like
| | 01:49 | we did when we tested the package.
| | 01:51 | I tend to do it this way and
I tend to use the Application Loader.
| | 01:55 | I find it perfectly easy enough.
| | 01:57 | I've also found recently in recent
versions of Xcode that doing it from within
| | 02:01 | Xcode at least in this
current version has some problems.
| | 02:04 | So right now I am recommending that
you use Application Loader. Perhaps in the
| | 02:08 | future that will change when they fix
the problems that I've seen in Xcode with
| | 02:13 | uploading applications.
| | Collapse this transcript |
| Checking the status of your application in iTunes Connect| 00:00 | iTunes Connect is used not just for
submitting your app, but for administering
| | 00:04 | it as well and this is especially
useful during the process of waiting for
| | 00:07 | your app to be approved.
| | 00:09 | So I am going to go ahead and
open up iTunes Connect here.
| | 00:12 | I am going to type in itunesconnect.
apple.com and put in my password and click
| | 00:23 | on Manage Your Applications and you will
see that our BWDemo app that we just
| | 00:28 | uploaded, it's got the
little yellow mark next to it.
| | 00:31 | So if we want to see what the state is,
I will just click on it and it says the
| | 00:34 | State is Waiting For Review.
| | 00:36 | So here's our SKU and our Bundle
ID and all of this information.
| | 00:41 | I am just going to click on View
Details and we can see here that it's
| | 00:46 | Waiting For Review.
| | 00:47 | We have some other stuff here.
| | 00:49 | You see the Status History.
| | 00:50 | I've gone back and forth with this a few
times through the process of recording it.
| | 00:54 | So it's been Upload Receive, Waiting for
Review, Developer Rejected, Waiting for
| | 00:59 | Review, Upload Received, like that,
because I have done it a few times during
| | 01:02 | the process of recording this.
| | 01:04 | You can also edit your version information.
| | 01:08 | You can edit all of this stuff. You
can edit your metadata, and you continue to
| | 01:19 | do this even after the app has
been published to the App Store.
| | 01:23 | You can continue to edit these things
and you can edit your screenshots.
| | 01:33 | So iTunes Connect actually provides a
very simple interface for checking on the
| | 01:37 | status of your app and
for editing your metadata.
| | 01:40 | So you'll use this throughout the lifetime of
your application while it's on the App Store.
| | Collapse this transcript |
|
|
4. Promoting Your AppUnderstanding the App Store's marketing guidelines| 00:00 | Apple provides a number of resources
to help you with your marketing effort.
| | 00:04 | These resources include trademarks,
product images, and the Mac App Store itself.
| | 00:09 | In order to use these resources they've
provided guidelines and these guidelines,
| | 00:14 | like the review guidelines, are
actually rules that they expect you to follow
| | 00:17 | when using their marketing resources.
| | 00:20 | You can download a copy of these
guidelines at this web page and this is in the
| | 00:25 | developer portal so you'll need
to log in with your developer ID.
| | 00:29 | If you scroll down here a little bit,
you'll see this link to the guidelines and
| | 00:34 | this is a PDF file. It's about nine
pages long. It's not very long at all.
| | 00:38 | I strongly suggest that you
download it and read the whole thing.
| | 00:42 | Apple has a tremendous amount
of success in their marketing.
| | 00:45 | So anything that they suggest in the
marketing realm is really going to carry
| | 00:49 | a lot of weight and is really going to help
you be successful in your marketing efforts.
| | 00:53 | So I suggest that you look at this
carefully and then you give it a lot of credence.
| | 00:56 | Also, on this page you'll find
links to these graphical resources.
| | 01:01 | There is an iMac, a MacBook Air, and
MacBook Pro where you can paste your
| | 01:05 | screenshots into their screens and we'll
show you how to do that later in this chapter.
| | 01:09 | Also, the Mac App Store logo and
you'll notice a copy of this here.
| | 01:13 | They call it the App Store badge.
| | 01:15 | You can put that on your website
and there are rules for how to use it.
| | 01:19 | One thing to keep in mind when using
the name "Mac App Store" is the proper
| | 01:24 | spelling and punctuation
of the name Mac App Store.
| | 01:27 | It's a trademark and they get to tell
you how to use it and this is actually a
| | 01:31 | good thing, because consistency and the
usage of a trademark helps penetration
| | 01:36 | in the eyes of the viewer and that's
just going to help you sell more product.
| | 01:40 | I know for some of us that don't have a
marketing background that seems like a
| | 01:43 | little bit of voodoo, but it's
actually a tried and true truth.
| | 01:48 | So use the name Mac App Store
consistently and that will actually help with
| | 01:53 | your marketing and help with your
results and it will also keep you out of
| | 01:56 | trouble with Apple.
| | 01:57 | The badge itself needs to be
placed specifically on your page.
| | 02:00 | Well, it's not so much specifically is
that there are things that they don't
| | 02:03 | want you to do that.
| | 02:03 | They don't want it to be more
prominent than the name of your web site or your
| | 02:07 | trademark or any of your product images.
| | 02:09 | They want it to be less prominent those
things and kind of off to this side and
| | 02:12 | they want a certain amount of air around it.
| | 02:14 | I think it's 25% of the size of the
badge itself they want in space around it.
| | 02:19 | There are other guidelines that are in
the document for how to use the badge.
| | 02:23 | Linking to your product on the store is
done by creating a link from the store
| | 02:29 | itself, and I am going to
show you how to do that.
| | 02:31 | So here is an app in the App Store and
you'll notice this little arrow here next
| | 02:35 | to the Buy button which in this case is Free.
| | 02:37 | This little arrow, it's a drop-down
and in there you see this Copy Link.
| | 02:41 | So I'm just going to click on that I
am going to go back to the browser here
| | 02:45 | and I'm going to paste it into the
URL bar and you will notice there is the
| | 02:50 | link right there and I am going to
press Enter and that will bring up a page in
| | 02:55 | the web browser and allow you to view it in
the App Store just by clicking on this button.
| | 02:59 | Something you've got to keep in
mind here is that I'm using Safari.
| | 03:02 | I normally use Firefox myself.
| | 03:04 | Sometimes I even use Google Chrome, but
I'm using Safari here, because for now
| | 03:09 | anyway this is the only
place where these links work.
| | 03:12 | It's just a matter of how new all of this is.
| | 03:14 | I'm sure it will work fine in other
browsers in the future, but Safari actually
| | 03:19 | looks out and sees that you have the App
Store and it will link to it instead of
| | 03:23 | iTunes when I click on this link.
| | 03:25 | So when I click on this link, it
brings up the App Store with that
| | 03:29 | particular product.
| | 03:30 | So these links currently only work
in Safari, but that's better than not
| | 03:35 | working at all and most of your market, being
Mac users, are going to be using Safari anyway.
| | 03:41 | Apple also provides product images.
| | 03:43 | These are images of their computers.
| | 03:46 | They have got an iMac, and
MacBook Pro, MacBook Air.
| | 03:49 | It allows you to put images of the
products with the screen open and your
| | 03:54 | screenshot right on the
product there on your web site.
| | 03:57 | So I'll be showing you how to
composite your screenshots onto these product
| | 04:01 | images a little bit later in this course.
| | 04:04 | It's important when you use their
product images that you don't modify the
| | 04:09 | product image itself and it's
important that your menu bar and the dock also
| | 04:14 | match and I'll show you how to
do this later in this chapter.
| | 04:17 | When you're creating your metadata
in iTunes Connect, Apple provides some
| | 04:21 | guidelines on how to do this and these
aren't so much rules as they are really,
| | 04:24 | really great suggestions.
| | 04:26 | The best one that you'll ever hear
is "sell the sizzle, not the steak."
| | 04:29 | This is something that Apple
does famously and beautifully.
| | 04:32 | If you look at campaigns like their
famous 1984 commercial or the Think
| | 04:37 | Different campaign, really any of
their campaigns, they're not selling you a
| | 04:41 | computer. They are selling you an experience.
| | 04:43 | This is just a really, really great suggestion.
| | 04:46 | So the way that they worded is to highlight
the features that make your product unique.
| | 04:51 | You don't need to tell people that it's a game.
| | 04:52 | They can see that it's a game, but
tell him how exciting the game is.
| | 04:55 | Tell him what it is about the game
that sets it apart from other games.
| | 04:59 | The same is even if it's like a little
utility, or something like Alfred that we
| | 05:03 | were looking at in the App Store that
basically does what Spotlight does, but it
| | 05:07 | just does it so much better.
| | 05:10 | Likewise in your metadata which is
what people are going to search for.
| | 05:13 | People aren't going to search for "game."
| | 05:15 | So you don't even necessarily need to
put game in your metadata, but you might
| | 05:19 | want to put first person shooter or
slider or puzzle or chess or backgammon or
| | 05:26 | something like that. Or if it's a space theme.
| | 05:29 | Use these kinds of things in your
metadata, because you want to think about
| | 05:32 | what people are searching for when they
search, because that's how the metadata is used.
| | 05:38 | When you're creating your web presence,
think not just about your website, but
| | 05:42 | also think about things like social media.
| | 05:45 | Social media is becoming more
and more important these days.
| | 05:47 | You want to stay engaged with your users,
you want to post frequent updates on
| | 05:52 | your Facebook and your Twitter
feeds, you want to blog frequently.
| | 05:55 | These are the kinds of things that
are going to drive traffic to your app.
| | 05:59 | Most importantly in your web presence,
when people send you support requests and
| | 06:04 | bug reports, respond
promptly and respond friendly.
| | 06:07 | These are the things that get people to
post negative feedback. Help your users
| | 06:12 | to feel cared for to feel like they're
being responded to and it'll help you
| | 06:17 | prevent a lot of negative feedback.
| | 06:18 | And a lot of negative feedback
really kill your app in the App Store.
| | 06:23 | So keep the mind that the great
advantage of the Mac App Store is that Apple is
| | 06:28 | providing direct desktop access to the
entire installed base of OS X beginning with 10.6.6.
| | 06:36 | They're also providing you a number of
resources to help you direct traffic to
| | 06:40 | the Mac App Store and to your app in particular.
| | 06:44 | Apple's tremendous marketing success
and experience lends a lot of weight
| | 06:48 | to these guidelines.
| | Collapse this transcript |
| Creating promotional graphics| 00:00 | Apple provides product images to help
show off your app in its natural habitat.
| | 00:05 | Images are provided for print and for web.
| | 00:07 | Let's take a look at how to use them.
| | 00:10 | We'll start by taking this
Apple Assets folder in Chapter 4.
| | 00:12 | I'm just going to make a copy of that so
that we're not working with the originals.
| | 00:16 | And I'll just rename this
folder and call it "working."
| | 00:22 | And you'll notice here that
there is several images here.
| | 00:25 | I'm going to stretch this out so
we can see the entire file names.
| | 00:29 | There is the Badge image and it
looks like that, and there is the Desktop
| | 00:35 | image and this has a space in the middle for
your desktop version. Not the fullscreen version.
| | 00:41 | This is the not fullscreen version of
your screenshot and then there is the
| | 00:44 | Full_Screen version here.
| | 00:46 | The fullscreen version is actually a
little bit easier to work with so we'll
| | 00:49 | start with that and then we'll show you
how to work with the Desktop version as well.
| | 00:53 | So I'm going to bring this up in
Photoshop by double-clicking on it.
| | 00:57 | Now, these images are
actually very Photoshop specific.
| | 01:00 | I'm not sure that they're going to
work in another image editing program.
| | 01:03 | They use something called Smart Objects,
which is a rather complicated file format.
| | 01:10 | So you see here is the MacBook Air
and there are different versions of these
| | 01:14 | files for iMac, and
MacBook Air, and MacBook Pro.
| | 01:18 | And I chose the MacBook Air one
because I think these are really pretty.
| | 01:20 | I have one of these.
| | 01:22 | And I'm going to double-click on the
Smart Object here in the little gray area,
| | 01:26 | and that will open up the smart object.
| | 01:29 | Just select OK there and that gives us the
space where we're going to put the image.
| | 01:34 | And I'm also going to come back out here
to the Finder and I'm going to bring up
| | 01:37 | my screenshots that we made earlier.
And let's drag the fullscreen version of this up
| | 01:43 | to the top, and just to select all
with Command+A, and copied all the layers
| | 01:49 | with Shift+Command+C. And then I'm
going to come back here to my Smart Object
| | 01:53 | and I'm going to paste
that in and there we have it.
| | 01:56 | You notice that it doesn't fill the
entire space and so I'm going to make it
| | 02:00 | fill the entire space.
| | 02:01 | And because of the way that this layer is
built there is probably several ways to do this.
| | 02:05 | This is the way that I'm doing it.
| | 02:07 | I'm just going to drag out a guide here
and let it snap to that zero place and a
| | 02:11 | guide here and let it snap there
and do that on all four sides.
| | 02:19 | And then I want to drag the image itself.
I pressed a V there to get it in its Move mode.
| | 02:25 | My fingers kind of know the parts of
Photoshop that I use a lot and I always
| | 02:28 | know what they're called.
| | 02:30 | Now I'm going to press Command+T to
get these little sizing things and I'm
| | 02:34 | going to hold the Shift key down while
it sizes so that it keeps its aspect
| | 02:37 | ratio, and grab it all the way the end here now.
| | 02:40 | This MacBook Air model is the 16x10
and I know that is a 16x10 image and
| | 02:46 | that works really well.
| | 02:47 | I believe the iMac version is a 16x9
so you need to get a 16x9 screenshot.
| | 02:53 | Now I just double-click in the middle,
and it commits that resize and Command+S
| | 02:59 | to save this Smart Object.
| | 03:01 | And I'll close the Smart Object and
you see we have our completed composited.
| | 03:07 | This is the MacBook Air. You notice the
little shine is coming over the screen.
| | 03:11 | That's because of the way the magic that
they did with the layers and the Smart Objects.
| | 03:16 | Somebody who really knows how to use
Photoshop put this all together.
| | 03:19 | So this is very easy to do and it
comes up with the beautiful result and you
| | 03:23 | can now save this for web. You
can resize it into different sizes.
| | 03:27 | It's got the little shadows there
that will come up nice on different
| | 03:30 | colored backgrounds.
| | 03:32 | It's all very, very beautiful.
| | 03:33 | So I want to close this one.
| | 03:35 | I'll go ahead and save that and we'll
go ahead and open the Desktop version.
| | 03:43 | And you notice this has an area
there for you to put your desktop image.
| | 03:47 | Our image isn't going to fit in there and
you'll see what we're going to do about that.
| | 03:50 | Let's go ahead and grab our image.
| | 03:52 | I'll put this back down here and
we're just going to copy this layer there.
| | 03:57 | And we'll open up the Smart Object and
this actually has several layered Smart
| | 04:01 | Objects that we're going to get to.
| | 04:03 | You'll notice that it's got a
Smart Object for the screen here.
| | 04:07 | It's got another one for the dock
icon down there and another one for the
| | 04:10 | reflection that's actually automatically
updated, when you update the dock icon.
| | 04:14 | So there is a lot of stuff inhere.
| | 04:16 | I am going to open up the one first for
this screen area and you'll notice that
| | 04:20 | when I paste my thing in there,
it doesn't work very well.
| | 04:23 | It doesn't fill up that entire space.
| | 04:25 | So if I save this and close it you'll
see, it's got this gray area behind it.
| | 04:29 | So that's not going to work at all.
| | 04:30 | I'm just going to turn that layer off
and I am going to go ahead and paste it
| | 04:34 | directly on the screen here.
| | 04:36 | And I'm going to just hold down the
Option key and drag it around to make a
| | 04:42 | couple of copies of it.
| | 04:44 | And so we've got a nice layout that's
going to fill up a bit of the screen.
| | 04:48 | And I'm just select all these layers I
just created and merge them together
| | 04:52 | and then drag this to the middle of
the screen and let it snap and there we
| | 04:58 | have a nice little layout of our app.
| | 05:00 | There is a couple of other things we
need to do and we need to make this not say
| | 05:03 | Finder up here and this is
really kind of beautiful.
| | 05:06 | I am going to zoom in. I press Z to get
the little Zoom tool and I am going to
| | 05:10 | say Actual Pixels and then just scroll up here.
| | 05:14 | And this is a text layer.
| | 05:16 | You see it's got the little T there.
| | 05:17 | So I can just double-click on Finder and
just change the word Finder to say BWDemo.
| | 05:24 | And you can actually edit all
of these. These are all in text.
| | 05:27 | So now it looks like really running
our app and the final thing we want to do
| | 05:31 | here, and Apple actually requires
this, is to open up that Dock icon.
| | 05:35 | So I want to double-click on that Smart
Object and I'm going to grab our icon here.
| | 05:43 | I'm just going to take this 512
version and open that in Photoshop.
| | 05:48 | And there it is and select that and copy
it and paste it inhere and then resize it.
| | 05:57 | There was Command+T to get
these little resizing things.
| | 06:00 | And drag it down to the middle.
| | 06:03 | Actually I am going to drag it all the
way down to the bottom because I know
| | 06:06 | how this is being used.
| | 06:07 | Because that will the little shine look
really nice on the dock and it actually
| | 06:11 | does that anyway when it lays it on the dock.
| | 06:12 | It brings it all the way to the bottom.
| | 06:14 | So I'll double-click on that, turn off
this blue background, Command+S to save,
| | 06:20 | close this, and go ahead
and close our icon there too.
| | 06:25 | And there we have-- I want to just zoom
in here. Actual Pixels. And scroll down
| | 06:31 | and you see the reflection comes up just
right and it just automatically does all of that.
| | 06:37 | So we now have this fully composited
image of the screen and when I save this
| | 06:41 | and close it, there is our MacBook Air.
| | 06:45 | It's got the shine across it, it's got
our icon, it's says BWDemo there, it's
| | 06:51 | all just exactly perfect.
| | 06:53 | So I'll go ahead and I'll save
this and close it and we are done.
| | 06:59 | We now have a version with our
windowed application and a version with our
| | 07:06 | fullscreen application.
| | 07:08 | Apple provides these beautifully
crafted easy-to-use product images for you to
| | 07:12 | use in your marketing materials.
| | 07:13 | Of course, they are a little bit
Photoshop specific so you might actually need
| | 07:17 | Photoshop if you don't have it to be
able to use these, but these images provide
| | 07:21 | a beautiful view of your app at work
and you can place that on your web site or
| | 07:25 | you can use it for your print materials.
| | Collapse this transcript |
|
|
ConclusionGoodbye| 00:00 | In this course, my goal was to give you
a good understanding of the process of
| | 00:04 | submitting and managing an
app in the Mac App Store.
| | 00:08 | I've covered the App Store review
guidelines to improve your success in
| | 00:12 | having your app accepted.
| | 00:13 | Apple's human interface guidelines
to improve the quality of your app via
| | 00:18 | bundle, graphical assets, Apple's
marketing materials, so that you can
| | 00:22 | successfully submit your app to the Mac App
Store and manage your up once it's in the store.
| | 00:27 | I strongly suggest that you get
familiar with the Mac Dev Center.
| | 00:31 | Apple has provided a great deal of
documentation not just on the App Store but
| | 00:36 | on Mac development in general.
| | 00:38 | The Mac App Store represents a
marvelous opportunity for Mac developers, large
| | 00:42 | and small, to have direct
access to a huge market of Mac users.
| | 00:47 | I hope this course has helped you
to have better success in the Mac App Store,
| | 00:50 | and to take full advantage of
this great new way to bring your Mac app to market.
| | Collapse this transcript |
|
|