Lecture 41 and 42 - Demo Days

Lecture Date: Friday, December 1 and Monday, December 4

There are two demo days: Friday, December 1 and Monday, December 4. Students are only required to come to their assigned demo day, but are highly encouraged to come to both to see all the projects! ALL project code for both days is due at 10:00 AM on Friday, December 1. ANY change to the code between that time and demo will result in a 0 for the project for both partners.

  • Teams demoing on Friday, December 1: Android teams (Aipom through Spearow)
  • Teams demoing on Monday, December 4: Android teams (Spearow through Yanma) and all iOS teams

When you come to demo, please bring your device and all parts needed to turn it in. You SHOULD NOT wipe the device, but YOU MUST do the following:

  • Android devices: Ensure there are no passwords on the device at all.
  • iOS devices: Ensure that the password is set to 0000. You MUST verify that any iCloud accounts have been removed! Please also go ahead and update to iOS 11 if you have not done so.

I will wipe all devices after grading has been completed.

Please make sure to fill out your partner evaluations when your demo is done!

Partner Eval Form - https://goo.gl/forms/ZnO9aquNQUy9iC4o1

more ...

Lecture 40 - Exam Review

Lecture Date: Wednesday, November 29

We'll do exam review today. Come with your questions! (Or mine, I guess...)

No Audio Today

more ...

Lecture 38 - Wearables

Lecture Date: Monday, November 20

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 36 - AR, VR, and Mobile

Lecture Date: Wednesday, November 15

Why are we doing AR and VR in mobile? Did you see Apple's latest iPhone release? We will look at how AR and VR are changing mobile technology and potential uses.

Slides - AR and VR

more ...

Lecture 35 - Cross-Platform Development

Lecture Date: Monday, November 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:


Slides - Cross-Platform

more ...

Lecture 34 - Monetization

Lecture Date: Friday, November 10

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: Wednesday, November 8

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!


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: Monday, November 6

Today we will look at some more of the movie theater wireframes, along with ones from your final project. We will also look at some professional wireframes from WillowTree.

No Audio Today

more ...