SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Engage & retain users
in the Android world
Matteo Bonifazi
TURIN 07-08 APRIL 2016
Who I am?
+Matteo Bonifazi
Android Google Developer Expert
Member of GDG Rome
@mbonifazi
matteobonifazi[at]gmail[dot]com
Do you need any Android book?
Sviluppare applicazioni per
Android in sette giorni
Android
Programmazione Avanzata
Contents
● Goat Checker story
● User acquisition
● App Invites
● App usage
● App Indexing API
Goat Checker story
For a great app, all we need is a great idea!!!
Where can we find a good idea?
Goat Checker story
Goat Checker story
What is the best scored Android question?
http://developer.android.com/reference/android/os/UserManager.html
Goat Checker story
THE IDEA
Understand if
Android user is a
goat or not
After the idea, let’s start programming
Goat Checker story
Goat Checker story
Nobody cares to
know if he/she is
a goat or not
Goat Checker story
User acquisition
How people become aware about an app?
32% family, friends and collegues
13% TV
17% search engines 14% company website
24% app store
stats from https://think.storage.googleapis.com/docs/mobile-app-marketing-insights.pdf
Implement invitation from scratch
App Invites
App Invites
App Invites from Google
● App content sharing
● Personalized onboarding flows
● Compatible for both Android & iOS
● Sharing & installation stats are fully
integrated with Google Analytics
App Invites
App Invites widget makes easy for
your users to send invites
App Invites
Send actionable cards with
Install button
App Invites
Personalized onboard flows to offer
discount offer or content
App Invites
App Invites
classpath 'com.google.gms:google-services:2.0.0-alpha5'
apply plugin: 'com.google.gms.google-services
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
AndroidManifest.xml
build.gradle
compile 'com.google.android.gms:play-services-appinvite:8.4.0'
project configuration
https://developers.google.com/mobile/add?platform=android&cntapi=appinvite
google-services.json
App Invites
public void sendInvite() {
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);
}
mClient = new GoogleApiClient.Builder(this).addApi(AppInvite.API).build();
100 max message length
App Invites
public void sendInvite() {
Intent intent = new AppInviteInvitation.IntentBuilder("Send Invitation")
.setEmailHtmlContent("<html><body>"
+ "<a href="%%APPINVITE_LINK_PLACEHOLDER%%">GOAT Checker
Invitation</a> </body></html>")
.setEmailSubject("XYZ Offer").build();
startActivityForResult(intent, REQUEST_INVITE);
}
mClient = new GoogleApiClient.Builder(this).addApi(AppInvite.API).build();
50 KB max HTML CONTENT
App Invites
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.
string.invitation_title))
...
.setOtherPlatformsTargetApplication(
AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS,
getString(R.string.ios_app_client_id))
...
.build();
No Windows Phone, sorry :)
App Invites
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
if (requestCode == REQUEST_INVITE && resultCode == RESULT_OK ) {
String[] ids = AppInviteInvitation.getInvitationIds(resultCode,data);
Log.d(TAG, getString(R.string.sent_invitations_fmt, ids.length));
}
}
App Invites
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());
}});
Let’s start integrating App Invites
Goat Checker story
Goat Checker story
Number of downloads
Goat Checker story
App usage is still flat
Average app user has 36 apps installed
App usage
App usage
26% of installed
smartphone apps are
used daily
1 in 4 apps are never
used
Most installed apps are
not often used
App usage
38% of app users are likely to download an
app when it’s required to complete a
purchase, half of which would uninstall it after
purchase is complete.
Consumers often abandon apps
immediately after a download.
App Indexing
Promote the app in the search results
App Indexing
Engage your users with install buttons for
your app in the Google search result
App Indexing
Re-engage users through Google Search
App autocompletions
App Indexing
Better poised in Now on Tap
App Indexing
<activity
android:name=".GoatActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="goatchecker.webs.com/"
android:scheme="http" />
</intent-filter>
</activity>
App Indexing
protected void onNewIntent(Intent intent) {
String action = intent.getAction();
String data = intent.getDataString();
if (Intent.ACTION_VIEW.equals(action) && data != null) {
String productId = data.substring(data.lastIndexOf("/") + 1);
Uri contentUri = GoatChecker.CONTENT_URI.buildUpon()
.appendPath(productId).build();
//Handle content
}
}
App Indexing
android-app://dekra.goatchecker/http/goatchecker.webs.com
Protocol Package ID PathScheme
App Indexing Markup
● http
● custom
App Indexing
<link rel=“alternate”
href=“android-app://dekra.goatchecker/http/goatchecker.webs.com” />
Approve request on Webmaster Tools - https://www.google.com/webmasters/tools
<html>
<head>
...
<link rel="alternate" href="android-app://dekra.
goatchecker/http/goatchecker.webs.com" />
...
</head>
<body> … </body>
In the web page
App Indexing
compile 'com.google.android.gms:play-services-appindexing:8.4.0'
build.gradle
Uri APP_URI = Uri.parse
("android-app://dekra.goatchecker/http/goatchecker.webs.com");
Uri WEB_URL = Uri.parse("http://goatchecker.webs.com/");
URI definition
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
Google Client
App Indexing
mUrl = "http://goatchecker.webs.com/";
mTitle = "Are you a goat?";
public Action getAction() {
Thing object = new Thing.Builder()
.setName(mTitle).setUrl(mUrl).build();
return new Action.Builder(Action.TYPE_VIEW).setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED).build();
}
App Indexing
@Override
public void onStart() {
super.onStart();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
}
@Override
public void onStop() {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
super.onStop();
}
App Indexing
App Indexing example https://developers.google.com/app-indexing/partners/case-studies
Thank you for your
attention
TURIN 07-08 MARCH 2016
+Matteo Bonifazi - @mbonifazi
matteobonifazi[at]gmail[dot]com
http://androidinsettegiorni.wordpress.com
All pictures belong to their respective authors
Discover today if
you are a goat

