Lecture 36 - Wearables

Lecture Date: Monday, April 16

You know what's better than a powerful computer in your pocket that can do a lot of what you do on your laptop? A powerful computer on your wrist that can augment a powerful computer in your pocket that can do a lot of what you do on your laptop!

We will compare and contrast Google's and Apple's strategies, hardware, and software. We will also look at where smartwatches began. We'll also get into wearable, personal computing at large.

Slides - Wearables

more ...



Lecture 35 - Cross-Platform Development

Lecture Date: Friday, April 13

As we discussed in the monetization lecture, determining which platform to build for can be a tricky decision. There are several aspects to consider:

  • Which platform has the most users? Android, definitely.
  • Which platform has more stuff in the app store and makes it harder to find things? Again, Android. Definitely.
  • Which platform is more expensive to develop for? iOS. (Macs are not cheap, plus $100 a year.)
  • Which platform makes the most money for developers? Probably iOS.

So, the answer than many compaines come to is that they need to develop for both Android and iOS to hit more of their market. One way to do this is to have two dedicated teams, one for each platform, that collaborate on requirements and design. This is how many mobile shops like WillowTree opperate.

However, in a large company whose main business is not producing software, there's a desire to optimize the time needed to produce an app. Also, if updates need to occur, it's best to make those changes in one place. Hence the desire for cross-platform development.

Cross-platform development for mobile basically comes in two forms:

  • Build with an API/toolchain that exposes the native SDK of the platform for a single programming language/system (i.e. C# with Xamarin)
  • Build a hybrid HTML5 web app that can execute as an app on the device (i.e. Apache Cordova)

Some tools and links you should look at:

References:

Slides - Cross-Platform

more ...

Lecture 34 - Monetization

Lecture Date: Wednesday, April 11

Let's start by going over the privacy policies you brought in!

Make sure you did the reading for today! - http://toucharcade.com/2015/11/13/paid-games-dont-work-for-developers-heres-why-the-carter-crater/

So, you're gonna make it rich in the app store? (We'll stipulate that making custom apps for a company is a much more stable way to earn a living making mobile apps.)

Let's look at some facts:

  • There are hundreds of thousands of apps in each store
  • The platform holders take up to 30% of your revenue
  • Most of the software costs for mobile apps is up front, i.e before people have paid you

How are you going to get noticed? How are you going to earn enough to make the next app? How do you get the money to make the first app?

Let's start by discussing the differences in the two stores, then get into pricing schemes. Note that the following data is from mid 2014.

Apple App Store

  • Brought in around $10 billion in 2013 alone
  • December 2013 was the best month to date at $1 billion just in this month
  • On average, Apple pulls in about $5.1 million every day
  • In May 2013, the 50 billionth app was downloaded (the downloader won a $10,000 gift card to the app store)
  • In general, the App Store has more apps, less malware, and brings in more money for it's developers and Apple

Spring 2017 Update

  • In 2016, App Store developers earned $20 billion.
  • Since Apple keeps 30%, Apple sold $28 billion in apps.
  • On New Year's Day, Apple said its App Store delivered more than $240 million in purchases.
  • Sales from the App Store topped $3 billion in December with the help of Super Mario Run.
  • The App Store now offers 2.2 million apps, up more than 20 percent from a year ago.
  • Subscription billings in 2016 for the App Store were $2.7 billion.

From: http://www.zdnet.com/article/apples-app-store-2016-revenue-tops-28-billion-mark-developers-net-20-billion/

Google Play Store

  • It is estimated that Google brings in $1.1 million per day
  • Over 2013, the estimate is $1.3 billion in 2013 (13% of what Apple did)
  • The Google Play Store, however, is 75% of all total mobile app downloads worldwide (App Store is 18%)
  • Much larger install base
  • More phones and properties
  • Currently growing at a faster rate than the App Store
  • Most profitable Android apps are doing better than the most profitable iOS apps

Spring 2017 Update

Highlight quotes from the article linked below:

  • 90% of Google Play income came from games.
  • According to App Annie, the average user spent over 150 billion more hours in apps in 2016 than they did in 2015. The number of hours spent in apps totaled nearly 900 billion. That’s good for about a 15% increase overall.
  • Download numbers stopped being the big metric that developers and pundits used to calculate an app’s success. Things like daily active users (DAUs) and time spent in an app became the more important metrics.
  • The number of downloads increased by 13 billion from 2015. Total apps and games downloads were over 90 billion overall. That’s a growth of 15%. Much like 2015, Google Play saw more download growth than Apple. China also contributed about 80% of Apple’s download growth.
  • In 2016, India surpassed the US in overall downloads while Brazil and Indonesia saw good growth. Four of the top five countries in “time spent in apps” were also developing markets.

From: http://www.androidauthority.com/2016-recap-90-percent-google-play-revenue-gaming-fun-stats-743626/

Slides - Monetization

more ...

Lecture 33 - Privacy Policies and Analytics

Lecture Date: Monday, April 9

The idea of analytics is the gathering, processing, and interpreting of data. The concept of analytics is not new (consider any program you have used that asked to send data back to the developers), but the ready capability to do analytics with web services and cloud computing has made it now more easily available to anyone.

