Android Upgrade Party for OS updates

Stay organized with collections Save and categorize content based on your preferences.

Upgrade Party is a discovery flow highlighting new features for Android users whenever they receive a major OS upgrade.

A major Android operating system upgrade can be an underwhelming experience for your users. The Upgrade Party flow increases user engagement and helps users understand how to navigate their newly refreshed OS.

After upgrading to the latest OS version, users receive a push notification welcoming them to the new OS and showcasing a card flow with the new features.

To activate Upgrade Party for your device, register using the Request to activate Android Upgrade Party form.

Customize the Upgrade Party experience

You can customize the Upgrade Party experience in the following ways:

  • Remove irrelevant features.
  • Update the language in the text blocks.
  • Modify the animations, colors, and fonts to match your brand.

To customize the flow, review the guidelines in the Upgrade Party Style Guide and include your customization information in the Request to activate Android Upgrade Party form.

Upgrade Party Style Guide

Use this style guide to modify the Upgrade Party look to suit your own brand (screens, colors, fonts). We highly recommend keeping the sizes and the structure close to the original design.

The Upgrade Party flow features the following three components:

  • Intro screen
  • Feature screen
  • Outro screen
Figure 1. The three screen types in the upgrade party flow

An animation on each screen helps explain each feature.

Intro screen

The intro screen contains a short animation that welcomes the user and encourages them to start the flow shown on the intro screen.

Layout
Figure 2. Wireframe layout for the Upgrade Party intro screen

The device animation always consists of:

  • White background and colorful shapes
  • Device frame
  • UI content
Styling

If you choose to adapt Material You styling, you can use the default colors and shapes shown in the example.

Figure 3. Default color scheme for the Upgrade Party flow.

If you use your own brand color, make sure that it works well with the UI background.

Motion

Option 1: With a clock on the home screen

  1. Numbers enter the screen.
  2. Numbers move to the center while decreasing in size. The mobile phone frame appears.
  3. The phone decreases in size. The shapes start to enter the screen.
  4. The animation is completed. The shapes keep moving gently.
Figure 4. Wireframe layout for the Upgrade Party intro screen animation with a clock.
Figure 5. Example animation for the intro screen with a clock.

Option 2: No clock on home screen

  1. The mobile phone enters the screen.
  2. The phone moves to the center while increasing in size. The shapes start to enter the screen.
  3. The phone reaches the maximum size and the shapes keep moving.
Figure 6. Wireframe layout for the Upgrade Party intro screen animation without a clock.
Figure 7. Example animation for the intro screen without a clock.

Feature screen

Each feature screen highlights a feature in the new OS.

Layout
Figure 8. Wireframe layout for the Upgrade Party feature screens.

The device animation always consists of:

  • Colorful background
  • Device frame
  • UI content
Styling
  • Choose a background color that works well with the UI content and with the general appearance.
  • Inside the screens, set font sizes that are readily legible. If needed, set larger font sizes.
Motion

Record an animation of each feature's flow, including touch interactions. Export the recordings as Lottie files.

Outro screen

The outro screen completes the flow. It indicates to the users that they've gone through all the screens.

Layout
Figure 9. Wireframe layout for the Upgrade Party outro screen.

The device animation always consists of:

  • Half circle on the background (plus animated shapes)
  • Device frame
  • UI content
Styling
  • Select a background color that works well with the UI content and with the general appearance.
  • Use a half-circle shape.
Motion

Follow the standard outro screen animation flow:

  1. The mobile phone moves up a bit.
  2. A circle appears in the background.
  3. Shapes come up from behind the mobile phone.
  4. The shapes fly out of the background like confetti.
Figure 10. Wireframe layout for the Upgrade Party outro screen animation.
Figure 11. Example outro screen animation.

Trigger the Upgrade Party with the SDK

By default, the Android OS sends users a push notification showcasing a card flow with the latest features as soon as they upgrade. If you prefer to trigger the flow from your own push notification or an app, use the Android SDK.

Preqrequisites

Make sure that your app's build file uses the following values:

  • minSdkVersion of 14 or higher
  • compileSdkVersion of 28 or higher

Configure your app

  1. Extract the library from the provided Zip file, and place it in your repository.
  2. Add the dependencies for the Google Growth SDK to your module's app-level Gradle file, normally app/build.gradle:

     dependencies {
         implementation files('<PATH_TO_BINARY>/play-services-growth-16.0.0-eap.aar')
     }
    
  3. Include the following libraries as dependencies:

     com.google.android.gms:play-services-base:17.6.0
     com.google.android.gms:play-services-basement:17.6.0
     com.google.android.gms:play-services-tasks:17.2.1
    

Use the API

  1. To initialize a client, use the UpgradeParty class and set the activity parameter.

     import com.google.android.gms.growth.UpgradeParty;
     UpgradeParty.getClient(activity);
    

The resulting UpgradePartyClient exposes the API functionality.

isEligibileForUpgradeParty

Task<Boolean> isEligibleForUpgradeParty();

Returns a Task object that asynchronously verifies if the user is eligible for an Upgrade Party. The resulting boolean value indicates whether the user is eligible or not.

invokeUpgradeParty

Task<Void> invokeUpgradeParty();

Invokes an Upgrade Party Activity. The resulting Task object indicates whether an error occurred when starting the activity.

Errors

Both API methods can fail with an exception of type com.google.android.gms.common.api.ApiException. In such cases, the caller is expected to retry at a later time.

Expected common status codes include:

  • INTERNAL_ERROR: Represents any error in the flow of the underlying logic.
  • TIMEOUT: Shown when the request couldn't be handled in a timely manner.
  • API_NOT_CONNECTED: Means the API isn't available (for example, the UpgradeParty module is not ready yet).
  • DEVELOPER_ERROR: Shown when the calling package isn't allowed to access the UpgradeParty class.

SDK example

See the following example of an app that invokes the SDK:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradePartyButton = findViewById(R.id.__some_button__);
   startUpgradePartyButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradePartyButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeParty()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeParty()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility =
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradePartyButton..setVisibility(visibility);
             }
           });
   }

Test the Upgrade Party flow

Follow these steps to test the Upgrade Party flow your users see when they upgrade the Android OS:

  1. On the test Android device, go to Settings > Google > Upgrade Party debug.
  2. Select Report Upgrade and then Open Upgrade Party. This starts the relevant flow, based on the device OS version. For example, the Android 12 Upgrade Party plays on a device running the Android 12 OS.