Mais conteúdo relacionado

Mais procurados

Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseMatt Raible
 
Microservices for the Masses with Spring Boot and JHipster - RWX 2018
Microservices for the Masses with Spring Boot and JHipster - RWX 2018Microservices for the Masses with Spring Boot and JHipster - RWX 2018
Microservices for the Masses with Spring Boot and JHipster - RWX 2018Matt Raible
 
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...Matt Raible
 
Bootiful Development with Spring Boot and Vue - RWX 2018
Bootiful Development with Spring Boot and Vue - RWX 2018Bootiful Development with Spring Boot and Vue - RWX 2018
Bootiful Development with Spring Boot and Vue - RWX 2018Matt Raible
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Matt Raible
 
Twitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayTwitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayAndy Piper
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Matt Raible
 
Bootiful Development with Spring Boot and Angular - RWX 2018
Bootiful Development with Spring Boot and Angular - RWX 2018Bootiful Development with Spring Boot and Angular - RWX 2018
Bootiful Development with Spring Boot and Angular - RWX 2018Matt Raible
 
Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017
 Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017 Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017
Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017Matt Raible
 
Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017Matt Raible
 
Android - Getting Started With Firebase Auth
Android - Getting Started With Firebase AuthAndroid - Getting Started With Firebase Auth
Android - Getting Started With Firebase AuthBayu Firmawan Paoh
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik Dorn
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik DornJava-Vienna: Spring Boot 1.x Overview/Intro by Dominik Dorn
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik DornDominik Dorn
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017Matt Raible
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Matt Raible
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017Matt Raible
 

Mais procurados (20)

Os Johnson
Os JohnsonOs Johnson
Os Johnson
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
Microservices for the Masses with Spring Boot and JHipster - RWX 2018
Microservices for the Masses with Spring Boot and JHipster - RWX 2018Microservices for the Masses with Spring Boot and JHipster - RWX 2018
Microservices for the Masses with Spring Boot and JHipster - RWX 2018
 
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...
 
Bootiful Development with Spring Boot and Vue - RWX 2018
Bootiful Development with Spring Boot and Vue - RWX 2018Bootiful Development with Spring Boot and Vue - RWX 2018
Bootiful Development with Spring Boot and Vue - RWX 2018
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017
 
Twitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayTwitter APIs for #MediaHackday
Twitter APIs for #MediaHackday
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
 
Bootiful Development with Spring Boot and Angular - RWX 2018
Bootiful Development with Spring Boot and Angular - RWX 2018Bootiful Development with Spring Boot and Angular - RWX 2018
Bootiful Development with Spring Boot and Angular - RWX 2018
 
Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017
 Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017 Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017
Develop Hip APIs and Apps with Spring Boot and Angular - Connect.Tech 2017
 
Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017Bootiful Development with Spring Boot and React - RWX 2017
Bootiful Development with Spring Boot and React - RWX 2017
 
