Showing posts with label Google Analytics. Show all posts
Showing posts with label Google Analytics. Show all posts

Monday, 11 May 2020

Covid-19 impact on mobile applications - a quick case study

Amidst everything that's been going on over the last few months, checking on how my apps have been doing has been low down my priorities. For me creating apps is a hobby, something to keep my skills sharp - it's not my primary business and it's not something I rely upon. Looking at the impact it's had has both been interesting to examine, but also made me concerned for many out there who's income source has undoubtedly been hit incredibly hard by this pandemic. The following details the impact of the virus on my application.

The App
The app in question allows people to countdown to their holidays/vacation. It's a seasonal android application with installs typically growing slowly January through March, then growing quickly through to the end of August, before falling slowly until the end of the year. That makes sense, usually in the new year people plan holidays, as we enter summer people tend to have more holidays and go on more holidays, so I expect the app to get more attention at those times. 



What do the analytics show in the lockdown period of Covid-19?
I'm sure you can imagine. The travel and leisure industry has been put on hold indefinitely right now as a whole. Airlines are laying off huge amounts of staff, hotels are closed, people are restricted from travelling distances depending on where they live. Put simply, nobody is going on holiday or taking vacation time. People aren't booking holidays, they are trying to recoup the money they paid on travel that has been cancelled. 

Whilst there are regional differences, lockdown in the UK and the US seemed to happen in mid-March or at latest early April. The following chart of active users of my app show the drop off around those dates:


The chart makes for some grim reading. When typically active users would grow I've seen a steady drop March through May. I expect this trend to continue. In normal times, I would have expected the active user base to have at least doubled during this period, instead it sits around 50% of where I would have projected. 

What about revenue from the app? Ads are shown in the app which provides a small amount of revenue. The following graph shows the drop in that revenue:


You can see here that revenue falls drastically in mid-March - coinciding with lockdowns across the world. 

I have a relatively new iOS version of the app. The charts for it's new installs follow the exact same trajectory:



What can I conclude from this?
I can safely conclude that people are not planning many holidays right now! The data is as you would predict, but it's good to see it as hard facts. What's more interesting is I have a similar app for counting down to birthdays and the data shows a similar (but not as severe) trend. Are people not as interested in tracking birthdays if they know they can't meet up to celebrate them? 

What next?
My concern with the dip is that it will start a downwards spiral hard to come out of. Imagine the world is back to normal as we enter January 2021, the app will have less active users and reviews, so will in turn be lower down in the app store listing. Maybe it will never pick up again. Alternatively, all similar apps could be in the same position, so they will all be relative in terms of the drop. 

Conclusion
As I set at the outset - for me this is a hobby - a way to see how the industry works. However, it's clear that depending on the app the Covid-19 pandemic could have a major impact on some app developers income. Outside apps, the impact to businesses - from airlines to hotels, restaurants to shops or tour guides must be massive. How these businesses recover from this is unclear - what percentage will recover? The impact of Covid-19 will last long into the future. 


Thursday, 22 January 2015

Real time Google Analytics on the go

As I mention in most of my blog posts analytics is a key part of product development with Google Analytics being the key player in the market. When doing an A/B test knowing who your users are, where they are, when and how they interact with your app, website or blog will help you make informed decisions.

Checking these stats is important so when should you do it? I try to check my stats on the train to work in the morning with using Googles own app.



Take 5 minutes and try and learn from the data in front of you. I frequently can identify mobile devices for example which my apps don't run properly on, as it causes very low duration times and high drop off rates. Maximising what you have is really important!

Sunday, 4 January 2015

Integrating Google Analytics into existing Android app

Analytics are key to measuring the success of your project or application and are a great way of identifying your users trends and demographics. Have you released an app and wondered who your users actually are? Well with analytics you could find out where your users are situated, what ages they are etc. The leader in this field is Google Analytics - this can be embedded into your mobile application, website and even your blog.



After a few frustrating attempts at integrating Google Analytics into an existing app I thought I should post a guide on how to do this.

1. Download the Google play services library and add it to your project.

You can do this by right clicking on the project you want to add analytics to in eclipse, choosing properties and then the Android tab. In the Library section, select Add and choose google-play-services_lib and select Apply.

2. Add the required permissions to AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

These are required so your app can send the analytics content.

3. Add Metadata to your application. This should be added under the application tab.

<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
<meta-data
            android:name="com.google.android.gms.analytics.globalConfigResource"

            android:resource="@xml/global_tracker"/>

We'll add global_tracker later.

4. Create the analytics application helper class.

import com.google.android.gms.analytics.Logger;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.analytics.GoogleAnalytics;

import android.app.Application;

import java.util.HashMap;

public class YourApplication extends Application {

    // The following line should be changed to include the correct property id.
    private static final String PROPERTY_ID = "YOUR_ANALYTICS_ID";

    public static int GENERAL_TRACKER = 0;

    public enum TrackerName {
        APP_TRACKER, // Tracker used only in this app.
        GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
        ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
    }

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

    public YourApplication () {
        super();
    }

    synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
            Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
                    : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(
                            R.xml.global_tracker)
                            : analytics.newTracker(R.xml.ecommerce_tracker);
            t.enableAdvertisingIdCollection(true);
            mTrackers.put(trackerId, t);
        }
        return mTrackers.get(trackerId);
    }

}

5. Update AndroidManfiest.xml to include your application, e.g.:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name=".YourApplication" >

6. Create the tracker xml files. 

Under the res section in your project create an xml folder. Create two xml files in this named ecommerce_tracker.xml and one called global_tracker.xml. Contents below - remember to substitute in your analytics tracking ids. These can be created following instructions here. 

ecommerce_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">60</integer>
    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">**INSERT TRACKING CODE HERE**</string>
</resources>

global_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">300</integer>
    <bool name="ga_autoActivityTracking">true</bool>
    <screenName name="**Path to Your Application e.g. com.company.YourApplication**">**YOUR NAME**</screenName>
    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">** INSERT TRACKING CODE HERE ** </string>
</resources>

Note the trackers are described as follows by Google:  

APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER
, // Tracker used by all the apps from a company. eg: roll-up tracking.
ECOMMERCE_TRACKER
, // Tracker used by all ecommerce transactions from a company.

7. Send the screens

Add the following code to your onCreate method in your activity. This will send the screen views to Google Analytics.

// Get tracker.
Tracker t = ((YourApplication) getApplication()).getTracker(TrackerName.APP_TRACKER);

// Enable Display Features so you can see demographics in Google Analytics
t.enableAdvertisingIdCollection(true);

// Set screen name.
t.setScreenName("** YOUR SCREEN NAME  **");
       
// Send a screen view.
t.send(new HitBuilders.AppViewBuilder().build());

8. Update onStart and onStop

Add the following:

@Override
protected void onStart() {
super.onStart();
GoogleAnalytics.getInstance(this).reportActivityStart(this);
}

@Override
protected void onStop() {
super.onStop();
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}

9. View results in Google Analytics.

You are now done and once users start using your app you should be able to see real time updates in Google Analytics. Note that the analytics aren't exactly real time - but it's good enough! 


Let me know if this helps you out or if you have any further questions and I'll try and help where I can.

EDIT: 11/01/2015 - updated section 7 to allow you to display demographics in Google Analytics.

Covid-19 impact on mobile applications - a quick case study

Amidst everything that's been going on over the last few months, checking on how my apps have been doing has been low down my priorities...