57
Let's your users share your App with Friends: APP INVITES FOR ANDROID

Let's your users share your App with Friends: App Invites for Android

Embed Size (px)

Citation preview

Page 1: Let's your users share your App with Friends: App Invites for Android

Let's your users share your App with Friends:

APP INVITES FOR ANDROID

Page 2: Let's your users share your App with Friends: App Invites for Android

Story Time!

Page 3: Let's your users share your App with Friends: App Invites for Android

@ewilly1Android Developer

Page 4: Let's your users share your App with Friends: App Invites for Android

Why Should I care ?

Page 5: Let's your users share your App with Friends: App Invites for Android
Page 6: Let's your users share your App with Friends: App Invites for Android
Page 7: Let's your users share your App with Friends: App Invites for Android
Page 8: Let's your users share your App with Friends: App Invites for Android

Word of mouth Legacy

Page 9: Let's your users share your App with Friends: App Invites for Android

Word of mouth Legacy

Page 10: Let's your users share your App with Friends: App Invites for Android

Word of mouth Legacy

Page 11: Let's your users share your App with Friends: App Invites for Android

We (USERS) care about

“Happiness only real when shared.”

Christopher McCandless

Page 12: Let's your users share your App with Friends: App Invites for Android

Bad and Good Pattern

Please don’t stalk

Page 13: Let's your users share your App with Friends: App Invites for Android

Bad and Good Pattern

The smart way:

be ready be kind

Page 14: Let's your users share your App with Friends: App Invites for Android

Recap

Page 15: Let's your users share your App with Friends: App Invites for Android

Google App Invite API

Page 16: Let's your users share your App with Friends: App Invites for Android

How does it work ?

Page 17: Let's your users share your App with Friends: App Invites for Android

Let’s add it to our app

Prepare

Setup

Configuration File

Code

Page 18: Let's your users share your App with Friends: App Invites for Android

Prepare

Page 19: Let's your users share your App with Friends: App Invites for Android

Setup manifest<meta-data

android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Page 20: Let's your users share your App with Friends: App Invites for Android

Setup gradleAPP

compile 'com.google.android.gms:play-services-appinvite:8.3.0'

PROJECT

classpath 'com.google.gms:google-services:1.5.0-beta2'

Page 21: Let's your users share your App with Friends: App Invites for Android

Configuration File

Google developer console

Enable App Invite API

SHA-1 key

Download your file

Page 22: Let's your users share your App with Friends: App Invites for Android

Code

Page 23: Let's your users share your App with Friends: App Invites for Android

Code

1. Connect Google Client API with APP Invite Service Enabled2. Start App Invite Intent3. handle the result in the callback4. Check if someone installed the app from an invitation

Page 24: Let's your users share your App with Friends: App Invites for Android

mGoogleApiClient = new GoogleApiClient.Builder(this)

.addApi(AppInvite.API)

.enableAutoManage(this, this)

.build();

Page 25: Let's your users share your App with Friends: App Invites for Android

mGoogleApiClient = new GoogleApiClient.Builder(this)

.addApi(AppInvite.API)

.enableAutoManage(this, this)

.build();

Page 26: Let's your users share your App with Friends: App Invites for Android

mGoogleApiClient = new GoogleApiClient.Builder(this)

.addApi(AppInvite.API)

.enableAutoManage(this, this)

.build();

Page 27: Let's your users share your App with Friends: App Invites for Android

@Overrideprotected void onStart() { super.onStart(); mGoogleApiClient.connect();}

@Overrideprotected void onStop() { super.onStop(); mGoogleApiClient.disconnect();}

Page 28: Let's your users share your App with Friends: App Invites for Android

@Overrideprotected void onStart() { super.onStart(); mGoogleApiClient.connect();}

@Overrideprotected void onStop() { super.onStop(); mGoogleApiClient.disconnect();}

Page 29: Let's your users share your App with Friends: App Invites for Android

public void onConnectionFailed(ConnectionResult connectionResult) { Log.d(TAG, "onConnectionFailed:" + connectionResult); showMessage(getString(R.string.google_play_services_error));}

Page 30: Let's your users share your App with Friends: App Invites for Android

private void onInviteClicked() {

Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))

.setMessage(getString(R.string.invitation_message))

.setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))

.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))

.setCallToActionText(getString(R.string.invitation_cta))

.build();

startActivityForResult(intent, REQUEST_INVITE);

}

Page 31: Let's your users share your App with Friends: App Invites for Android

private void onInviteClicked() {

Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))

.setMessage(getString(R.string.invitation_message))

.setDeepLink(Uri.parse(getString(R.string.invitation_deep_link)))

.setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))

.setCallToActionText(getString(R.string.invitation_cta))

.build();

startActivityForResult(intent, REQUEST_INVITE);

}

Page 32: Let's your users share your App with Friends: App Invites for Android

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

Log.d(TAG, "onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);

if (requestCode == REQUEST_INVITE) {

if (resultCode == RESULT_OK) {

String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);

Log.d(TAG, getString(R.string.sent_invitations_fmt, ids.length));

} else {

showMessage(getString(R.string.send_failed));

}

}

}