Android - Getting Started With Firebase Auth
Android - Getting Started With Firebase AuthAndroid - Getting Started With Firebase Auth
Android - Getting Started With Firebase Auth
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik Dorn
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik DornJava-Vienna: Spring Boot 1.x Overview/Intro by Dominik Dorn
Java-Vienna: Spring Boot 1.x Overview/Intro by Dominik Dorn
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017
 

Destaque

World-Class Testing Development Pipeline for Android
 World-Class Testing Development Pipeline for Android World-Class Testing Development Pipeline for Android
World-Class Testing Development Pipeline for AndroidPedro Vicente Gómez Sánchez
 
Evolving the Android Core with Aspects
Evolving the Android Core with AspectsEvolving the Android Core with Aspects
Evolving the Android Core with AspectsCarlo Pescio
 
Crafting Great Hypotheses - Droidcon 2016
Crafting Great Hypotheses - Droidcon 2016Crafting Great Hypotheses - Droidcon 2016
Crafting Great Hypotheses - Droidcon 2016Hoang Huynh
 
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Kelly Shuster
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeedYonatan Levin
 
A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...Alessandro Martellucci
 
Add ClassyShark to your Android toolbox
Add ClassyShark to your Android toolboxAdd ClassyShark to your Android toolbox
Add ClassyShark to your Android toolboxBoris Farber
 
Data Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternData Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternFabio Collini
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
 

Destaque (10)

World-Class Testing Development Pipeline for Android
 World-Class Testing Development Pipeline for Android World-Class Testing Development Pipeline for Android
World-Class Testing Development Pipeline for Android
 
Evolving the Android Core with Aspects
Evolving the Android Core with AspectsEvolving the Android Core with Aspects
Evolving the Android Core with Aspects
 
Crafting Great Hypotheses - Droidcon 2016
Crafting Great Hypotheses - Droidcon 2016Crafting Great Hypotheses - Droidcon 2016
Crafting Great Hypotheses - Droidcon 2016
 
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeed
 
A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...
 
Add ClassyShark to your Android toolbox
Add ClassyShark to your Android toolboxAdd ClassyShark to your Android toolbox
Add ClassyShark to your Android toolbox
 
Data Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternData Binding in Action using MVVM pattern
Data Binding in Action using MVVM pattern
 
Building maintainable app
Building maintainable appBuilding maintainable app
Building maintainable app
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
 

Semelhante a Engage and retain users in the android world - Droidcon Italy 2016

Engage and retain users in the mobile world
Engage and retain users in the mobile worldEngage and retain users in the mobile world
Engage and retain users in the mobile worldCodemotion
 
Why Progressive Web Apps will transform your website
Why Progressive Web Apps will transform your websiteWhy Progressive Web Apps will transform your website
Why Progressive Web Apps will transform your websiteJason Grigsby
 
Growth Hacks: Practical Tips for your Mobile Apps
Growth Hacks: Practical Tips for your Mobile AppsGrowth Hacks: Practical Tips for your Mobile Apps
Growth Hacks: Practical Tips for your Mobile AppsDeepak Abbot
 
iOS & Android App Indexing & App Actions
iOS & Android App Indexing & App ActionsiOS & Android App Indexing & App Actions
iOS & Android App Indexing & App ActionsJustin Briggs
 
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...Distilled
 
Progressive Web Apps 1. keynote
Progressive Web Apps 1. keynoteProgressive Web Apps 1. keynote
Progressive Web Apps 1. keynoteAbdelrahman Omran
 
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...Bridget Randolph
 
Playbook for winning in Indian Apponomy
Playbook for winning in Indian Apponomy Playbook for winning in Indian Apponomy
Playbook for winning in Indian Apponomy Mohit Vijay
 
Applications Development
Applications DevelopmentApplications Development
Applications DevelopmentThe Sapper UAE
 
Why node.js for real time application development is a sage decision
Why node.js for real time application development is a sage decision Why node.js for real time application development is a sage decision
Why node.js for real time application development is a sage decision Katy Slemon
 
8 Flutter App Development Tools Developers Must Use For Your Project.pdf
8 Flutter App Development Tools Developers Must Use For Your Project.pdf8 Flutter App Development Tools Developers Must Use For Your Project.pdf
8 Flutter App Development Tools Developers Must Use For Your Project.pdfMoon Technolabs Pvt. Ltd.
 
The Case for Progressive Web Apps
The Case for Progressive Web AppsThe Case for Progressive Web Apps
The Case for Progressive Web AppsJason Grigsby
 
