Een van de meest effectieve marketingtools is absoluut van mond tot mond. Sociaal bewijs is een zeer krachtige stimulans als het gaat om besluitvorming. Hoewel mensen traditionele advertenties gemakkelijk negeren, negeren maar weinig mensen advies van een vertrouwde bron, zoals een vriend.
In 2011 hebben Google en Ipsos OTX een enquête uitgevoerd die interessante resultaten opleverde. Als aanbevelingen worden aangevuld met kortingsbonnen die ontvangers kunnen verzilveren, is de kans groot dat ze de app downloaden of deze opnieuw gaan gebruiken. Dit is iets dat ontwikkelaars en app-uitgevers wellicht in gedachten willen houden.
De waarheid is dat heel weinig uitgevers en ontwikkelaars van mobiele apps gebruikmaken van een referentiesysteem dat is gebaseerd op aanbevelingen. De reden is bijna altijd technisch. Het bijhouden van kortingscodes, het implementeren van deep links binnen apps en het opzetten van een backend zijn enkele obstakels die ontwikkelaars moeten nemen om dit te laten werken. Het gevolg is dat de meeste mensen niet de moeite nemen of opgeven.
Gelukkig heeft Google een systeem ontwikkeld dat deze obstakels overwint, App nodigt uit. Met app-uitnodigingen biedt Google een krachtige interface waarmee ontwikkelaars het publiek van hun mobiele app kunnen laten groeien door bestaande gebruikers hun contacten te laten uitnodigen om de app te proberen.
App-uitnodigingen is opgenomen in Google Play-services en is ook beschikbaar op iOS. Het optimaliseert uw app-installatiesnelheden door wrijving te verminderen en een bepaalde context te bieden, zoals de algemene informatie van de app en de beoordeling ervan in de app store, bij elke stap van de stroom van de gebruikersuitnodiging.
In deze zelfstudie laat ik je zien hoe je deze krachtige tool in je eigen Android-applicatie kunt implementeren.
Ik zal een heel eenvoudig project gebruiken om u te laten zien hoe u uitnodigingen voor uw app kunt delen. Het eerste dat u hoeft te doen, is een nieuw project maken. Kies in Android Studio Bestand> Nieuw> Nieuw project. Geef uw app een naam en stel het webdomein van uw bedrijf in om Android Studio de pakketnaam van uw app te laten definiëren.
De minimale SDK-versie die de app kan ondersteunen, kan zo laag zijn als Android Gingerbread (API-niveau 9). Dit betekent dat je bijna elk apparaat met Android kunt targeten, 99,97% op het moment van schrijven. Houd er echter rekening mee dat app-uitnodigingen alleen werken op apparaten die de Play-winkel van Google bevatten, omdat deze is gebaseerd op de plug-in voor Google Play-services.
Genereer een blanco Activiteit
en noem het MainActivity.java.
Open het nieuwe met het nieuwe project geopend in Android Studio project tab aan de linkerkant en uit te vouwen Graden-scripts. Het bevat twee bestanden met dezelfde naam, build.gradle. Het eerste bestand is het topniveau build.gradle. Het tweede bestand is het app-level build.gradle.
Open het hoofdniveau build.gradle en voeg het volgende toe classpath
voor Google Play-services.
classpath 'com.google.gms: google-services: 1.5.0-beta2'
Open het app-niveau build.gradle en voeg de volgende compile-afhankelijkheden eraan toe.
compileer 'com.android.support:support-v4:23.1.1' compileer 'com.android.support:design:23.1.1' compileer 'com.google.android.gms: afspeelservices: 8.3.0'
Als u de Google Play-servicesinvoegtoepassing wilt inschakelen, voegt u de volgende regel hieronder toe plug-in toepassen: 'com.android.application'
.
plug-in toepassen: 'com.google.gms.google-services'
Android Studio vraagt u om de projectbestanden te synchroniseren. Open voordat je dit doet echter AndroidManifest.xml en voeg de versie van de Google Play-services toe binnen de toepassing
label.
Sla de wijzigingen op en klik op Synchroniseer nu. We zijn nog niet klaar. Android Studio werpt een foutmelding die u vertelt dat de plug-in voor Google Play-services een configuratiebestand vereist, google-services.json. Laten we dat nu oplossen.
U moet de website van Google Developers bezoeken om Google-services voor uw app in te schakelen. Het project wordt vervolgens toegevoegd aan uw persoonlijke ontwikkelaarsconsole, wat betekent dat u moet worden geverifieerd als Google-gebruiker voordat u doorgaat.
Voer de naam in die u voor uw app hebt gekozen en geef de pakketnaam op. Als u de pakketnaam van de app niet meer weet, opent u het app-niveau build.gradle. Je kunt het onder vinden defaultConfig> applicationId.
Vul de rest van het formulier in en klik op de knop onderaan gemarkeerd Kies en configureer services.
Het volgende deel is een beetje lastiger. Google vraagt u om de certificaatvingerafdruk. Om de vingerafdruk van het certificaat te verkrijgen, moet u de opdrachtregel openen en de volgende opdracht uitvoeren.
keytool -exportcert -list -v \ -alias-keystore
Er zijn twee mogelijke scenario's:
Als u uw app lokaal test, is de sleutelnaam androiddebugekey
en de standaardlocatie is % Gebruikersprofiel% \. Android \ debug.keystore
op Windows en ~ / .Android / debug.keystore
op Unix-systemen, zoals OS X en Linux. Dit is hoe het commando eruit ziet voor lokaal testen.
keytool -exportcert -list -v \ -alias androiddebugkey -keystore ~ / .android / debug.keystore
De belangrijk hulpmiddel hulpprogramma vraagt u om een wachtwoord in te voeren. Het standaard wachtwoord voor de debug keystore is android. Dit levert de SHA1-vingerafdruk van uw foutopsporingscertificaat op, die er ongeveer zo uitziet.
Certificaat vingerafdruk: SHA1: DA: 39: A3: EE: 5E: 6B: 4B: 0D: 32: 55: BF: EF: 95: 60: 1H: 90: AF: D8: 07: 09.
Als u echter de vrijgave certificaat vingerafdruk, dan moet u de naam, locatie en het wachtwoord van het certificaat opgeven.
Nadat u de vingerafdruk van het certificaat hebt ingevoerd, kunt u app-uitnodigingen inschakelen door op te klikken Schakel app-uitnodigingen in knop onderaan. U zou nu het configuratiebestand moeten kunnen downloaden door op te klikken Google-services.json downloaden.
Om deze stap te voltooien, kopieert u het gedownloade bestand naar de app / of mobile / map van uw project.
Met het project geconfigureerd, zijn we klaar voor de volgende stap. Voor de launcher Activiteit
, definieer een eenvoudige lay-out zoals hieronder wordt weergegeven. Het bevat een knop en een label.
Het resultaat zou er als volgt uit moeten zien.
In de onCreate
methode de Hoofdactiviteit
klasse, voeg een toe onCreateListener
naar de knop.
knop = findViewById (R.id.invite); button.setOnClickListener (nieuwe View.OnClickListener () @Override public void onClick (View v) // do something, will you?);
De uitnodiging wordt verzonden als een voornemen
. U kunt een bericht opgeven dat gebruikers kunnen aanpassen voordat ze de uitnodigingen naar hun vrienden verzenden. U kunt ook een call-to-action, een achtergrondafbeelding en een deeplink instellen die uw app kan verwerken zodra de uitnodiging is ontvangen. U kunt zelfs de minimale SDK-versie definiëren (setAndroidMinimumVersionCode
) en een doeltoepassings-ID voor andere platforms, zoals iOS (setOtherPlatformsTargetApplication
).
Maak het voornemen
in het lichaam van de bij klikken
methode.
Intent intent = new AppInviteInvitation.IntentBuilder (INVITATION_TITLE) .setMessage (INVITATION_MESSAGE) .setCallToActionText (INVITATION_CALL_TO_ACTION) .build (); startActivityForResult (intent, REQUEST_INVITE);
Voeg de volgende tekenreeksen toe om dit allemaal te laten werken.
private static final String INVITATION_TITLE = "Bel je vrienden", INVITATION_MESSAGE = "Hé, wil je 50% korting krijgen voor deze geweldige app? :)", INVITATION_CALL_TO_ACTION = "Delen";
Dat is alles wat er is. Wanneer de voornemen
is gestart, een gewoonte Activiteit
wordt weergegeven waarmee de gebruiker kan kiezen hoe ze de uitnodiging (e-mail of sms), het bericht van de uitnodiging en de ontvangers willen verzenden.
De intentie wordt gestart door te bellen startActivityForResult
. Het is mogelijk om het resultaat van de intentie op te halen. Nadat de gebruiker op de verzendknop heeft geklikt, worden ze teruggebracht naar de activiteit die de intentie heeft gestart. Op dat moment kun je doen wat nodig is onActivityResult
, zoals het verbergen van de knop of het volgen van uitnodigingen door middel van analyses.
@Override beschermde leegte onActivityResult (int requestCode, int resultCode, Intent-gegevens) super.onActivityResult (requestCode, resultCode, data); if (requestCode == REQUEST_INVITE) if (resultCode == RESULT_OK) // U hebt de uitnodiging met succes verzonden, // we kunnen de knop sluiten. button.setVisibility (View.GONE); String [] ids = AppInviteInvitation.getInvitationIds (resultCode, data); StringBuilder sb = nieuwe StringBuilder (); sb.append ("Sent") .append (Integer.toString (ids.length)). add ("uitnodigingen:"); for (String id: ids) sb.append ("["). append (id) .append ("]"); Log.d (getString (R.string.app_name), sb.toString ()); else // Verzenden mislukt of geannuleerd met de knop Terug showMessage ("Sorry, ik kon de uitnodigingen niet verzenden");
Wanneer een gebruiker de uitnodiging ontvangt en op de bijgevoegde link klikt, wordt de uitnodigingsstroom vertakt afhankelijk van het feit of de app al dan niet op de smartphone van de ontvanger is geïnstalleerd. Als de app al aanwezig is, ontvangt deze automatisch een voornemen
met de optionele deep link-gegevens.
Als de ontvanger de app echter niet geïnstalleerd heeft, krijgen ze de kans om dit te doen. Wanneer de app voor het eerst wordt gestart, ontvangt de app een voornemen
met de deeplink-gegevens. Op deze manier is de korting die u mogelijk wilt geven altijd beschikbaar voor de ontvanger. Dit overwint de problemen waar we eerder over gesproken hebben.
Laten we deep links in meer detail verkennen. Stel de deep link van de voornemen
we gemaakt in de onCreate
methode.
Intent intent = nieuwe AppInviteInvitation.IntentBuilder (INVITATION_TITLE) .setMessage (INVITATION_MESSAGE) .setDeepLink (Uri.parse ("tutsplus: //code.coupon/50")) .setCallToActionText (INVITATION_CALL_TO_ACTION) .build ();
Het eerste dat u moet doen om aangepaste deep links te verwerken, is door uw app te vertellen hoe ze zijn gemaakt en welke Activiteit
zou voor hen moeten zorgen. Voeg een nieuwe toe Activiteit
naar uw project en noem het DetailsActivity.
Open AndroidManifest.xml en voeg het volgende fragment toe aan de
label.
We vertellen het systeem het volgende. Als het de actie aanroept UITZICHT op een URL waarvan het schema is tutsplus en wiens gastheer is code.coupon, je app kan het gebruiken met de DetailsActivity
klasse.
Als u de aangepaste URL wilt ontvangen en parseren, moet u eerst een automatisch beheerd programma maken GoogleApiClient
met toegang tot app-uitnodigingen. We doen dit in de onCreate
methode van de Hoofdactiviteit
klasse.
GoogleApiClient googleApiClient = nieuwe GoogleApiClient.Builder (this) .addApi (AppInvite.API) .enableAutoManage (this, new GoogleApiClient.OnConnectionFailedListener () @Override openbare ongeldig opConnectionFailed (ConnectionResult connectionResult) Log.d (getString (R.string.app_name ), "onConnectionFailed:" + connectionResult); showMessage ("Sorry, de verbinding is mislukt.");) .build ();
Controleren op uitnodigingen en de deep link starten Activiteit
, je kunt de gebruiken getInvitation
methode, die is geïntroduceerd in Google Play-services 8.3. Voeg het volgende codefragment toe aan de onCreate
methode van de Hoofdactiviteit
klasse.
AppInvite.AppInviteApi.getInvitation (googleApiClient, this, true) .setResultCallback (new ResultCallback() @Override openbare ongeldig atResult (AppInviteInvitationResult-resultaat) );
De laatste parameter van de methode instellen op waar
vertelt de plug-in om automatisch de activiteit te bellen die verantwoordelijk is voor het afhandelen van de deep link, de DetailsActivity
klasse in ons voorbeeld. Dit is de reden waarom het lichaam van de onResult
methode is leeg.
Open activity_details.xml en voeg er twee toe Tekstweergave
objecten zoals hieronder getoond.
Open vervolgens DetailsActivity
en negeer de onStart
methode. Controleren of het voornemen
bevat deep link-gegevens, u moet vertrouwen op de hasReferral
methode. Het parseren van de URL is heel eenvoudig, zoals hieronder te zien is.
@Override beschermde leegte onStart () super.onStart (); Intent opzet = getIntent (); if (AppInviteReferral.hasReferral (intent)) // Extraheer de informatie van de Intent String deepLink = AppInviteReferral.getDeepLink (intent); Log.d (getString (R.string.app_name), "Found Referral:" + AppInviteReferral.getInvitationId (intent) + ":" + deepLink); String [] array = deepLink.split ("/"); if (array.length> 0) TextView tv = (TextView) findViewById (R.id.discount); tv.setText (String.format (tv.getText (). toString (), array [array.length-1]));
In dit artikel hebt u geleerd hoe u de app-uitnodigingen van Google implementeert in uw app, met behulp van de plug-in voor Google Play-services. Met deze tool kunt u de doelgroep van uw app vergroten door gebruikers toe te staan uitnodigingen naar hun Google-contacten te verzenden. U zou nu een verwijzingssysteem moeten kunnen ontwikkelen door gebruik te maken van app-uitnodigingen, zodat uw gebruikers uw app aan hun vrienden kunnen aanbevelen met gepersonaliseerde, contextuele uitnodigingen.