mobile app assignment - Engineering
See how to create an example web service in Android. Page 174,
Chapter 6
Getting Started with Android - Alternative Formats
See how to create an example web service in iOS. Page 214,
Chapter 7
Getting Started with iOS - Alternative Formats
For submission : Read carefully about 2 different approaches for creating a web service from above. Then
(a) compare the two approaches and
(b) explain 2 advantages of each approach relative to the other.
Getting Started with Android
WHAT’S IN THIS CHAPTER?
! Deciding to target Android as your mobile platform
! Getting the tools you need to develop Android
! Creating a new project
! Creating the Derby project in Android
Android Inc. was initially started in 2003, out of a frustration with the smartphone market as
it existed at the time. It was acquired by Google in 2005.
The hardware side of Android is supported by the Open Handset Alliance (OHA), which
is a conglomeration of many handset manufacturers, and the software is maintained by the
Android Open Source Project, which is led by Google.
Android had its fi rst major release in late 2008; the fi rst major phone company to support it
was T-Mobile, and the original handset was the HTC Dream (G1).
The Android OS was built on a modifi ed Linux kernel and applications are written in Java. By
using Java as the development framework for the applications, Android enables you to develop
your application on all major platforms.
By leveraging the Eclipse IDE, Android affords the user almost the exact same user experience
for development on all major OS platforms.
Additionally, when researching Android you may come across the name Dalvik. It is the
virtual machine that runs on the Android device, and your applications run within it. What
does this mean to developers? Because your applications run inside this virtual space, it
provides a level of security to the base OS. Also, Dalvik has been designed with performance
in mind. As of Android 2.2 it also provides just-in-time compilation to your apps (because
Dalvik requires specially compiled .dex fi les and not just the standard .class fi les generated
in a normal Java compilation).
6
c06.indd 151c06.indd 151 28/07/12 6:01 PM28/07/12 6:01 PM
152 " CHAPTER 6 GETTING STARTED WITH ANDROID
WHY TARGET ANDROID?
Among the many reasons to target the Android platform, fi rst and foremost is cost. On average
you can get an Android smartphone for a fraction of the cost of an iPhone. They may not have
commensurate features, but thrift is a major component for new smartphone buyers.
Next is fl exibility. More types of Android devices are available, so if your application fi ts a specifi c
niche market, there is probably a device that would support your needs already in production. At
the time of writing, there are effectively two iOS devices (iPhone/iPod touch and iPad); four if you
include the retina display versions, versus roughly 15 form factors to develop for.
If you are already a Java developer, adding Android to your repertoire is a snap. What Java is to
Android, Cocoa is to CocoaTouch and C# is to Silverlight. All of the frameworks that mobile
developers use are a combination of subsets and supersets of the functionality of a given technology.
Identifying an application that exists on another platform but does not yet exist on Android is
another perfectly good reason to target Android. That being said, you should do some research,
because if a developer has targeted iOS or BlackBerry as the primary platform, you have to assume
that Android is potentially on the horizon.
WHO SUPPORTS ANDROID?
HTC, LG, Motorola, and Samsung are the major players in the Android smartphone market.
Archos, Dell, Samsung, and Toshiba hold the largest pieces of the Android tablet market. You
should note that Amazon’s Kindle Fire and Nook Color are up-and-comers and use a customized
version of the Android tablet (Version 3) OS on their devices.
ANDROID AS COMPETITION TO ITSELF
Because Android was designed to be run on many different types of devices, created by many
different manufacturers (as opposed to the closed system that Apple has maintained), it has left
itself open to the will of said manufacturers. Because of the open nature of the Android OS, it is
commonplace for manufacturers to create vendor-specifi c builds of Android, and when this happens
you are beholden to them for OS updates. Additionally in these custom builds, vendor-specifi c
limitations have arisen such as the vendor-specifi c market. You then have another hurdle to cross
when releasing your application for sale to the public because some devices may not be able to
purchase it because of these limitations.
Another issue that has cropped up is the lack of over-the-air (OTA) distribution of OS updates by
cellular carriers. Often your device is perfectly capable of running a later version of the Android
software, but carriers are often slow to distribute that to their customers.
Multiple Markets and Market Locks
Depending on your version of Android, and depending on the manufacturer of a given device, you
may fi nd yourself locked into using a vendor-specifi c Android marketplace. Additionally, application
c06.indd 152c06.indd 152 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 153
vendors can list their application not only on Google Play or vendor-specifi c marketplaces, but
also on the Amazon App Store. You often fi nd on cheap and imported Android devices a version of
Google Play that is maintained by the manufacturer. They pick and choose what applications are
available from the whole set in the marketplace. You should develop as you expect to be available
to all Android devices; just note when purchasing large quantities for an enterprise deployment that
you will have to watch out for these inconsistencies.
The version of the Android SDK that you need to support depends on what devices you want to
support. If you want to target most phones available right now, you should support Android 2.2
or 2.3. “Gingerbread” (2.3) is the last widely available version for those devices. The Android 3.x
versions are for tablets, such as the Samsung Galaxy Tab. The Android 4.x versions are the newest,
and are a combination of the Android 2.x and Android 3.x functionality meant to pull back on the
version splintering seen in devices, but not many devices currently in release support it.
Once you have decided on a version to deploy your application against, you need to set up your
development environment. In the next section you will learn all about confi guring your IDE, Java
and Android SDKs, and building emulators.
GETTING THE TOOLS YOU NEED
This section paraphrases the installation instructions from the Android Developer section, and we
added some personal notes from our experiences.
Downloading and Installing JDK
The fi rst thing that you need to do to develop Android applications is to visit http://www.oracle
.com/technetwork/java/javase/downloads/index.html and ensure that you have the Java JDK
installed. Because so many different acronyms
and versions appear on the Java download
website, Figure 6-1 points you in the direction
you need to get past all of the potential
distractions on that site.
The JDK is the Java Development Kit. You
need this package to do any Java development
on your machine, Android or otherwise. Be
sure to look for the Java Platform, Standard
Edition JDK.
Downloading and
Installing Eclipse
After you have successfully installed the JDK,
you will need a development environment.
The open source IDE Eclipse is recommended by Android directly in its documentation. You are
not limited only to Eclipse, but the tooling has been honed over time to be the easiest solution to
FIGURE 6!1: JDK download page
c06.indd 153c06.indd 153 28/07/12 6:01 PM28/07/12 6:01 PM
154 " CHAPTER 6 GETTING STARTED WITH ANDROID
get up and running. Figure 6-2 shows the Eclipse download page (www.eclipse.org/downloads).
Download the version of Eclipse Classic that is appropriate for your operating system.
FIGURE 6!2: Eclipse download site
Downloading and Installing the Android SDK
After you have installed the Eclipse IDE, you need to install the Android Software Developer Kit
(http://developer.android.com/sdk/index.html). This includes all the tools necessary to build
Android apps, because the SDK is not built directly into Eclipse. Figure 6-3 shows the Android SDK
download page; make sure to get the right version for your OS.
Don’t use the installer for 64-bit Windows. Just get the zip fi le and unzip it to
c:\Android. At the time of writing the installer package has diffi culty fi nding
the Java SDK installed on the machine.
For Mac deploy it to /android in your root volume.
FIGURE 6!3: Android SDK download page
c06.indd 154c06.indd 154 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 155
Downloading and Confi guring the Eclipse ADT Plug-in
After you have installed the Android SDK you need the ADT plug-in. What this does is add the
features necessary to create Android Projects (and Android Test Projects), because they are not
bundled with the base Eclipse install. Additionally, the plug-in adds debugging tools to Eclipse to
help during the Android development process. Figure 6-4 shows the interface for installing the ADT
plug-in. You will also use this interface when upgrading ADT. The tooling generally gets a revision
when a new version of the Android OS is released.
FIGURE 6!4: Installing the ADT plug-in
Use the Update Manager feature of your Eclipse installation to install the latest revision of ADT on
your development computer. Follow these steps:
1. Start Eclipse and select Help # Install New Software.
2. Click Add in the top-right corner.
3. In the Add Repository dialog box that appears, enter ADT plug-in for the name and the
following URL for the location: https://dl-ssl.google.com/android/eclipse/.
4. Click OK. If you have trouble acquiring the plug-in, try using “http” in the Location URL
instead of “https” (“https” is preferred for security reasons).
5. In the Available Software dialog box, select the checkbox next to Developer Tools and
click Next.
c06.indd 155c06.indd 155 28/07/12 6:01 PM28/07/12 6:01 PM
156 " CHAPTER 6 GETTING STARTED WITH ANDROID
6. The next window shows a list of the tools to be downloaded. Click Next.
7. Read and accept the license agreements and then click Finish. If you get a security warning
saying that the authenticity or validity of the software can’t be established, click OK.
8. When the installation completes, restart Eclipse.
Once you have downloaded the ADT plug-in you need to set it up to talk to the Android SDK that
you downloaded earlier. This allows Eclipse to build, run, and debug Android applications without
needing to open a terminal or command shell. Figure 6-5 shows where you need to add the link to
the Android SDK in the Eclipse preferences.
After you’ve successfully downloaded the ADT, the next step is to modify your ADT preferences in
Eclipse to point to the Android SDK directory (see Figure 6-5):
1. Select Window # Preferences to open the Preferences panel. In Mac OS X, click Eclipse #
Preferences.
2. Select Android from the left panel.
3. You may see a dialog box asking whether you want to send usage statistics to Google. If
so, make your choice and click Proceed. You cannot continue with this procedure until you
click Proceed.
4. For the SDK Location in the main panel, click Browse and locate your downloaded SDK
directory.
5. Click Apply and then click OK.
FIGURE 6!5: ADT confi guration screen
c06.indd 156c06.indd 156 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 157
Installing Additional SDK Components
The last step in preparing your development environment for Android is to download additional
Android OS packages. This enables you to build applications that target that OS, and also gives you
the tools you need to emulate a device running that OS on which to test all of your applications,
whether or not they have been targeted to that OS version. Figure 6-6 shows just how many options
you have when looking to target Android OS versions.
FIGURE 6!6: Working with the SDK Manager
Correctly confi guring and using this tool will ensure that you have all the latest SDKs and utilities
afforded to you. Note that you will not necessarily need all of the versions of the SDKs listed in
Figure 6-6; this was merely to illustrate the full breadth of your options.
Loading the Android SDK Manager in Eclipse takes only a few steps:
1. Open Eclipse.
2. Select Window # Android SDK and AVD Manager.
c06.indd 157c06.indd 157 28/07/12 6:01 PM28/07/12 6:01 PM
158 " CHAPTER 6 GETTING STARTED WITH ANDROID
3. Select Available Packages in the left panel. This reveals all of the components that are cur-
rently available for download from the SDK repository.
4. Select the component(s) you’d like to install and click Install Selected.
5. Verify and accept the components you want (ensure each one is selected with a green check-
mark) and click Install. The components will now be installed into your existing Android
SDK directories.
I recommend that you download and install an Android 2.2.x, Android 2.3.x,
and Android 3.x version. This will give you the latest two handset-specifi c
versions of Android, and the current tablet version of Android. As Android
4.0 is so new, you may choose to get it, but understand that you may need to
purchase a newer device to test apps targeted to that version.
Development
The following sections discuss the application layout and Android app development.
Creating a New Project
First things fi rst — you need to create a new Android project. The line highlighted in Figure 6-7 is
the type of project you want.
FIGURE 6!7 Creating a new Android project
c06.indd 158c06.indd 158 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 159
First you need to name your application and
add it to a workspace. Think of a workspace
as the folder in which your application resides.
Figure 6-8 illustrates what the New Android
Project screen looks like.
After you have named your application
you will need to give it a package name,
set the minimum SDK required to run your
application, and name the initial Activity that
will run when your application runs. If you
want to add a test project to your workspace,
you can do so at this time. Figure 6-9 shows
a completed Application Info step in the new
project wizard.
An important note at this point: Make sure
that your package name is unique. The
standard format for package names is
com.companyName.applicationName. This
must be unique because that is how it is known
on the Android device and in the Android
Market. When you make updates you can make
them only within your package name. If you
change your package name there will be no
upgrade path between versions.
The minimum SDK required is generally set
when you are leveraging a permission or piece
of functionality that did not exist when the core
Android version was released, or if you want
to target a specifi c type of device (tablet versus
handset). The major jumps are between 1.6
and 2.1, 2.3 and 3.x, and 3.x and 4.x.
Figure 6-10 shows you all of the SDKs that you
have installed that you can target when creating
your application. Please note that the reason
this screen is full of SDKs is because I took the
time to download them all for demonstration
purposes.
FIGURE 6!8: Naming your project
FIGURE 6!9: Confi guring application information
c06.indd 159c06.indd 159 28/07/12 6:01 PM28/07/12 6:01 PM
160 " CHAPTER 6 GETTING STARTED WITH ANDROID
This step is also very important when building your application. The minimum SDK version you
set specifi es the lowest possible version of the SDK in which your application will run, and it is the
primary version in which your application will run. Android 1.5 is the lowest version of the SDK
still supported, and Android 4.0.3 (at the time of this writing) is the highest.
FIGURE 6!10: Choosing the SDK version for your app
Figure 6-10 shows a Google version of the SDK alongside all of the versions I
have installed on my machine. The Google APIs add additional functionality to
each API Level. Please use your best judgment when deciding whether to use the
Google APIs, and research if you need the functionality they provide.
Project Structure
The major sections to note in Figure 6-11 are the src and res folders and the AndroidManifest
.xml fi le. It shows the project layout for the application that I have been building in the
previous steps.
c06.indd 160c06.indd 160 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 161
All of your code lives within your src folder, under your Package
Namespace. The res folder holds layouts and resources for different
hardware specs. HDPI, LDPI, and MDPI are the resolutions for which
you can create images. The layout subfolder holds all of your XML
layouts. These are how your application gets rendered. The code will
be how to populate these layouts. All of your XML layouts are stored
in the layout subfolder of res, and your code will be linked under the
namespace in your src folder of the project view.
The Android Manifest is the heart of your application. It holds the entire
confi guration of your app (Figure 6-12) — the permissions you request
(Figure 6-14), the application attributes (Figure 6-13), and links to
instrumentation to be attached to your app. You can edit this in Eclipse’s
Manifest Editor or in XML (Figure 6-15) because that is how it is saved.
FIGURE 6!11: Basic project
structure
FIGURE 6!12: Main Manifest Editor
c06.indd 161c06.indd 161 28/07/12 6:01 PM28/07/12 6:01 PM
162 " CHAPTER 6 GETTING STARTED WITH ANDROID
The Manifest Editor is where the initial information of your application is stored when you create
it. This interface also has links to export your application. Exporting is necessary when submitting
your app to Google Play. In Eclipse there is a specifi c menu option and wizard that expedites the
submission process.
Figure 6-13 shows all of the base properties that can be set for a given application in the app’s
AndroidManifest.xml fi le. The most common properties to edit are the Label (the text shown
under the icon, often referenced in a resource fi le) and Icon (the icon shown in the launcher UI of
your device, the icon your users will click on to launch the app).
FIGURE 6!13: Manifest Application Info Editor
The spartan view shown in Figure 6-14 is the Permissions Editor. Here you can add permission
requests to your application. The most common one is android.permission.INTERNET,
which allows the application to use the device Internet connectivity. This, along with GPS and
accelerometer, are the permissions you will add to the Derby Names application.
c06.indd 162c06.indd 162 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 163
Last is the XML Editor shown in Figure 6-15. As you make changes in the other tabs they are
refl ected here. If you feel more comfortable editing the XML by hand you can use this interface to
add, update, and remove properties as you see fi t.
FIGURE 6!14: Android Manifest Permissions Editor
FIGURE 6!15: Android Manifest XML Editor
c06.indd 163c06.indd 163 28/07/12 6:01 PM28/07/12 6:01 PM
164 " CHAPTER 6 GETTING STARTED WITH ANDROID
Android Basics
You have two options for starting your application. You can build the layout you would like
to populate, or you can build the code that will populate the layout. Either is acceptable; it just
depends on what you feel most comfortable with.
Creating User Interfaces
This section describes the common widgets that come with Android, and shows examples of the
different layout elements you can use to coordinate the fl ow of your application’s activities.
Basic Android UI Elements
All of the basic elements in Android are stored in the android.widgets namespace in the SDK.
The most commonly used elements include:
! Button: This is a standard button element.
The following XML specifi es the layout of the Button widget:
<Button
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/button”
android:text=”Click Me”
android:onClick=”btnClick” />
Code: This code is necessary to handle the Click event noted in the XML layout.
public void btnClick (View view) {
//Do Something.
}
! TextView: When I see this I want to think text box, but it isn’t a text box. TextView is
effectively the same as a label in other languages. It is just a place to display text.
Layout:
<TextView
android:id=”@+id/textview”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:text=”Hello World”/>
Code:
TextView tvToShow = (TextView)this.findViewById(R.id.textview);
tvToShow.setText(“Ta-Dah!”);
! EditText: This is the text box widget. You can edit the contents of the text box and save
those values in code.
c06.indd 164c06.indd 164 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 165
Layout:
<EditText
android:id=”@+id/txtUsername”
android:hint=”Username”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />
Code:
EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String username = txtUserName.getText().ToString();
! CheckBox: This is a standard checkbox element.
Layout:
<CheckBox android:id=”@+id/checkbox”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Checkbox Text” />
Code:
final CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox);
checkbox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
//It’s Checked
}
else {
//Not Checked
}
}
});
! RadioButton: This is a standard radio button element. To really get the most bang for your
buck, though, you need a RadioGroup.
Layout:
<RadioGroup
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:orientation=”vertical”>
<RadioButton android:id=”@+id/radio_uno”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”1 - Uno” />
<RadioButton android:id=”@+id/radio_dos”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”2 - Dos” />
</RadioGroup>
c06.indd 165c06.indd 165 28/07/12 6:01 PM28/07/12 6:01 PM
166 " CHAPTER 6 GETTING STARTED WITH ANDROID
Code:
private OnClickListener radioButtonOnClick = new OnClickListener() {
public void onClick(View v) {
RadioButton rb = (RadioButton) v;
// Do with it what you will
//rb.getText();
}
};
//This assigns this event to the radio buttons.
RadioButton radio_uno = (RadioButton) findViewById(R.id.radio_uno);
RadioButton radio_dos = (RadioButton) findViewById(R.id.radio_dos);
radio_uno.setOnClickListener(radio_listener);
radio_dos.setOnClickListener(radio_listener);
Figure 6-16 shows all of the major UI widgets.
! ListView: This is the element you use if you want to
show lists of data. You can overload its display and
put lots of elements in each row, or you can just bind
a text item and a value to each. The trick is using an
ArrayAdapter<T> where T is the type of object that you
want bound. Additionally, creating a layout XML for
how you want each item displayed is a good strategy.
Layout:
<ListView
android:id=”@+id/lstWords”
android:layout_width=”fill_parent”
android:divider=”#ddd”
android:dividerHeight=”1px”
android:paddingBottom=”67dp”
android:layout_height=”fill_parent” />
Code:
static final String[] words = new String[]{ “Hello”, “World” };
lstWords = (ListView)findViewById(R.id.lstWords);
lstWords.setAdapter
new ArrayAdapter<String>(this.getApplicationContext(),R.id.list_content,words));
Basic Android Layouts and Views
! FrameLayout: This is very simplistic and can really contain only a single UI element. You
can, in fact, have multiple elements but they overlap each other by default.
The example code shown here is rendered in Figure 6-17:
FIGURE 6!16: Major UI elements all
together
c06.indd 166c06.indd 166 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 167
<?xml version=”1.0” encoding=”utf-8”?>
<FrameLayout
android:id=”@+id/frameLayout”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
xmlns:android=”http://schemas.android.com/apk/res/android”>
<EditText
android:id=”@+id/widget46”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”EditText”
android:textSize=”18sp” />
</FrameLayout>
This is a simple FrameLayout that contains a single EditText widget with the text “EditText.”
LinearLayout: This lays out your UI elements along a given direction: horizontal or vertical.
Figure 6-18 is a linear layout, which contains four consecutive TextView widgets along the vertical.
FIGURE 6!17: FrameLayout
rendered
FIGURE 6!18: LinearLayout
rendered
Example:
<?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout
android:id=”@+id/widget59”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical”
xmlns:android=”http://schemas.android.com/apk/res/android”>
c06.indd 167c06.indd 167 28/07/12 6:01 PM28/07/12 6:01 PM
168 " CHAPTER 6 GETTING STARTED WITH ANDROID
<TextView
android:id=”@+id/widget60”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:background=”#ffaa0000”
android:layout_marginTop=”5dp”
android:layout_marginLeft=”5dp”
android:text=”red” />
<TextView
android:id=”@+id/widget63”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:background=”#ffaaaa00”
android:layout_marginTop=”5dp”
android:layout_marginLeft=”5dp”
android:text=”yellow” />
<TextView
android:id=”@+id/widget64”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:background=”#ff00aa00”
android:layout_marginTop=”5dp”
android:layout_marginLeft=”5dp”
android:text=”green” />
<TextView
android:id=”@+id/widget65”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:background=”#ff0000aa”
android:layout_marginTop=”5dp”
android:layout_marginLeft=”5dp”
android:text=”blue” />
</LinearLayout>
! TableLayout: Think tables in HTML and this is the type of organization you get with this
layout. TableLayouts contain rows and columns, representing a grid, and you can put other
UI elements into it. The following code results in a table with two rows, each with two cells,
and is visualized in Figure 6-19:
<?xml version=”1.0” encoding=”utf-8”?>
<TableLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:stretchColumns=”1”>
<TableRow>
<TextView
android:text=”Hello”
android:padding=”3dip” />
<TextView
android:text=”World”
android:gravity=”right”
android:padding=”3dip” />
</TableRow>
c06.indd 168c06.indd 168 28/07/12 6:01 PM28/07/12 6:01 PM
Getting the Tools You Need " 169
<TableRow>
<TextView
android:text=”Goodbye”
android:padding=”3dip” />
<TextView
android:text=”User”
android:gravity=”right”
android:padding=”3dip” />
</TableRow>
</TableLayout>
! RelativeLayout: This is the most complex layout of the
four mentioned in this section. You specify relationships
between UI elements to lay out your interface.
The following code represents a simple form with a
TextView acting as a label for a blank EditText widget,
with Cancel and OK widgets docked …
Getting Started with iOS
WHAT’S IN THIS CHAPTER?
! History of iOS
! Getting an iOS development setup
! Objective-C Basics
! iOS Project Basics
! Implementing the Derby App
This chapter is not intended to make you an expert iOS/Objective-C/Cocoa Touch developer;
it’s intended to give you an idea of what it takes to create a mobile application on the iOS
platform. In our everyday interaction with developers, we have found that many developers
dread learning Objective-C, the native language used to create iOS applications. At technical
conferences, we have often sat in on beginning-level sessions on how to develop iOS applications,
where the presenter has said, “This is very diffi cult, you don’t want to do it.” We have no
idea why some of the developer community thinks this way. Code is code (unless you are
working with a functional language, but that’s a topic for a different day). Learning a new
programming language/framework takes time and a bit of passion — if you are reading this
book, we have no doubt in our mind that you can obtain some more Objective-C resources
and have what you need to become an Objective-C developer.
THE IPHONE CRAZE
The fi rst iPhone was revealed at the Mac World conference in early January 2007, and later
released in June of that year. Initially, third-party native applications were not allowed. Apple
executives argued that developers could build web (HTML/CSS) applications that would
7
c07.indd 183c07.indd 183 28/07/12 6:02 PM28/07/12 6:02 PM
184 " CHAPTER 7 GETTING STARTED WITH IOS
behave like native iPhone apps. Developers pushed back, and in October 2007 Apple announced an
SDK that allowed developers to create native iPhone applications. Many argue that Apple’s
decision to allow developers to create native applications was based on the fact that the Android
platform was going to be hitting the market soon, and was an extremely open and fl exible platform
in which developers could do things that they could not within iOS. The decision to allow native
apps within iOS created a new business model for developers, where small projects after work
hours have turned into full-fl edged companies. As of February 2012, the Apple App Store
contained more than 725,700 applications, which have collectively been downloaded more than
25 billion times.
Since June 2007, iPhones have helped drive the mobile boom. Apple converted a generation of iPod
users to iPhone users with simple and effective user interface practices, and made its product “cool.”
In May 2010, 59 percent of all mobile web data consumption in the U.S. came from iPhones. The
iPhone was a game changer: a personal organizer, gaming platform, web browser, and a phone all in
one small package.
Apple in Its Beauty
When Steve Jobs introduced the world to the iPhone he proclaimed it as a revolutionary product
that would change everything, with a brand-new “multi-touch” interface as breakthrough and as
breathtaking as the mouse interface that was introduced in the 1960s. We agree with this statement,
and feel that it was the iPhone that kick-started the mobile boom. The iPhone was marketed to
consumers, and its ease of use made just about everybody want one.
At the time of its release, the core uniqueness of the iPhone went far beyond its web browser and
tightly integrated web functionality. It was six core ideas (outlined in the following list) that changed
software applications and websites. Although there were “smartphones” on the market at the time
of release of the iPhone, it was not until after the iPhone was released that smartphone manufacturers
realized the importance of all of these features being combined to provide a great mobile
development platform.
Always on the Internet: A platform that had Internet access wherever cell phone coverage
was available opened the door for a new type of application to be developed. Without this
functionality, applications such as foursquare (an app that allows you to “check in” to
locations) would not exist. This core concept is easy for developers to develop for; the most
diffi cult part is coming up with an application idea.
Location-aware: The iPhone also introduced a platform that could detect where you were
based on your location. Apart from privacy concerns, this feature has been well received
in the developer and user community. Whether it’s a mapping application or an application
that lets you tag photos with your location, this feature opened tremendous opportunity for
developers to develop location-based apps that did not have to run on a standalone GPS.
Orientation-aware: In addition to location awareness, the iPhone offered a platform that
could now detect where in space the device existed. The app that made this feature popular
is Urbanspoon. Urbanspoon displays a random restaurant in your area based on criteria
c07.indd 184c07.indd 184 28/07/12 6:03 PM28/07/12 6:03 PM
that you set. If you do not like the restaurant that it picks, you can “shake” the phone and
it will choose another one. This is a new type of UI feature that makes interfaces easier
to use.
The mobile gaming industry has also taken full advantage of the iPhone’s orientation
awareness, releasing many games that allow you use the device as the control stick; for
example, moving the iPhone left and right in a race car game makes the car turn left and
right, making it feel as though you are actually using a steering wheel.
Innovative input: The iPhone also represented a platform that could detect multiple
fi ngers as input, as well as a wide range of gestures such as swipe up, swipe down, tap, dou-
ble tap, and so on. With new input types, new UI patterns emerged helping make the small
screen of the mobile device easier to deal with.
High-quality, scalable screen: A huge selling point for the iPhone is its high-resolution
screen on which movies and photos can be viewed with stunning picture quality.
Power consciousness: Because the iPhone runs on battery, you as a developer need to watch
the power consumption of your application. Loops within your code can cause the CPU to
work hard, and when the CPU works hard it takes more power, causing your application
to drain the device’s battery, which could result in negative comments from users. Years
ago, developers worked to keep the size of applications small; for mobile development, you
should pay close attention to how an application is coded, and ensure it doesn’t use too
much power.
Apple Devices
Throughout the years, Apple has produced many different types of mobile devices. From the iPod
classic to the iPhone, Apple has created great products, but has not always opened these products
up for developers to create apps for or modify them. For the purpose of this chapter, we are going to
discuss iPhone, iPod touch, and the iPad. Although each of these devices runs a version of iOS, it’s
important to note that older devices may not be able to run the latest version of iOS. For example, if
your company tasked you with creating an app for your sales department and the entire sales team
had iPhone 3Gs, you could not take advantage of the great features in iOS 5.0, because these devices
run only in iOS 4.2.1 and below.
iPhone
The iPhone may well be the reason why you are reading this book. Since its introduction in
2007, the iPhone has helped fuel the mobile boom that is currently underway. It has been the thorn
in the side of many IT departments, from networking issues (employees bringing their own devices to
work, which raises security concerns) to development issues (making your applications run on iOS).
From 2007 to December 2011 fi ve devices have been released. It’s important to understand the close
relationship between the iOS hardware and software. Meaning, not all versions of iOS will run on
all iOS hardware. As device hardware becomes dated, Apple stops releasing iOS updates. Table 7-1
shows iOS hardware with the version of iOS that shipped with the device and the maximum version
that can be installed on the device.
The iPhone Craze " 185
c07.indd 185c07.indd 185 28/07/12 6:03 PM28/07/12 6:03 PM
186 " CHAPTER 7 GETTING STARTED WITH IOS
TABLE 7!1 iPhone Hardware and iOS Versions
DE VICE SHIPPE D IOS VE RSION MA X IOS VE RSION
iPhone iOS 1.0 iOS 3.1.3
iPhone 3G iOS 2.0 iOS 4.2.1
iPhone 3GS iOS 3.0
iPhone 4 iOS 4.0
iPhone 4S iOS 5
iPod Touch
After the release the original iPhone, Apple added a new product to the iPod product line: the iPod
touch. This device was built on iPhone technology, looked identical to the iPhone, and used the same
480 ! 320 multitouch screen, but it was not a phone. This was a great option for consumers who
wanted the iPhone experience, but did not want to pay the fees for a cell phone contract. Because of
its lack of cellular connectivity, this device could access the Internet only through a wireless Internet
connection. Table 7-2 shows iOS hardware with the version of iOS that shipped with the device and
the maximum version that can be installed on the device.
TABLE 7!2 iPod touch Hardware and iOS Versions
DE VICE SHIPPE D IOS VE RSION MA X IOS VE RSION
1st generation iOS 1.1 iOS 3.1.3
2nd generation iOS 2.1.1 iOS 4.2.1
3rd generation iOS 3.1.1
4th generation iOS 4.1
iPad
Introduced in January of 2010, the iPad was another revolutionary product from Apple. When the
iPad was fi rst released, many argued it was just a big iPod touch, which was partially true. You
could purchase a cellular data plan so that the device could access data but not phone service. The
same great UI that made the iPhone and iPod Touch famous was now available with a 1024 ! 768
screen size.
The iPad pushed the mobile boom even more, with many industries seeing the benefi t that a tablet
computer could provide. With two models containing different data storage sizes and access to
cellular data, the iPad is leading the way in tablet computing. Table 7-3 shows iOS hardware with
the version of iOS that shipped with the device and the maximum version that can be installed on
the device.
c07.indd 186c07.indd 186 28/07/12 6:03 PM28/07/12 6:03 PM
Getting the Tools You Need " 187
TABLE 7!3 iPad Hardware and iOS Versions
DE VICE SHIPPE D IOS VE RSION MA X IOS VE RSION
iPad iOS 3.2
iPad 2 iOS 4.3
iPad 3 iOS 5.1
GETTING THE TOOLS YOU NEED
Developing for iOS is not a matter of opening up your favorite text editor and going to town. You
may need to do a bit of planning, with the fi rst (and most expensive) being hardware. Depending
on your development intentions you may need to pay Apple for the honor of being an iOS developer
as well.
Hardware
Oftentimes we are asked, “Do I really need to have a Mac?” The answer is yes. To develop iPhone,
iPod, and iPad applications you must have a Mac. The iPhone SDK runs only on Mac OS X. The
only sanctioned hardware for iPhone, iPod, and iPad development is an Intel-based Macintosh.
If you are having a hard time justifying the cost of the hardware, we have had great luck with
getting refurbished machines direct from Apple at the following URL:
http://store.apple.com/us/browse/home/specialdeals/mac
Because we work in many different languages and platforms each day, all of the developers we work
with have Mac computers. The developers we work with mainly in .NET like to say the Macs are
the best Windows machines they have ever had.
Program Levels
If you do not have an Apple Developer account, you can create a free account at https://
developer.apple.com/. Having the Apple Developer account allows you to create iOS applications
and run them locally on your machine using the iOS Simulator. To deploy applications you have created
to a physical device (iPhone, iPad, iPod Touch) you must belong to the iOS Developer program. This
is where the money comes in. These programs and prices change from time to time, so please use
the following only as a guide, and check https://developer.apple.com/programs/start/ios/
before making any mission-critical decisions.
iOS Developer Program
This program level allows developers to distribute apps in the App Store as an individual, a sole
proprietor, a company, an organization, a government entity, or an educational institution. The cost
for this program is $99 a year, and you are allowed to name 100 devices within your iOS Developer
account (which is covered in the device section of this chapter).
c07.indd 187c07.indd 187 28/07/12 6:03 PM28/07/12 6:03 PM
188 " CHAPTER 7 GETTING STARTED WITH IOS
iOS Developer Enterprise Program
This program level allows developers to develop proprietary apps for internal distribution within
your company, organization, government entity, or educational institution. The cost for this
program is $299 a year. This level of the program will not allow you to distribute apps through the
App store, but allows ad hoc distributions (distribute directly to a device without using the App
Store) to devices in your organization. A valid Dun & Bradstreet (DUNS) number is required, and
this program level will take a little bit longer to get enrolled in. We have seen this process take well
over a month before acceptance into the program.
iOS Developer University Program
This program level allows higher-education institutions to create teams of up to 200 developers that
can develop iOS applications. This program level is free, and allows for programs to be tested on
physical devices, but does not allow for ad hoc or App Store deployment.
The iOS Provisioning Portal
No matter which level of Apple Developer program you registered for, you will have access to the
iOS Provisioning Portal. This is the section of the iOS Developer Center that allows you to create
the fi les necessary to deploy development and distribution (production) builds onto physical devices.
Certifi cates
During the development process of your iOS app, you will more than likely create both a development
and a distribution certifi cate. These certifi cates are used to digitally sign the app, and verify you are
who you say you are. Figure 7-1 shows the iOS Provisioning Portal Certifi cate section, found within the
iOS developer account web interface; here both development and distribution certifi cates are created.
FIGURE 7!1: iOS Provisioning Portal certifi cates
c07.indd 188c07.indd 188 28/07/12 6:03 PM28/07/12 6:03 PM
Getting the Tools You Need " 189
App IDs
Each iOS application that you create (that you intend to deploy to a device) needs to be identifi ed on
the App IDs section of the iOS Provisioning Portal. The app ID that is created is a unique ID that
contains a number from Apple and then a bundle identifi er that you specify. The bundle identifi er is
usually in the format com.companyname.appname. As you start to develop more applications, they
tend to become messy in this interface, as shown in Figure 7-2.
FIGURE 7!2: iOS Provisioning Portal App IDs
Devices
The Devices section in the iOS Provisioning Portal section allows developers to maintain a list of
devices in which their iOS applications will be developed. These are the devices that are either used
for testing your app or for ad-hoc deployments. The number of devices that you can register on this
screen relates to the type of Apple Developer account level you selected. For example, if you registered
at the iOS Developer level, you will be able to add 100 devices. This number is 100 per year, meaning
if you add 100 devices and then delete 10, you are still out of spaces for accounts until you re-enroll
in the program the following year, which will still only have a maximum of 100 devices.
This can become problematic if you are developing iOS applications for multiple customers who
have not set up accounts for themselves. It’s important to manage and plan ahead for the amount
of devices you will need. Figure 7-3 shows that there is room for only 16 more devices in this
account.
c07.indd 189c07.indd 189 28/07/12 6:03 PM28/07/12 6:03 PM
190 " CHAPTER 7 GETTING STARTED WITH IOS
Provisioning Files
After the certifi cate, the app ID, and devices have been created/added, you can then create a provi-
sioning profi le. The provisioning profi le combines the information about which apps/certifi cates can
be installed on which devices. As with certifi cates there will be a Development and Distribution
version. Figure 7-4 shows the Provisioning section within the iOS Provisioning Portal.
FIGURE 7!3: iOS Provisioning Portal provisioning devices
FIGURE 7!4: iOS Provisioning Portal Provisioning Profi le
c07.indd 190c07.indd 190 28/07/12 6:03 PM28/07/12 6:03 PM
Getting the Tools You Need " 191
FIGURE 7!5: iOS Dev Center
With all of the Apple administrative tasks complete with regard to setting up an account and obtaining
provisioning profi les and certifi cates, you can move on to installing the xCode IDE and starting to
work with the iOS SDK.
xCode and the iOS SDK
To create native iOS applications, you will need to install both the xCode IDE as well as the iOS SDK.
Although you can obtain xCode by using the App Store within Mac OS X, we recommend download-
ing xCode and the SDK from the downloads section in the iOS Dev Center as shown in Figure 7-5.
Installation
After you follow the steps to install xCode, you should have the xCode IDE as well as a great deal
of other useful development tools installed to /Developer/Applications, as shown in Figure 7-6.
c07.indd 191c07.indd 191 28/07/12 6:03 PM28/07/12 6:03 PM
192 " CHAPTER 7 GETTING STARTED WITH IOS
FIGURE 7!7: xCode startup screen
FIGURE 7!6: Development tools
You can start xCode from this directory or by using spotlight. After you start xCode, you should
see a screen similar to the one shown in Figure 7-7.
Components of the iPhone SDK
The iPhone SDK includes a great number of tools that help create iOS for apps. These tools range
from debugging and profi ling to developing. This section lists the most common tools that we
use that are included in the iOS SDK.
c07.indd 192c07.indd 192 28/07/12 6:03 PM28/07/12 6:03 PM
iOS Project " 193
xCode
xCode is Apple’s Integrated Development Environment (IDE) for creating Objective-C
applications. xCode enables you to manage, author, and debug your Objective-C projects.
Dashcode
Dashcode is an IDE that enables you to develop web-based iPhone/iPad applications and Dashboard
widgets. This product is not in the scope of this book as it is considered an advanced topic.
iPhone Simulator
This tool provides a method to simulate an iPhone or iPad device on your Mac, for use with testing
your iOS applications.
Interface Builder
The Interface Builder, or IB, is a visual editor that is used for designing the user interface for your
iOS application.
Instruments
Instruments is a suite of tools that helps you analyze your iOS application and monitor for performance
bottlenecks as well as memory leaks in real time while attached to an iOS device or iOS Simulator.
The iOS Human Interface Guideline
The iOS Human Interface Guideline (HIG) document is one of the most valuable tools to the iOS
developer. The iOS HIG describes guidelines and principles that help the iOS developer design a
superlative user interface and user experience. It is very important for new iOS developers to read
through this document; if you do not develop using the UI principles found in the HIG, your
application could be rejected when submitted to the Apple App Store.
The UI standards that Apple puts in place for developers can cause heated conversation. One side of
the argument is that developers are locked into obeying a set of rules that cost time and money to
learn and implement. The other side of the argument is that Apple has provided a standard UI for
applications that have been created for the platform, thus giving the user a great experience no
matter who creates the app.
You can fi nd the iOS HIG at http://developer.apple.com/library/ios/#documentation/
UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html#/apple_ref/
doc/uid/TP40006556.
With the xCode IDE and iOS SDK installed, you can now examine what exactly makes up an iOS
project with respect to fi les and code.
IOS PROJECT
By now you may be thinking that you need to follow a lot of steps before you start creating an iOS
application. This may be the reason many seasoned iOS developers try to steer new developers from
the platform. Although it takes a lot of steps to get going, they are not complicated or diffi cult; it’s
just a matter of learning them and why they exist, which is covered in the remainder of this chapter.
c07.indd 193c07.indd 193 28/07/12 6:03 PM28/07/12 6:03 PM
194 " CHAPTER 7 GETTING STARTED WITH IOS
With all of the “setup” out of the way, we can focus on getting into the IDE and looking at code.
Anatomy of an iOS App
iOS .app fi les, the fi les that are actually deployed to the iOS device, are just a set of directories.
Although there is an actual binary for the iOS application, you can open the .app fi le and fi nd the
images, meta data, and any other resources that are included.
Views
iPhone apps are made up of one or more views. Views usually have GUI elements such as text fi elds,
labels, buttons, and so on. You can build a view built using the Interface Builder tool, which enables
you to drag and drop controls on the view, or you can create a view entirely with code.
Code That Makes the Views Work
Because iOS applications follow the MVC design pattern, there is a clean break between the UI and
code that provides the application code.
Resources
Every iOS application contains an icon fi le, an info.plist fi le that holds information about the
application itself and the binary executable. Other resources such as images, sounds, and video are
also classifi ed as resources.
Project Structure in Depth
When an iOS project is created within xCode, the IDE creates a set of fi les
that are ready to run. These fi les provide the basics of what is needed to get
going with a new project. Figure 7-8 shows the fi les that are created for a
new project named DeleteMe.
Main.m
As with any C program, the execution of Objective-C applications start
from the main() function, which is the main.m fi le.
AppDelegate.m
The AppDelegate receives messages from the application object during the
lifetime of your application. The AppDelegate is called from the operating
system, and contains events such as the didFinishLaunchingWithOptions,
which is an event that iOS would be interested in knowing about.
MainStoryBoard.storyboard
This is where the user interface is created. In past versions of xCode/iOS the user interface was
stored within .xib (pronounced NIB) fi les. Although this method is still supported, Storyboards are
a great improvement over .xib fi les for applications with complex navigation and many views.
FIGURE 7!8: Anatomy
of an iOS app
c07.indd 194c07.indd 194 28/07/12 6:03 PM28/07/12 6:03 PM
iOS Project " 195
FIGURE 7!9: Project Navigator
Supporting Files
The supporting fi les directory contains fi les such as the plist setting fi les (which contain customiz-
able application settings), as well as string resource fi les that are used within your app.
Getting to Know the xCode IDE
It’s important to use the correct tool for the job, regardless of whether you are constructing a house
or constructing an application. If you are new to xCode, there will be a bit of a learning curve to
becoming profi cient with the IDE, but xCode is a top-notch IDE with many features for you to discover.
Navigators
The left side of the xCode window is known as the navigator area. A variety of navigators enable
you to list the contents of your project, fi nd errors, search for code, and more. The remainder of this
section introduces the Project Navigator, the Search Navigator, and the Issue Navigator.
Going from left to right, the project navigator is the fi rst of the xCode navigators; the icon looks
like a fi le folder. The Project Navigator simply shows the contents of your project or workspace, as
shown in Figure 7-9. Double-clicking a fi le in the Project Navigator opens the fi le in a new window,
and single-clicking opens the fi le within the xCode workspace.
c07.indd 195c07.indd 195 28/07/12 6:03 PM28/07/12 6:03 PM
196 " CHAPTER 7 GETTING STARTED WITH IOS
FIGURE 7!10: Search Navigator
The Issue Navigator lists project warnings and errors in real time as you make mistakes. This navi-
gator shows any issues preventing your code from compiling, as shown in Figure 7-11.
The Search Navigator helps you locate text within your project or workspace as shown in
Figure 7-10.
c07.indd 196c07.indd 196 28/07/12 6:03 PM28/07/12 6:03 PM
iOS Project " 197
FIGURE 7!11: Issue Navigator
Storyboards
In iOS versions prior to iOS 5, developers needed to create a separate XIB fi le for each view of their
application. A XIB fi le is an XML representation of your controls and instance variables that get
compiled into the application. Managing an application that contains more than a few views could
get cumbersome.
iOS 5 contained a new feature called storyboards that enables developers to lay out their workfl ow
using design tools built within xCode. Apps that use navigation and tab bars to transition between
views are now much easier to manage, with a visual representation of how the app will fl ow.
Transitions and segues are used to switch between views, without ever having to code them
by hand.
c07.indd 197c07.indd 197 28/07/12 6:03 PM28/07/12 6:03 PM
198 " CHAPTER 7 GETTING STARTED WITH IOS
With Storyboards, you will have a better conceptual overview of all the views in your app and
the connections between them. Figure 7-12 is an example of a Storyboard for an application that
contains a tab bar for navigation to three other views. Segues are the arrows that connect the views.
FIGURE 7!12: Sample Storyboard
c07.indd 198c07.indd 198 28/07/12 6:03 PM28/07/12 6:03 PM
Debugging iOS Apps " 199
DEBUGGING IOS APPS
A bug discovered in the fi eld is much more expensive to fi x than bugs that are found on a developer’s
machine or during the quality assurance process. Modern-day IDEs provide a great deal of tooling
that helps developers fi nd issues in their code before it reaches production.
The iOS Simulator
Developers use the iOS Simulator as their fi rst way of fi nding issues with the code they just created.
The iOS Simulator enables developers to run their iOS applications on their Macs without having
to have a physical iOS device. The Simulator is a great tool for testing your apps quickly. The iOS
Simulator is very quick to load, compared to other simulation tools for other mobile platforms. The
iOS Simulator is also a great tool for HTML/CSS experts to have installed as well to test mobile
webpages rendered within the mobile Safari web browser. Figures 7-13 and 7-14 show the Simulator
simulating an iPhone and iPad, respectively.
The term “debugging” was made popular by Admiral Grace Murray Hopper,
who was working on a Mark II computer at Harvard University in August 1945,
when colleagues discovered a moth stuck in a relay that was causing issues with
the system. She made the comment they were “debugging the system.”
FIGURE 7!13: iOS
Simulator simulating an
iPhone
FIGURE 7!14: iOS
Simulator simulating an
iPad
c07.indd 199c07.indd 199 28/07/12 6:03 PM28/07/12 6:03 PM
200 " CHAPTER 7 GETTING STARTED WITH IOS
By no means is the Simulator the only tool you should use for testing your app. Although the
Simulator is great for testing some things, it lacks in other areas. Not all applications that are avail-
able on a physical iOS device are available within the Simulator. Besides that, memory, performance,
accelerometer, and camera functionality cannot be tested reliably in the Simulator.
One nice feature of the iOS Simulator is the ability to test various iOS versions, as shown in
Figure 7-15.
FIGURE 7!15: iOS Simulator version options
The iOS Simulator is not an emulator. An emulator tries to mimic the behavior
of a real device. The iOS Simulator simulates real behavior of the iOS device,
but relies on various libraries that are installed on the Mac, such as QuickTime,
to perform renderings so that it looks like an actual iPhone. Applications that
are deployed to the iOS Simulator are compiled to x86 code, whereas on a real
iOS device the code would be compiled to ARM-based code.
Debugging Code
As with many modern-day IDEs, Apple and the xCode team have put a great deal of time and effort
into creating a set of tools to aid developers in their quest for hunting bugs.
When it boils down to it, developers want tools that make their life easier — tools to step through
the code, view log messages, as well as see the state of their variables. xCode provides tools for these
features, and much more.
c07.indd 200c07.indd 200 28/07/12 6:03 PM28/07/12 6:03 PM
Debugging iOS Apps " 201
The debugging tools within xCode are located at the bottom of the workspace window. If you do
not see the debugging tools, you can click View # Debug Area # Show Debug Area from the xCode
menu (see Figure 7-16) to make the …
CATEGORIES
Economics
Nursing
Applied Sciences
Psychology
Science
Management
Computer Science
Human Resource Management
Accounting
Information Systems
English
Anatomy
Operations Management
Sociology
Literature
Education
Business & Finance
Marketing
Engineering
Statistics
Biology
Political Science
Reading
History
Financial markets
Philosophy
Mathematics
Law
Criminal
Architecture and Design
Government
Social Science
World history
Chemistry
Humanities
Business Finance
Writing
Programming
Telecommunications Engineering
Geography
Physics
Spanish
ach
e. Embedded Entrepreneurship
f. Three Social Entrepreneurship Models
g. Social-Founder Identity
h. Micros-enterprise Development
Outcomes
Subset 2. Indigenous Entrepreneurship Approaches (Outside of Canada)
a. Indigenous Australian Entrepreneurs Exami
Calculus
(people influence of
others) processes that you perceived occurs in this specific Institution Select one of the forms of stratification highlighted (focus on inter the intersectionalities
of these three) to reflect and analyze the potential ways these (
American history
Pharmacology
Ancient history
. Also
Numerical analysis
Environmental science
Electrical Engineering
Precalculus
Physiology
Civil Engineering
Electronic Engineering
ness Horizons
Algebra
Geology
Physical chemistry
nt
When considering both O
lassrooms
Civil
Probability
ions
Identify a specific consumer product that you or your family have used for quite some time. This might be a branded smartphone (if you have used several versions over the years)
or the court to consider in its deliberations. Locard’s exchange principle argues that during the commission of a crime
Chemical Engineering
Ecology
aragraphs (meaning 25 sentences or more). Your assignment may be more than 5 paragraphs but not less.
INSTRUCTIONS:
To access the FNU Online Library for journals and articles you can go the FNU library link here:
https://www.fnu.edu/library/
In order to
n that draws upon the theoretical reading to explain and contextualize the design choices. Be sure to directly quote or paraphrase the reading
ce to the vaccine. Your campaign must educate and inform the audience on the benefits but also create for safe and open dialogue. A key metric of your campaign will be the direct increase in numbers.
Key outcomes: The approach that you take must be clear
Mechanical Engineering
Organic chemistry
Geometry
nment
Topic
You will need to pick one topic for your project (5 pts)
Literature search
You will need to perform a literature search for your topic
Geophysics
you been involved with a company doing a redesign of business processes
Communication on Customer Relations. Discuss how two-way communication on social media channels impacts businesses both positively and negatively. Provide any personal examples from your experience
od pressure and hypertension via a community-wide intervention that targets the problem across the lifespan (i.e. includes all ages).
Develop a community-wide intervention to reduce elevated blood pressure and hypertension in the State of Alabama that in
in body of the report
Conclusions
References (8 References Minimum)
*** Words count = 2000 words.
*** In-Text Citations and References using Harvard style.
*** In Task section I’ve chose (Economic issues in overseas contracting)"
Electromagnetism
w or quality improvement; it was just all part of good nursing care. The goal for quality improvement is to monitor patient outcomes using statistics for comparison to standards of care for different diseases
e a 1 to 2 slide Microsoft PowerPoint presentation on the different models of case management. Include speaker notes... .....Describe three different models of case management.
visual representations of information. They can include numbers
SSAY
ame workbook for all 3 milestones. You do not need to download a new copy for Milestones 2 or 3. When you submit Milestone 3
pages):
Provide a description of an existing intervention in Canada
making the appropriate buying decisions in an ethical and professional manner.
Topic: Purchasing and Technology
You read about blockchain ledger technology. Now do some additional research out on the Internet and share your URL with the rest of the class
be aware of which features their competitors are opting to include so the product development teams can design similar or enhanced features to attract more of the market. The more unique
low (The Top Health Industry Trends to Watch in 2015) to assist you with this discussion.
https://youtu.be/fRym_jyuBc0
Next year the $2.8 trillion U.S. healthcare industry will finally begin to look and feel more like the rest of the business wo
evidence-based primary care curriculum. Throughout your nurse practitioner program
Vignette
Understanding Gender Fluidity
Providing Inclusive Quality Care
Affirming Clinical Encounters
Conclusion
References
Nurse Practitioner Knowledge
Mechanics
and word limit is unit as a guide only.
The assessment may be re-attempted on two further occasions (maximum three attempts in total). All assessments must be resubmitted 3 days within receiving your unsatisfactory grade. You must clearly indicate “Re-su
Trigonometry
Article writing
Other
5. June 29
After the components sending to the manufacturing house
1. In 1972 the Furman v. Georgia case resulted in a decision that would put action into motion. Furman was originally sentenced to death because of a murder he committed in Georgia but the court debated whether or not this was a violation of his 8th amend
One of the first conflicts that would need to be investigated would be whether the human service professional followed the responsibility to client ethical standard. While developing a relationship with client it is important to clarify that if danger or
Ethical behavior is a critical topic in the workplace because the impact of it can make or break a business
No matter which type of health care organization
With a direct sale
During the pandemic
Computers are being used to monitor the spread of outbreaks in different areas of the world and with this record
3. Furman v. Georgia is a U.S Supreme Court case that resolves around the Eighth Amendments ban on cruel and unsual punishment in death penalty cases. The Furman v. Georgia case was based on Furman being convicted of murder in Georgia. Furman was caught i
One major ethical conflict that may arise in my investigation is the Responsibility to Client in both Standard 3 and Standard 4 of the Ethical Standards for Human Service Professionals (2015). Making sure we do not disclose information without consent ev
4. Identify two examples of real world problems that you have observed in your personal
Summary & Evaluation: Reference & 188. Academic Search Ultimate
Ethics
We can mention at least one example of how the violation of ethical standards can be prevented. Many organizations promote ethical self-regulation by creating moral codes to help direct their business activities
*DDB is used for the first three years
For example
The inbound logistics for William Instrument refer to purchase components from various electronic firms. During the purchase process William need to consider the quality and price of the components. In this case
4. A U.S. Supreme Court case known as Furman v. Georgia (1972) is a landmark case that involved Eighth Amendment’s ban of unusual and cruel punishment in death penalty cases (Furman v. Georgia (1972)
With covid coming into place
In my opinion
with
Not necessarily all home buyers are the same! When you choose to work with we buy ugly houses Baltimore & nationwide USA
The ability to view ourselves from an unbiased perspective allows us to critically assess our personal strengths and weaknesses. This is an important step in the process of finding the right resources for our personal learning style. Ego and pride can be
· By Day 1 of this week
While you must form your answers to the questions below from our assigned reading material
CliftonLarsonAllen LLP (2013)
5 The family dynamic is awkward at first since the most outgoing and straight forward person in the family in Linda
Urien
The most important benefit of my statistical analysis would be the accuracy with which I interpret the data. The greatest obstacle
From a similar but larger point of view
4 In order to get the entire family to come back for another session I would suggest coming in on a day the restaurant is not open
When seeking to identify a patient’s health condition
After viewing the you tube videos on prayer
Your paper must be at least two pages in length (not counting the title and reference pages)
The word assimilate is negative to me. I believe everyone should learn about a country that they are going to live in. It doesnt mean that they have to believe that everything in America is better than where they came from. It means that they care enough
Data collection
Single Subject Chris is a social worker in a geriatric case management program located in a midsize Northeastern town. She has an MSW and is part of a team of case managers that likes to continuously improve on its practice. The team is currently using an
I would start off with Linda on repeating her options for the child and going over what she is feeling with each option. I would want to find out what she is afraid of. I would avoid asking her any “why” questions because I want her to be in the here an
Summarize the advantages and disadvantages of using an Internet site as means of collecting data for psychological research (Comp 2.1) 25.0\% Summarization of the advantages and disadvantages of using an Internet site as means of collecting data for psych
Identify the type of research used in a chosen study
Compose a 1
Optics
effect relationship becomes more difficult—as the researcher cannot enact total control of another person even in an experimental environment. Social workers serve clients in highly complex real-world environments. Clients often implement recommended inte
I think knowing more about you will allow you to be able to choose the right resources
Be 4 pages in length
soft MB-920 dumps review and documentation and high-quality listing pdf MB-920 braindumps also recommended and approved by Microsoft experts. The practical test
g
One thing you will need to do in college is learn how to find and use references. References support your ideas. College-level work must be supported by research. You are expected to do that for this paper. You will research
Elaborate on any potential confounds or ethical concerns while participating in the psychological study 20.0\% Elaboration on any potential confounds or ethical concerns while participating in the psychological study is missing. Elaboration on any potenti
3 The first thing I would do in the family’s first session is develop a genogram of the family to get an idea of all the individuals who play a major role in Linda’s life. After establishing where each member is in relation to the family
A Health in All Policies approach
Note: The requirements outlined below correspond to the grading criteria in the scoring guide. At a minimum
Chen
Read Connecting Communities and Complexity: A Case Study in Creating the Conditions for Transformational Change
Read Reflections on Cultural Humility
Read A Basic Guide to ABCD Community Organizing
Use the bolded black section and sub-section titles below to organize your paper. For each section
Losinski forwarded the article on a priority basis to Mary Scott
Losinksi wanted details on use of the ED at CGH. He asked the administrative resident