Progressive Web Apps – the return of the web?
Progressive Web Apps – the return of the web?Progressive Web Apps – the return of the web?
Progressive Web Apps – the return of the web?Christian Heilmann
 

Semelhante a Engage and retain users in the android world - Droidcon Italy 2016 (20)

Engage and retain users in the mobile world
Engage and retain users in the mobile worldEngage and retain users in the mobile world
Engage and retain users in the mobile world
 
Resume_4years_Exp_update
Resume_4years_Exp_updateResume_4years_Exp_update
Resume_4years_Exp_update
 
Why Progressive Web Apps will transform your website
Why Progressive Web Apps will transform your websiteWhy Progressive Web Apps will transform your website
Why Progressive Web Apps will transform your website
 
Growth Hacks: Practical Tips for your Mobile Apps
Growth Hacks: Practical Tips for your Mobile AppsGrowth Hacks: Practical Tips for your Mobile Apps
Growth Hacks: Practical Tips for your Mobile Apps
 
iOS & Android App Indexing & App Actions
iOS & Android App Indexing & App ActionsiOS & Android App Indexing & App Actions
iOS & Android App Indexing & App Actions
 
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...
SearchLove London 2016 | Bridget Randolph | The Changing Landscape of Mobile ...
 
E-Wallet
E-WalletE-Wallet
E-Wallet
 
dharmesh final Resume
dharmesh final Resumedharmesh final Resume
dharmesh final Resume
 
Progressive Web Apps 1. keynote
Progressive Web Apps 1. keynoteProgressive Web Apps 1. keynote
Progressive Web Apps 1. keynote
 
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...
Searchlove London 2016 - The Changing Landscape of Mobile Search - Bridget Ra...
 
Resume
ResumeResume
Resume
 
Playbook for winning in Indian Apponomy
Playbook for winning in Indian Apponomy Playbook for winning in Indian Apponomy
Playbook for winning in Indian Apponomy
 
supriyapandey_resume
supriyapandey_resumesupriyapandey_resume
supriyapandey_resume
 
Applications Development
Applications DevelopmentApplications Development
Applications Development
 
Resume_IOS_3.9 (1).DOC
Resume_IOS_3.9 (1).DOCResume_IOS_3.9 (1).DOC
Resume_IOS_3.9 (1).DOC
 
Why node.js for real time application development is a sage decision
Why node.js for real time application development is a sage decision Why node.js for real time application development is a sage decision
Why node.js for real time application development is a sage decision
 
Aguai Solutions Mobile Portfolio
Aguai Solutions Mobile PortfolioAguai Solutions Mobile Portfolio
Aguai Solutions Mobile Portfolio
 
8 Flutter App Development Tools Developers Must Use For Your Project.pdf
8 Flutter App Development Tools Developers Must Use For Your Project.pdf8 Flutter App Development Tools Developers Must Use For Your Project.pdf
8 Flutter App Development Tools Developers Must Use For Your Project.pdf
 
The Case for Progressive Web Apps
The Case for Progressive Web AppsThe Case for Progressive Web Apps
The Case for Progressive Web Apps
 
Progressive Web Apps – the return of the web?
Progressive Web Apps – the return of the web?Progressive Web Apps – the return of the web?
Progressive Web Apps – the return of the web?
 

Mais de Matteo Bonifazi

Invading the home screen
Invading the home screenInvading the home screen
Invading the home screenMatteo Bonifazi
 
Engage user with actions
Engage user with actionsEngage user with actions
Engage user with actionsMatteo Bonifazi
 
Kotlin killed Java stars
Kotlin killed Java starsKotlin killed Java stars
Kotlin killed Java starsMatteo Bonifazi
 
Firebase-ized your mobile app
Firebase-ized  your mobile appFirebase-ized  your mobile app
Firebase-ized your mobile appMatteo Bonifazi
 
Android - Displaying images
Android - Displaying imagesAndroid - Displaying images
Android - Displaying imagesMatteo Bonifazi
 
Android - Background operation
Android - Background operationAndroid - Background operation
Android - Background operationMatteo Bonifazi
 
The Firebase tier for your mobile app - DevFest CH
The Firebase tier for your mobile app - DevFest CHThe Firebase tier for your mobile app - DevFest CH
The Firebase tier for your mobile app - DevFest CHMatteo Bonifazi
 
UaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing APIUaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing APIMatteo Bonifazi
 