We will focus on the Firebase Analytics (https://firebase.google.com/docs/analytics/) platform today, specifically looking at some example Android code.

Let's start by trying to create some data. Download the Android Studio project AnalyticsExample, run it, and press some buttons!

https://github.com/marksherriff/AnalyticsExample

Or, run it on your own Android device (assuming developer mode is on): https://cs4720.cs.virginia.edu/analyticsexample.apk

The code isn't all that exciting... the best part is that we can add events to actions that we want recorded. For instance, when you press the "Feature 1" button, here is what is called:

Toast.makeText(this, "Tychonievich is very smart.  He likes Feature 1.  So you are smart too!", Toast.LENGTH_LONG).show();
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "Feature 1");
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "Feature 1");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);

Let's go see if we can see any of the data: https://console.firebase.google.com

Now that you've seen the system in action, what sort of thing can and should we record about our apps?

There are two vectors to consider: who is using the app and what are they doing in the apps.

Let's start with the what. Software engineers call a profile and likelihood of how often certain features are used an operational profile. Operational profiles are incredibly important to manage how you build and maintain an application. Consider features like print and save in a word processor versus mail merge. Some features simply require more attention because they are going to be used extensively. How do you know what parts of your app people use the most? Wouldn't you want to know that? How would you use that data?

Then there's the who. If you could pair the operational profile with info regarding your users, then your development could be even more targeted. What aspects of a person would you be most interested in?

Some thoughts:

  • age
  • gender
  • interests
  • location
  • returning user vs. new user
  • how long people use the app
  • what device they use
  • what network are they on
  • what else?

What pieces of data would you want from your app to make it successful?

Between the information we gather through sensors and also through analytics procedures, we need to be fully transparent regarding what we do with users' data.

A privacy policy is a document created to go with a product (app, website, etc.) that describes how the product and company behind it will do the following with a customer or client’s data:

  • Gather - how will the app collect it's data; can the user opt-out
  • Use - what will the company do with the data
  • Disclose - will the company give (or sell) the data to other entities
  • Manage - can a user ask for their data "back" or even deleted; how is the data stored; is it archived

We will discuss what should go in a privacy policy, how to create one, and then look at some examples to discuss.

Example policies:

Slides - Privacy

more ...

Lecture 32 - Wireframing

Lecture Date: Friday, April 6

Today you will begin to create a digital wireframe of your final project app. Please upload a PDF copy to the root of your final project repository AND each partner should submit a copy to the appropriate assignment in Collab.

You can use whatever digital tools you would like to create the wireframe. There are dedicated wireframing tools available out there - some free, some pay. You are welcome to explore these options, or use something else, such as Photoshop.

Some of the ones I like are:

You MUST use some digital tool to create your wireframes. Hand drawing it and then taking a picture is not acceptable.

Submissions are due before class begins on Monday morning, where we will discuss some of your wireframes.

No Audio Today

more ...

Lecture 31 - Wireframing

Lecture Date: Wednesday, April 4

Today we will keep working on the movie theater wireframes and will talk about your design decisions as we share the diagrams with the class.

No Audio Today

more ...

Lecture 30 - Wireframing

Lecture Date: Monday, April 2

Now that we have looked at some user interfaces, we're going to discuss how to start making our own.

How do we go about coming up with an interface wireframe?

Make sure to have read the reading for today from developer.android.com!

Step 1. Define the use cases

How are users going to be using your app? What will they want to do? Come up with a list!

Step 2. Create a screen list

Based on the features above, come up with a screen for each feature.

Step 3. Refactor the screens

Now that you have the screens, how can you reorganize or revise them to combine similar features, link things together, etc.

Step 4. Figure out the screen relationships

Which screens are "siblings," in that they appear on the same tab bar and users can flip between them? Which screens are parent/child, such as a list of items and then the details of a particular item? Decide on these relationships and map them out!

Step 5. Plan your navigation and transitions

Where do you have "lateral" navigation between sibling screens? Where do you have "descendent" navigation to child screens? How will you make these transitions? Lay them out on your wireframe! Now, how do you go from one screen to the next? Tabs? Swipe left to right? A list of items? A button? How do you show your current state/location?

Step 6. Plan your reverse navigation

When do you want to go back a screen in the order you opened them, and when do you want to go "up a level" in your navigation tree? When is each appropriate? How do you know what the user wants? (i.e. temporal navigation vs. ancestral navigation)

Step 7. Draw it up!

Physical wireframes are great for getting your ideas down quickly! You can transfer to digital later too for more interactive designs to show clients.

Step "Should do this along the way"

Consider different screen sizes and orientations. You can repeat this process for each permutation as needed or you can do them as you go.

In-Class Activity

Today, you should work with a partner (anyone is fine) to draw a wireframe!

We are going to design an app for people to order food in a movie theater. Let's pretend that in this high-end theater you can order drinks, snacks, and meals right from your seat on your phone and a server will bring it to you. Consider a few things:

  • How would you show the menu?
  • How would you indicate where you are seated? (let's assume the theaters are relatively small and the seats are large with swing-up tables)
  • How would you pay? How would you give a tip?
  • How would the user do all this quickly without distracting people around them?

You can use your imagination to add features/constraints for your design. For instance, you might want to assume people purchased assigned seats in the theater or can link their ticket to the app.

Draw your app on the handouts provided and then you'll be called up front to share your designs!

Example Wireframes

more ...