Page 33: Let's your users share your App with Friends: App Invites for Android

@Override

protected void onCreate(Bundle savedInstanceState) {

boolean autoLaunchDeepLink = true;

AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)

.setResultCallback(

new ResultCallback<AppInviteInvitationResult>() {

@Override

public void onResult(AppInviteInvitationResult result) {

Log.d(TAG, "getInvitation:onResult:" + result.getStatus());

}

});

}

Page 34: Let's your users share your App with Friends: App Invites for Android

@Override

protected void onCreate(Bundle savedInstanceState) {

boolean autoLaunchDeepLink = true;

AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)

.setResultCallback(

new ResultCallback<AppInviteInvitationResult>() {

@Override

public void onResult(AppInviteInvitationResult result) {

Log.d(TAG, "getInvitation:onResult:" + result.getStatus());

}

});

}

Page 35: Let's your users share your App with Friends: App Invites for Android

@Override

protected void onCreate(Bundle savedInstanceState) {

boolean autoLaunchDeepLink = true;

AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)

.setResultCallback(

new ResultCallback<AppInviteInvitationResult>() {

@Override

public void onResult(AppInviteInvitationResult result) {

Log.d(TAG, "getInvitation:onResult:" + result.getStatus());

}

});

}

Page 36: Let's your users share your App with Friends: App Invites for Android

Recap

Page 37: Let's your users share your App with Friends: App Invites for Android

Numbers matters Let's measure it

Page 38: Let's your users share your App with Friends: App Invites for Android

Overview of Google Analytics API

measure user activity

Collection - Configuration - Processing - Reporting

Page 39: Let's your users share your App with Friends: App Invites for Android

Integrating Google Analytics API to measure your invites

Prepare

Setup

Get tracking Id

Configuration File

Code

Page 40: Let's your users share your App with Friends: App Invites for Android

Prepare

Page 41: Let's your users share your App with Friends: App Invites for Android
Page 42: Let's your users share your App with Friends: App Invites for Android

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

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

<application android:name="AnalyticsApplication">

...

</application>

Page 43: Let's your users share your App with Friends: App Invites for Android

Setup gradleAPP

apply plugin: 'com.google.gms.google-services'

compile 'com.google.android.gms:play-services-analytics:8.3.0'

Page 44: Let's your users share your App with Friends: App Invites for Android

Tracking ID

Create Account

Add a Mobile Project to track -> Tracking ID

Configure Analytics to process App Invites data

Create App Invite DashBoard

Page 45: Let's your users share your App with Friends: App Invites for Android

Configuration File

Google developer console

Enable Analytics API

Download your file

Page 46: Let's your users share your App with Friends: App Invites for Android

Code

1. Create a Tracker2. Generate Event (sent and received invites)

Page 47: Let's your users share your App with Friends: App Invites for Android

Application levelpublic static Tracker tracker() { return tracker;}@Overridepublic void onCreate() { super.onCreate(); analytics = GoogleAnalytics.getInstance(this); tracker = analytics.newTracker(TRACKING-ID); tracker.enableExceptionReporting(true); tracker.enableAdvertisingIdCollection(true); tracker.enableAutoActivityTracking(true);}

Page 48: Let's your users share your App with Friends: App Invites for Android

Application levelpublic static Tracker tracker() { return tracker;}@Overridepublic void onCreate() { super.onCreate(); analytics = GoogleAnalytics.getInstance(this); tracker = analytics.newTracker(TRACKING-ID); tracker.enableExceptionReporting(true); tracker.enableAdvertisingIdCollection(true); tracker.enableAutoActivityTracking(true);}

Page 49: Let's your users share your App with Friends: App Invites for Android

Invite sent// Get tracker.Tracker t = ((KitApplication) getApplication()).tracker();// Build and send an Event.t.send(new HitBuilders.EventBuilder() .setCategory(getString(R.string.category_id)) .setAction(getString(R.string.sent)) .build());

Page 50: Let's your users share your App with Friends: App Invites for Android

Invite sent// Get tracker.Tracker t = ((KitApplication) getApplication()).tracker();// Build and send an Event.t.send(new HitBuilders.EventBuilder() .setCategory(getString(R.string.category_id)) .setAction(getString(R.string.sent)) .build());

Page 51: Let's your users share your App with Friends: App Invites for Android

Invite receivedTracker t = ((MYApplication) getApplication()).tracker();// Build and send an Event.t.send(new HitBuilders.EventBuilder() .setCategory(getString(R.string.category_id)) .setAction(getString(R.string.accepted)) .build());

Page 52: Let's your users share your App with Friends: App Invites for Android

Let's see some numbers

Page 53: Let's your users share your App with Friends: App Invites for Android

Recap

Page 54: Let's your users share your App with Friends: App Invites for Android

Show time (Live test)

Page 56: Let's your users share your App with Friends: App Invites for Android

@[email protected]

Code:goo.gl/POESaeSlides:goo.gl/PBkzVm

Thanks for your attention!

Page 57: Let's your users share your App with Friends: App Invites for Android

Q & A