The unconventional devices for the Android video streaming
The unconventional devices for the Android video streamingThe unconventional devices for the Android video streaming
The unconventional devices for the Android video streamingMatteo Bonifazi
 
Google IO - Five months later
Google IO - Five months laterGoogle IO - Five months later
Google IO - Five months laterMatteo Bonifazi
 
Video Streaming: from the native Android player to uncoventional devices
Video Streaming: from the native Android player to uncoventional devicesVideo Streaming: from the native Android player to uncoventional devices
Video Streaming: from the native Android player to uncoventional devicesMatteo Bonifazi
 

Mais de Matteo Bonifazi (17)

Invading the home screen
Invading the home screenInvading the home screen
Invading the home screen
 
Engage user with actions
Engage user with actionsEngage user with actions
Engage user with actions
 
Kotlin killed Java stars
Kotlin killed Java starsKotlin killed Java stars
Kotlin killed Java stars
 
Android JET Navigation
Android JET NavigationAndroid JET Navigation
Android JET Navigation
 
Firebase-ized your mobile app
Firebase-ized  your mobile appFirebase-ized  your mobile app
Firebase-ized your mobile app
 
Backendless apps
Backendless appsBackendless apps
Backendless apps
 
Android - Saving data
Android - Saving dataAndroid - Saving data
Android - Saving data
 
Android Networking
Android NetworkingAndroid Networking
Android Networking
 
Android - Displaying images
Android - Displaying imagesAndroid - Displaying images
Android - Displaying images
 
Android - Background operation
Android - Background operationAndroid - Background operation
Android - Background operation
 
Android things intro
Android things introAndroid things intro
Android things intro
 
The Firebase tier for your mobile app - DevFest CH
The Firebase tier for your mobile app - DevFest CHThe Firebase tier for your mobile app - DevFest CH
The Firebase tier for your mobile app - DevFest CH
 
UaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing APIUaMobitech - App Links and App Indexing API
UaMobitech - App Links and App Indexing API
 
The unconventional devices for the Android video streaming
The unconventional devices for the Android video streamingThe unconventional devices for the Android video streaming
The unconventional devices for the Android video streaming
 
Google IO - Five months later
Google IO - Five months laterGoogle IO - Five months later
Google IO - Five months later
 
Video Streaming: from the native Android player to uncoventional devices
Video Streaming: from the native Android player to uncoventional devicesVideo Streaming: from the native Android player to uncoventional devices
Video Streaming: from the native Android player to uncoventional devices
 
Enlarge your screen
Enlarge your screenEnlarge your screen
Enlarge your screen
 

Último

Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝soniya singh
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...wyqazy
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Niamh verma
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 

Último (8)

Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 

Engage and retain users in the android world - Droidcon Italy 2016

  • 1. Engage & retain users in the Android world Matteo Bonifazi TURIN 07-08 APRIL 2016
  • 2. Who I am? +Matteo Bonifazi Android Google Developer Expert Member of GDG Rome @mbonifazi matteobonifazi[at]gmail[dot]com
  • 3. Do you need any Android book? Sviluppare applicazioni per Android in sette giorni Android Programmazione Avanzata
  • 4. Contents ● Goat Checker story ● User acquisition ● App Invites ● App usage ● App Indexing API
  • 5. Goat Checker story For a great app, all we need is a great idea!!!
  • 6. Where can we find a good idea? Goat Checker story
  • 7. Goat Checker story What is the best scored Android question? http://developer.android.com/reference/android/os/UserManager.html
  • 8. Goat Checker story THE IDEA Understand if Android user is a goat or not
  • 9. After the idea, let’s start programming Goat Checker story
  • 10. Goat Checker story Nobody cares to know if he/she is a goat or not
  • 12. User acquisition How people become aware about an app? 32% family, friends and collegues 13% TV 17% search engines 14% company website 24% app store stats from https://think.storage.googleapis.com/docs/mobile-app-marketing-insights.pdf
  • 13. Implement invitation from scratch App Invites
  • 14. App Invites App Invites from Google ● App content sharing ● Personalized onboarding flows ● Compatible for both Android & iOS ● Sharing & installation stats are fully integrated with Google Analytics
  • 15. App Invites App Invites widget makes easy for your users to send invites
  • 16. App Invites Send actionable cards with Install button
  • 17. App Invites Personalized onboard flows to offer discount offer or content
  • 19. App Invites classpath 'com.google.gms:google-services:2.0.0-alpha5' apply plugin: 'com.google.gms.google-services <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> AndroidManifest.xml build.gradle compile 'com.google.android.gms:play-services-appinvite:8.4.0' project configuration https://developers.google.com/mobile/add?platform=android&cntapi=appinvite google-services.json
  • 20. App Invites public void sendInvite() { 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); } mClient = new GoogleApiClient.Builder(this).addApi(AppInvite.API).build(); 100 max message length
  • 21. App Invites public void sendInvite() { Intent intent = new AppInviteInvitation.IntentBuilder("Send Invitation") .setEmailHtmlContent("<html><body>" + "<a href="%%APPINVITE_LINK_PLACEHOLDER%%">GOAT Checker Invitation</a> </body></html>") .setEmailSubject("XYZ Offer").build(); startActivityForResult(intent, REQUEST_INVITE); } mClient = new GoogleApiClient.Builder(this).addApi(AppInvite.API).build(); 50 KB max HTML CONTENT
  • 22. App Invites Intent intent = new AppInviteInvitation.IntentBuilder(getString(R. string.invitation_title)) ... .setOtherPlatformsTargetApplication( AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS, getString(R.string.ios_app_client_id)) ... .build(); No Windows Phone, sorry :)
  • 23. App Invites @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_INVITE && resultCode == RESULT_OK ) { String[] ids = AppInviteInvitation.getInvitationIds(resultCode,data); Log.d(TAG, getString(R.string.sent_invitations_fmt, ids.length)); } }
  • 24. App Invites 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()); }});
  • 25. Let’s start integrating App Invites Goat Checker story
  • 27. Goat Checker story App usage is still flat
  • 28. Average app user has 36 apps installed App usage
  • 29. App usage 26% of installed smartphone apps are used daily 1 in 4 apps are never used Most installed apps are not often used
  • 30. App usage 38% of app users are likely to download an app when it’s required to complete a purchase, half of which would uninstall it after purchase is complete. Consumers often abandon apps immediately after a download.
  • 31. App Indexing Promote the app in the search results
  • 32. App Indexing Engage your users with install buttons for your app in the Google search result
  • 33. App Indexing Re-engage users through Google Search App autocompletions
  • 34. App Indexing Better poised in Now on Tap
  • 35. App Indexing <activity android:name=".GoatActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="goatchecker.webs.com/" android:scheme="http" /> </intent-filter> </activity>
  • 36. App Indexing protected void onNewIntent(Intent intent) { String action = intent.getAction(); String data = intent.getDataString(); if (Intent.ACTION_VIEW.equals(action) && data != null) { String productId = data.substring(data.lastIndexOf("/") + 1); Uri contentUri = GoatChecker.CONTENT_URI.buildUpon() .appendPath(productId).build(); //Handle content } }
  • 38. App Indexing <link rel=“alternate” href=“android-app://dekra.goatchecker/http/goatchecker.webs.com” /> Approve request on Webmaster Tools - https://www.google.com/webmasters/tools <html> <head> ... <link rel="alternate" href="android-app://dekra. goatchecker/http/goatchecker.webs.com" /> ... </head> <body> … </body> In the web page
  • 39. App Indexing compile 'com.google.android.gms:play-services-appindexing:8.4.0' build.gradle Uri APP_URI = Uri.parse ("android-app://dekra.goatchecker/http/goatchecker.webs.com"); Uri WEB_URL = Uri.parse("http://goatchecker.webs.com/"); URI definition mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); Google Client
  • 40. App Indexing mUrl = "http://goatchecker.webs.com/"; mTitle = "Are you a goat?"; public Action getAction() { Thing object = new Thing.Builder() .setName(mTitle).setUrl(mUrl).build(); return new Action.Builder(Action.TYPE_VIEW).setObject(object) .setActionStatus(Action.STATUS_TYPE_COMPLETED).build(); }
  • 41. App Indexing @Override public void onStart() { super.onStart(); mClient.connect(); AppIndex.AppIndexApi.start(mClient, getAction()); } @Override public void onStop() { AppIndex.AppIndexApi.end(mClient, getAction()); mClient.disconnect(); super.onStop(); }
  • 42. App Indexing App Indexing example https://developers.google.com/app-indexing/partners/case-studies
  • 43. Thank you for your attention TURIN 07-08 MARCH 2016 +Matteo Bonifazi - @mbonifazi matteobonifazi[at]gmail[dot]com http://androidinsettegiorni.wordpress.com All pictures belong to their respective authors Discover today if you are a goat