0% found this document useful (0 votes)
246 views45 pages

Diplomski Beta 3.2.2

This document appears to be the cover page and table of contents for a student's diploma thesis on monetizing Android applications. The thesis will discuss the historical development of mobile apps and monetization possibilities, the process of developing Android apps, models for monetizing apps, and a practical project where the student implements an app that uses one or more monetization methods. The thesis will be presented to a committee and includes source code and screenshots.

Uploaded by

Di X Milano
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
246 views45 pages

Diplomski Beta 3.2.2

This document appears to be the cover page and table of contents for a student's diploma thesis on monetizing Android applications. The thesis will discuss the historical development of mobile apps and monetization possibilities, the process of developing Android apps, models for monetizing apps, and a practical project where the student implements an app that uses one or more monetization methods. The thesis will be presented to a committee and includes source code and screenshots.

Uploaded by

Di X Milano
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 45

UNIVERZITET U BANJOJ LUCI

ELEKTROTEHNIČKI FAKULTET

Dragan Milanović

MONETIZACIJA ANDROID APLIKACIJA

diplomski rad

Banja Luka, avgust 2019.


Tema: MONETIZACIJA ANDROID APLIKACIJA

Ključne riječi: Android


Monetizacija
Google Play Store

Komisija: prof. dr Slavko Marić, predsjednik


prof. dr Zoran Đurić, mentor
mr Aleksandar Keleč, član

Uz rad je priložen CD/USB.

Kandidat:
Dragan Milanović
UNIVERZITET U BANJOJ LUCI
ELEKTROTEHNIČKI FAKULTET
KATEDRA ZA RAČUNARSTVO I INFORMATIKU

Predmet: MOBILNO RAČUNARSTVO

Tema: Monetizacija android aplikacija

Zadatak: Opisati istorijski razvoj mobilnih aplikacija i mogućnosti njihove


monetizacije. Razvoj android aplikacija. Google Play Store. Mogućnosti
monetizacije Android aplikacija: Premium aplikacije, Feemium
aplikacije, aplikacije sa pretplatom, aplikacije koje serviraju reklame, e-
commerce aplikacije, i dr. Realizovati aplikaciju koje uključuje barem
jedan od analiziranih načina monetizacije.

Mentor: prof. dr Zoran Đurić

Kandidat: Dragan Milanović (1111/11)

Banja Luka, avgust 2019.


Diplomski rad Dragan Milanović

SADRŽAJ

1. UVOD ............................................................................................................................................. 2
2. ISTORIJSKI RAZVOJ .................................................................................................................... 3
3. RAZVOJ APLIKACIJA.................................................................................................................. 6
3.1. Android Studio ............................................................................................................................. 6
3.2. Struktura ....................................................................................................................................... 7
3.3. Komponente ................................................................................................................................. 9
3.4 Internet i dozvole ......................................................................................................................... 11
3.5 Obfuskacija i optimizacija koda (ProGuard) ............................................................................... 12
3.6 Distribucija (Potpisivanje, Objavljivanje) ................................................................................... 13
3.6.1. Potpisivanje ......................................................................................................................... 13
3.6.2. Objavljivanje ....................................................................................................................... 14
3.6.3. Google Play ......................................................................................................................... 15
3.6.4. Alternative ........................................................................................................................... 16
4. MODELI MONETIZACIJE .......................................................................................................... 17
4.1 Oglasi (Reklame) ......................................................................................................................... 17
4.1.1. Oglasna platforma ......................................................................................................... 17
4.1.2. Modeli određivanja cijena (PPC, CPC, CPM, CPI, CPA, CPV, eCPM)....................... 18
4.1.3. Formati mobilnih oglasa ................................................................................................ 19
4.1.4. Implementacija oglasa ......................................................................................................... 20
4.2. Premium ..................................................................................................................................... 24
4.3. Freemium.................................................................................................................................... 25
4.4. eCommerce................................................................................................................................. 26
4.5. Kupovina u aplikaciji (IAP) ....................................................................................................... 26
4.5.1. Uvod .................................................................................................................................... 26
4.5.2. Implementacija .................................................................................................................... 27
4.6. Pretplate ...................................................................................................................................... 28
4.7. Hibrid ......................................................................................................................................... 30
4.8. Statistika ..................................................................................................................................... 31
1. PRAKTIČAN RAD ....................................................................................................................... 33
1.1. Aplikacija .............................................................................................................................. 33
1.2. Objavljivanje ......................................................................................................................... 34
1.3. Monetizacija .......................................................................................................................... 37
2. ZAKLJUČAK ............................................................................................................................... 40
LITERATURA

1
Diplomski rad Dragan Milanović

1. UVOD

Termin monetizacija kratko i jasno znači unovčavanje, pretvaranje u novac,


monetizacija aplikacija je način zarađivanja novca putem mobilne aplikacije. Kada se
spomene termin „monetizacija aplikacija”, većina ljudi odmah pomisli na postupak dodavanja
oglasa u aplikaciju. Međutim, istina je sasvim drugačija, jer kvalitetan pristup monetizaciji
aplikacija zahtijeva znatno složeniji proces sa ozbiljnim planovima, biznis modelima i
metodologijom implementacije.
Nažalost, čini se da se od početka obrazovanja profesionalaca u informacionim
tehnologijama ne posvećuje dovoljno pažnje značaju monetizacije. Zbog toga, većina
studenata sebe vide kao programere ili arhitekte, dok monetizaciju doživljavaju kao posao za
one koji treba da služe samo kao analitičari ili menadžeri.
Monetizacija aplikacija predstavlja veoma važnu aktivnost u razvoju i distribuciji
aplikacija koja je posebno dobila na značaju kada je popularnost aplikacija počela da raste na
svjetskom tržištu pametnih telefona. Sada se generalno vjeruje da Android ima gotovo tri
četvrtine svjetskog tržišta pametnih telefona, iako nije zamijenio Apple-ov iPad na tržištu
tableta. Podaci o prodaji se stalno mijenjaju, ali je jasno da je Android jedan od dominantnih
„igrača u mobilnom prostoru“ [1].
Android je dostupan i za nekoliko specijalizovanih platformi. Android Wear donosi
Android programerski model u smartwatch i nosivo (eng. wearable) okruženje. Android Auto
je dizajniran za kontrolu zabavnih jedinica u automobilima. Android TV radi u pametnim
televizorima i kontrolerima za televizore. Konačno, Android Things je dizajniran za ugrađeno
(eng. embedded) tržište, sada poznato kao “internet stvari” (eng. Internet of Things - IoT).
Svaka od ovih platformi je specifična na svoj način, ali u ovom radu fokus je prvenstveno na
„običnom Android-u“, Android-u za mobilne aplikacije (telefone i tablete).
Cilj ovog rada je predstaviti proces monetizacije mobilnih aplikacija sa akcentom na
Google-ov ekosistem. Rad se sastoji iz nekoliko cjelina u kojima su detaljnije objašnjene
teoretske osnove navedenih pojmova, kao što je detaljno objašnjen i praktični rad, uz
priložene dijelove koda i prikaze pojedinih dijelova korištenih alata i aplikacije. Sadržaj
drugog poglavlja odnosi se na pregled mobilnih aplikacija kroz istoriju i mogućnostima
njihove monetizacije. U trećem poglavlju opisan je proces razvoja Android aplikacija, to jest
u njemu se nalazi sve od alata potrebnih za kreiranje aplikacija do objavljivanja gotovih
aplikacija. Opisana je struktura aplikacija i data su objašnjenja za pojedine komponente.
Četvrto poglavlje se odnosi na načine monetizacije, odnosno klasifikaciju aplikacija i opis
sistema u pozadini. U petom poglavlju je detaljno opisan praktičan rad, implementirana
aplikacija, sa mehanizmima monetizacije. Šesto poglavlje sadrži zaključak i preporuke.

2
Diplomski rad Dragan Milanović

2. ISTORIJSKI RAZVOJ

Mobilna aplikacija je vrsta aplikativnog softvera dizajniranog za pokretanje na


mobilnom uređaju kao što je pametni telefon ili tablet. Mobilne aplikacije pružaju korisnicima
slične usluge kao one koje se koriste na računarima. Posljednjih godina mobilne aplikacije su
suštinski postale dio svakodnevnog života. Koriste se za komunikaciju sa prijateljima,
plaćanje računa, naručivanje hrane, fotografisanje i brojne druge stvari. Prema statistikama,
provodi se više vremena sa pametnim telefonima nego ispred računara1. Zato je potrebno
razmotriti istoriju mobilnih aplikacija, pokušavajući shvatiti kako su one postale centar pažnje
u tako kratkom vremenskom periodu.
Zahvaljujući WAP2 standardu definisanom u oktobru 1999. godine omogućen je
pristup informacijama preko bežične mreže za sve mobilne uređaje. Godinu dana kasnije
održana je prva konferencija o oglašavanju na mobilnim uređajima u Londonu i pokrenut
Google AdWords koji kasnije mijenja ime u Google Ads, platformu za oglašavanje na
internetu [2].
Andy Rubin je izabrao android.com kao svoj lični web sajt, a njegove kolege su
koristile Android kao njegov nadimak na poslu [3]. To je na kraju postalo ime kompanije koju
su, pored njega, osnovali Rich Miner, Nick Sears, Chris White u oktobru 2003. godine u Palo
Altu, Kalifornija [4]. Rubin je izjavio da je svrha Androida da dozvoli "pametnije mobilne
uređaje koji su više svjesni lokacije i preferencija svog vlasnika", što je u to vrijeme bilo
neobično za telefonski softver. Dvije godine kasnije, Android Inc. je kupljen od strane
Google-a, u julu 2005. godine i postao je podružnica3 u potpunom vlasništvu, ali su ključni
zaposleni zadržani tokom akvizicije. U dvije godine koje su uslijedile, prvi Android SDK4
Beta je objavljen za programere i proizvođače telefona. A u aprilu 2006. godine Omar
Hamoui osniva Admob, kompaniju za mobilno oglašavanje [2]. Naredne godine, u martu,
Apple je objavio ugovor i objašnjenje za postupak kreiranja aplikacija drugih proizvođača za
iPhone, „revolucionarni“ mobilni uređaj koji će se pojaviti te iste godine. U junu Apple je
dozvolio programerima da prave Web 2.0 aplikacije koje izgledaju i ponašaju se kao
aplikacije ugrađene u iPhone. Te aplikacije su imale pristup servisima, uključujući
uspostavljanje poziva, slanje email-ova i prikazivanje lokacije na Google mapama [5]. U
istom mijesecu izašao je i „revolucionarni“ prvi iPhone, a u novembru iste godine se
pojavljuju nativne aplikacije za iPhone. App Store, prodavnica aplikacija za iPhone, je
pokrenuta u julu 2008. godine sa 552 aplikacije od kojih su 135 bile besplatne. Nakon 7 dana
brojano je 10 miliona preuzimanja i bilo je više od 800 aplikacija. Nakon 60 dana od
pokretanja izvršeno je preko 100 milona preuzimanja i postojalo je preko 3000 aplikacija.
Kao odgovor Apple-u u septembru 2008. godine, na tržištu se pojavio HTC Dream G1
kompanije T-Mobile, kao prvi uređaj koji radi na Android 1.0 operativnom sistemu. Od novih
tehnologija podržavao je: Android Market, HTML web pretraživač, GMail i E-Mail
komunikaciju, kao i Google Contacts, Calendar, Maps, Sync, Search, i Media Player. U

1
https://www.perficientdigital.com/insights/our-research/mobile-vs-desktop-usage-study.
2
WAP (Wireless Application Protocol) - Protokol za online aplikacije.
3
Podružnica - kompanija koja je pod kontrolom ili u potpunom vlasništvu druge kompanije.
4
SDK (Software Development Kit) - Paket za razvoj softvera.

3
Diplomski rad Dragan Milanović

oktobru iste godine je pokrenut i Android Market, koji postaje drugi po redu dominantni
distributer mobilnih aplikacija, glavna konkurencija App Store-u [6].
Google kupuje Admob za 750 miliona dolara 2009. godine [2], početkom iste godine
Apple širom svijeta pokreće kampanju „Postoji aplikacija za to“ (eng. There's An App For
That) [6], a u novembru je lansiran WhatsApp i Angry Birds, najprodavanija komercijalna
aplikacija svih vremena [6]. Naredne godine Apple se pridružuje mobilnom oglašavanju sa
iAd platformom, kao konkurencija AbMob-u, ali je doživila veliki neuspjeh i obustavljena u
junu 2016. godine [2].
Engleska riječ App proglašena je za „Riječ godine 2010“. Facebook počinje da
prikazuje svoje oglase u Facebook mobilnoj aplikaciji 2012. godine. Iste godine Android
Market mijenja ime u Google Play Store, a u maju 2012. godine aplikacija (igrica) Angry
Birds dostiže milijardu preuzimanja [2]. Google Play broji 50 milijardi preuzimanja i ima
preko milion aplikacija sredinom 2013. godine [6]. U 2017. godini je imao preko 82 milijarde
preuzetih aplikacija i dostigao broj od preko 3,5 miliona objavljenih aplikacija [7].

Slika 2.1 – Broj aplikacija u Google Play Store-u [7]

Android je tokom svog života prošao kroz mnoge verzije. Svaka verzija ima broj
verzije, kodno ime i API5 nivo. Broj verzije je konvencionalni sistem za verzije kao što su 2.1,
2.3.3, 3.0, 4.0, 4.1, 5.0, 6.0 i tako dalje. Kada se prva cifra verzije promijeni, radi se o velikoj
promjeni sa mnogo novih API-ja. Kada se druga cifra promijeni, to je više evolucija nego
revolucija (a ponekad i novo kodno ime), a ako se samo treća cifra promijeni, radi se o

5
API (Application Programming Interface) je skup protokola i rutina koji sistem, biblioteka ili aplikacija
obezbjeđuje drugim aplikacijama.

4
Diplomski rad Dragan Milanović

manjim promjenama. API nivoi su monotono numerisani. Kodna imena Android operativnog
sistema su abecedna i uvijek se odnose na slatku hranu. API nivoi 1 i 2 nisu zvanično imali
kodna imena.
Android sistem je kompatibilan unazad u uobičajenom smislu: aplikacija izgrađena za
stariju verziju će raditi na novijoj verziji Android-a, ali ne i obrnuto (osim ako se ne poduzme
posebna briga). Na primjer, aplikacija izgrađena za verziju 1.5 treba da radi bez rekompilacije
na Android-u 7. Međutim, aplikacija napisana i kompajlirana na Android-u 7 će vjerovatno
koristiti API pozive koji ne postoje u verziji 1.5, tako da će uređaj u stvari odbiti da instalira
noviju aplikaciju, osim ako se ne koriste neki dodaci za verzije i kompatibilnost. Glavne
verzije Android-a sažete su u tabeli 2.1.

Kodno ime Verzija Verzija kernela Datum izdavanja API nivo


(nema) 1.0 ? 23. Septembar 2008. 1
Petit Four 1.1 2.6 9. Februar 2009. 2
Cupcake 1.5 2.6.27 27. April 2009. 3
Donut 1.6 2.6.29 15. Septembar 2009. 4
Eclair 2.0 – 2.1 2.6.29 26. Oktobar 2009. 5–7
Froyo 2.2 2.6.32 20. Maj 2010. 8
Gingerbread 2.3 2.6.35 6. Decembar 2010. 9 – 10
Honeycomb 3.0 – 3.2 2.6.36 22. Februar 2011. 11 – 13
Ice Cream Sandwich 4.0 3.0.1 18. Oktobar 2011. 14 – 15
Jelly Bean 4.1 – 4.3 3.0.31, 3.4.39 9. Jul 2012. 16 – 18
KitKat 4.4 3.10 31. Oktobar 2013. 19 – 20
Lollipop 5.0 – 5.1 3.16 12. Novembar 2014. 21 – 22
Marshmallow 6.0 3.18 5. Oktobar 2015. 23
Nougat 7.0 – 7.1 4.4 22. Avgust 2016. 24 – 25
Oreo 8.0 – 8.1 4.10 21. Avgust 2017. 26 – 27
Pie 9.0 4.4.107, 4.14.42 6. Avgust 2018. 28
Android Q 10.0 29

Tabela 2.1 – Verzije Androida6

6
web.archive.org/web/20170514051830/https://www.android.com/history/.

5
Diplomski rad Dragan Milanović

3. RAZVOJ APLIKACIJA

Za razvoj aplikacija obično se koristi razvojno okuženje ili IDE (Integrated


Development Environment). Dva dominantna razvojna okruženja korištena za razvoj Android
aplikacija su: Android Studio i Eclipse. U toku prve decenije postojanja Android operativnog
sistema, Google je preporučivao upotrebu Eclipse razvojnog okruženja, sa vlastitim dodatkom
nazvanim ADT (Android Development Tools). U 2003. godini najavljen je prelazak na
Andoid Studio.

3.1. Android Studio

Android Studio je zvanično integrisano razvojno okruženje za Google-ov Android


operativni sistem, izgrađen na JetBrains-ovom IntelliJ IDEA softveru i dizajniran posebno za
razvoj Android aplikacija. Dostupan je za preuzimanje na Windows, MacOS i Linux
operativnim sistemima. Prva stabilna verzija objavljena je u decembru 2014, počevši od
verzije 1.0. Android Studio podržava sve programske jezike IntelliJ-a: Java, C ++ i još mnogo
drugih, kao što je Go, uz korištenje ekstenzija. Android Studio 3.0 ili noviji, podržavaju
programski jezik Kotlin. Kotlin je zvanično podržan od Google-a za razvoj mobilnih
aplikacija na Androidu u oktobru 2017. godine [8], uključen je kao alternativa Java
programskom jeziku. Android Studio je moguće besplatno preuzeti sa zvanične stranice7. Na
slici 3.1 prikazan je Andoid Studio korisnički interfejs sa pregledom projekta, editorom koda,
vizuelnim editorom i statistikom u realnom vremenu.

Slika 3.1 – Android Studio7

7
https://developer.android.com/studio/.
6
Diplomski rad Dragan Milanović

Da bi se postavilo razvojno okruženje, potreban je Java Development Kit (JDK).


Instaliranje JDK-a, ako je potrebno, odvija se tako što se sa zvanične Java web stranice8,
preuzme i instalira JDK za odgovarajući operativni sistem. Moguće je koristiti i alternativne
distribucije, poput OpenJDK. Nakon toga, počinje proces instalacije Android Studio-a, koji
uključuje konfiguraciju okruženja, Android SDK-a i instalaciju Android virtualnog uređaja
(AVD). Nakon instalacije slijedi dalja konfiguracija pri prvom pokretanju. Pri svakom
pokretanju, razvojno okruženje provjerava da li postoje ažuriranja i prikazuje odgovarajuću
poruku ako su potrebna ažuriranja. Kada se to završi, Android Studio je spreman za izradu
Android aplikacija.
Razvoj aplikacije započinje kreiranjem novog projekta, izborom uređaja koji će biti
podržan (telefon/tablet/sat/tv), kao i minimalne verzije Androida koja će biti podržana.

3.2. Struktura

Android Studio podrazumijevano daje pregled datoteka u obliku Android projekta, kao
što je prikazano na slici 3.2. Ovaj prikaz je organizovan po modulima kako bi omogućio brži
pristup ključnim izvornim datotekama projekta. Sve datoteke potrebne za prevođenje
aplikacije vidljive su u sekciji Gradle Scripts, a svaki modul aplikacije sadrži sljedeće foldere:
manifest, java, res.

Slika 3.2 - Struktura Android Projekta

8
https://www.oracle.com/technetwork/java/javase/downloads/index.html.

7
Diplomski rad Dragan Milanović

U manifest folderu se nalazi fajl AndroidManifest.xml. On opisuje prirodu aplikacije i


svaku njenu komponentu. U ovom fajlu identifikuju se sve korisničke dozvole koje aplikacija
zahtijeva, kao što je pristup internetu ili pristup kontaktima korisnika. Specifikuje se i
minimalni API nivo potreban za aplikaciju na osnovu API-ja koje aplikacija koristi. Pored
toga, specifikuju se hardverske i softverske funkcije koje aplikacija koristi, kao što su kamera,
Bluetooth usluge ili multitouch ekran. Komponente aplikacije koje nisu definisane u fajlu
AndroidManifest.xml neće biti prepoznate od strane Android operativnog sistema.

<?xml version="1.0" encoding="utf-8"?>


<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26"/>

<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" />
</application>
</manifest>

Listing 3.1 - Primjer AndroidManifest-a

Folder java sadrži fajlove Java izvornog koda, uključujući JUnit testove. U njemu se
kreira MainActivity.java pri pokretanju wizard-a za generisanje novog projekta. Sve Java
klase će biti dostupne ovdje, a Android Studio će čak povezati putanju paketa tako da je
moguće raditi sa folderima bez potrebe za traganjem kroz foldere koji čine paket.
Resursi su smješteni u res folder. Pod resursom se podrazumijeva sve što nije izvorni
kôd, na primjer: slike, plan korisničkog interfejsa, znakovne konstante i još mnogo toga.
Uvijek treba izdvojiti resurse aplikacije iz koda, tako da Android koristi odgovarajući resurs
na temelju trenutne konfiguracije. Na primjer, možda se želi pružiti drugačiji raspored
korisničkog interfejsa u zavisnosti od veličine ekrana ili različite znakovne konstante u
zavisnosti od podešavanja jezika [9]. Neki folderi će automatski biti generisani, a neki se
mogu dodati ručno. Folderi koji se mogu koristiti unutar res foldera su: drawable, layout,
mipmap, values, raw i drugi.

8
Diplomski rad Dragan Milanović

U drawable folderu se nalaze grafičke komponente koje se mogu prikazati na ekranu.


Na primjer, datoteke slika (png, jpg i gif) i različite XML datoteke (2D graphics, state list,
layer list, level list, transition drawable). Folder layout sadrži XML datoteke koje se koriste
za izgled interfejsa. Ove datoteke se koriste za postavljanje rasporeda aktivnosti i koriste se za
osnovno podešavanje izgleda, komponenti, widget-a i sličnih resursa koji se koriste za
korisnički interfejs aplikacije. Može da sadrži odvojene foldere sa resursima prilagođenim
uređajima sa različitom rezolucijom i gustinom ekrana. Folder mipmap sadrži datoteke ikona
aplikacije. Radi lakšeg održavanja aplikacije, nije preporučljivo vrijednosti upisivati direktno
u kod. Umjesto toga, postavljaju se vrijednosti u XML datoteke unutar foldera values. Tu su
jednostavne vrijednosti kao što su nizovi karaktera, cijeli brojevi, boje, dimenzije i sl. Kada se
kreira novi projekat u Android Studio-u, automatski će se generisati sljedeće XML datoteke u
values folderu: colors.xml, strings.xml i styles.xml.

3.3. Komponente

Android aplikacija je skup komponenti: aktivnosti, servisi, content provider-i,


broadcast receiver-i. One funkcionišu u okviru Linux procesa i njima upravlja Android
operativni sistem.
Aktivnost (eng. activity) je komponenta koja prikazuje korisnički interfejs tako da
korisnik može biti u interakciji s aplikacijom. Npr., aplikacija kalukulator prikazuje korisnički
interfejs za upisivanje brojeva i ispis rezultata. Iako aplikacije mogu imati samo jednu
aktivnost, najčešće to nije slučaj. Kalkulator može imati interfejs sa podešavanjem za naučni
ili programerski kalkulator i slično.

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void sendMessage(View view) {


Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.editText);
String message = editText.getText().toString();
intent.putExtra(„MSG_KEY“, message);
startActivity(intent);
}
}

Listing 3.2 – Primjer aktivnosti

Servis (eng. service) je komponenta koja se pokreće u pozadini u neograničenom


vremenu i nema vlastiti interfejs (npr. sviranje muzike). Servisi se dijele na lokalne (eng. local

9
Diplomski rad Dragan Milanović

service), koji se izvršavaju u istom procesu kao i ostatak aplikacije i udaljene (eng. remote
service), koji se izvršavaju u zasebnom procesu.
Broadcast Receiver je komponenta koja prima poruke koje šalju druge komponente i
aplikacije, npr. promjena vremenske zone, slaba baterija i sl. Takođe, aplikacija može i sama
poslati broadcast poruku.
Content Provider služi za razmjenu podataka između različitih aplikacija. Ti podaci
mogu biti smješteni u Android fajl sistemu, SQLite bazi podataka itd.
Intent je poruka koja opisuje koji postupak odnosno koja operacija će se izvršiti. Na
primjer, slanje email poruke, prelazak na drugu aktivnost, odabir slika, poziv i slično. Gotovo
sve u Androidu koristi intent pa je relativno jednostavno zamijeniti postojeće komponente ili
dodati nove. Ukoliko neka aplikacija želi poslati email ona zahtjeva slanje email-a preko
intenta. Kada se to inicira, otvaraju se sve aplikacije preko kojih se može slati email. Tako je i
moguće napraviti aplikaciju za slanje email-a koja će primati ”send mail“ intent i na njega
odgovarati.
Svaka aktivnost ima svoj životni ciklus koji koristi 7 metoda: onCreate, onStart,
onPause, onResume, onStop, onRestart, onDestroy. Aktivnost nastaje naredbom onCreate
koja prima jednu varijablu tipa Bundle. Ta varijabla sadrži podatke o prethodnom stanju
aktivnosti ukoliko ga je bilo. U onCreate se stavlja sve što je potrebno pri inicijalizaciji
aktivnosti (pozadina, tipke, itd.). Metode onStart i onResume prvenstveno služe za povratak iz
onStop i onPause stanja. U njuh se stavlja dio koda koji se izvršava pri povratku u aktivnost.
Aktivnost je u onPause stanju kada se vidi u pozadini, ali nije aktivna. Naredba onDestroy se
izvršava pri zatvaranju aplikacije. Pošto se ta metoda ne mora nužno izvršiti ne preporučuje se
u njoj izvoditi bitne funkcionalnosti, poput čuvanja pristupnih podataka. Na slici 3.3 su
prikazana sva stanja aktivnosti i odgovarajuće metode koje se izvršavaju pri prelasku iz
jednog stanja u drugo.

10
Diplomski rad Dragan Milanović

Slika 3.3 – Životni ciklus aktivnosti

3.4 Internet i dozvole

Većina aplikacija obezbjeđuje dodatne funkcionalnosti i podatke putem interneta.


Čuvanje informacija, pristup feed-ovima podataka ili čak ažuriranje datoteka zahtijevaće
pristup internetu. Za povezivanje s internetom, manifest aplikacije zahtijeva dozvole
prikazane u listingu 3.3.

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


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

Listing 3.3 – Dozvole za internet u manifestu


Dozvola INTERNET omogućava aplikaciji da napravi izlazne zahtjeve na internet.
Dozvola za ACCESS_NETWORK_STATE se koristi da omogući pristup radiju ili Wi-Fi
adapteru na uređaju. Važan aspekt korišćenja mrežnih karakteristika Android-a jeste da se
provjeri postoji li veza prije nego što se ona pokuša koristiti. Mogućnost otkrivanja postojanja
veze smanjuje redove čekanja i omogućuje optimizaciju svih resursa koji čekanju vezu sa
mrežom. Provjera veze podrazumijeva dobivanje ConnectivityManager-a i zatim korištenje
metoda getActiveNetworkInfo i isConnected na aktivnoj mreži [10].

11
Diplomski rad Dragan Milanović

ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();

if(networkInfo != null && networkInfo.isConnected()) {


Toast.makeText(getApplicationContext(), "Network connected!",0).show();
} else {
Toast.makeText(getApplicationContext(), "No network connection!",1).show();
}

Listing 3.4 – Provjera veze

Ova provjera može biti od velike koristi ukoliko se u aplikaciji prikazuju oglasi, a
aplikacija ima određenu funkcionalnost i ako nije povezana sa internetom, tada je moguće
ograničiti te funkcionalnosti dok se aplikacija ne poveže na internet i počne ponovo
prikazivati oglase. Takođe je važno istaći da se mrežna aktivnost mora izvršiti u zasebnoj niti
(eng. thread). Svaki pokušaj izvođenja komplikovanih mrežnih operacija u aktivnosti na
glavnoj niti može uzrokovati grešku u izvođenju aplikacije (eng. runtime exception) ili grešku
aplikacije koja se ne odaziva (eng. application not responding). Ovaj problem je moguće
izbjeći korištenjem asinhronog pristupa, pomoću AsyncTask objekta.

3.5 Obfuskacija i optimizacija koda (ProGuard)

Obfuskacija programskog koda je način njegove zaštite, gdje se programski kod


pokušava učiniti teško čitljivim i razumljivim čovjeku, tj. proces u kome se pokušavaju sakriti
informacije koje bi bile korisne kod reverznog inženjeringa koda. Reverzni inženjering (eng.
reverse engineering) je postupak otkrivanja tehnoloških principa sistema putem temeljnih
analiza njegove konstrukcije, funkcije i načina rada. Ako aplikacija sadrži komercijalne ili
poslovne tajne, potrebno ih je zamaskirati. Ako je program otvorenog koda (eng. open
source), ne postoji potreba za obfuskacijom koda.
Optimizacija koda je analogna refrakciji na nivou izvornog koda, ali obično ima za cilj
da napravi brži ili manji kod ili oboje.
ProGuard je open source, besplatni softver za optimizaciju i obfuskaciju Java koda.
Nije specifičan za Android, radi sa gotovo svakom java aplikacijom. ProGuard radi sa
kompajliranim Java fajlovima (.class format), tako da mora biti umetnut u razvojni ciklus
prije konverzije u DEX format. To se najlakše postiže pomoću standardnog alata za izgradnju
Java aplikacija, Ant-a. Ukoliko se koristi Maven, naredba mvn android:proguard će pokrenuti
ProGuard [1].

12
Diplomski rad Dragan Milanović

3.6 Distribucija (Potpisivanje, Objavljivanje)

Objavljivanje aplikacije je posljednji korak u procesu razvoja aplikacije. Kada se


završi proces razvoja aplikacije potrebno je i izvršiti njezino objavljivanje. Ako je sve
spremno za objavljivanje, kreira se produkciona verzija aplikacije. Ovisno o složenosti i
namjeravanoj metodi distribucije aplikacije, ovaj proces može zahtijevati dodatno
podešavanje prije nego što se može kreirati APK9 datoteka. Zahtjevi koji se moraju ispuniti
su:
 posjedovanje/kreiranje kriptografskih ključeva i sertifikata za potpisivanje aplikacije,
 eksterni servisi ili serveri,
 ikonicu aplikacije,
 licence,
 odgovarajuće ime paketa,
 provjera dozvola i zahtjeva,
 uklanjanje log i debug informacija i
 uklanjanje nekorištenih resursa,
 kontakt email adresa,
 web stranica (opciono).

3.6.1. Potpisivanje

Za Google, jedna od namjera sa Android-om je da se minimizira problem oko


potpisivanja aplikacija. Nije potrebno centralno sertifikaciono tijelo za dobijanje sertifikata.
Svako može kreirati svoj sertifikat. Kada se generiše sertifikat, aplikaciju je moguće potpisati
pomoću alata jarsigner koji dolazi uz JDK ili kroz Android Studio. Pri generisanju para
ključeva i sertifikata, potrebno je navesti period validnosti za sertifikat. Iako se u izradi web
aplikacija preporučuje 1 ili 2 godine, Google preporučuje da se za period stavi najmanje 25
godina. Zapravo, ako se koristi Google Play Store za distribuciju aplikacije, to zahtijeva da
sertifikat važi najmanje do 22. oktobra 2033. godine (25 godina od dana kada je Google
otvorio Play Store, tada poznat kao Android Market).
Android aplikacije se mogu pisati koristeći Kotlin, Java i C++ jezik. Android SDK
alati kompajliraju kod zajedno sa svim datotekama i resursima u APK, Android paket, koji je
arhivska datoteka sa .apk sufiksom. Jedna APK datoteka sadrži sve resurse Android aplikacije
i ona je datoteka koju Android uređaji koriste za instaliranje aplikacije. Da bi se aplikacija
objavila na Google Play Store-u potrebno je generisati potpisanu APK datoteku. U Android
Studio meniju se odgovarajuća komanda za to nalazi pod Build | Generate Signed APK .
Otvara se novi prozor (slika 3.4), gdje je potrebno navesti putanju do keystore-a10 ili ako ne
postoji, kreirati novi (Create new...). Unosi se lozinka keystore-a, alias i lozinka ključa.
Nakon toga se bira destinacija na koju će se smjestiti potpisani APK. Na ovaj način generiše
se potpisana APK datoteka aplikacije koja se može objaviti.

9
APK - Android Paket.
10
Binarni fajl (.jks ili .keystore) koji služi kao repozitorijum sertifikata i privatnih ključeva.

13
Diplomski rad Dragan Milanović

Slika 3.4 – Potpisivanje APK-a

3.6.2. Objavljivanje

Aplikacije za Android se instaliraju preko Google Play Store-a, pa se na istom mjestu i


objavljuju. Potreban je developer nalog za Google, koji se može zatražiti na stranici za
prijave11. Nakon prijave, prihvata se ugovor o distributeru i plaća jednokratna naknada od
25$. Kada nalog dobije status registrovanog developer-a, moguće je prijaviti se na Google
Play Developer nalog12. Nakon prijave moguće je dodati novu aplikaciju ili raditi s
postojećim. Koristeći dugme Add New Application vrši se inicijalizacija postupka dodavanja
nove aplikacije, navodi se naziv aplikacije i vrši se upload APK-a.
Nakon toga, u narednoj formi potrebno je dodati najmanje dvije slike (screenshots) u
JPEG ili PNG formatu bez ikakve transparentnosti. Slike moraju imati minimalnu dimenziju
od 320px i maksimalnu dimenziju od 3840px, s tim da veličina maksimalne dimenzije nije
veća od dvostruke veličine minimalne dimenzije. Najbolje je koristiti slike koje prikazuju
funkcionalnost aplikacije i stvarne snimke pozadine aplikacije, a ne samo promotivne ili
marketinške materijale. Moguće je dodati ukupno 8 snimaka ekrana za svaki tip podržanog
uređaja (telefon, tablet, Android TV i Wear OS). Moguće je i postavljanje videozapisa za
aplikaciju koji ističe funkcije i prikazuje aktivnu aplikaciju. Videozapisi moraju biti smješteni
na YouTube-u i ne smiju biti ograničeni prema uzrastu. Mora takođe biti YouTube link -
direktna veza do videozapisa, a ne do liste za reprodukciju ili stranice profila.
Dodaje se i ikona visoke rezolucije koja se prikazuje u Google Play Store-u na
karticama koje prikazuju aplikaciju kao i na vrhu stranice sa opisom. Zbog toga bi trebalo da
budu veoma slične, ako ne identične, sa ikonom pokretanja.
Ako postoji plaćanje u aplikaciji, mora se povezati Google Play Developer račun s
Google Payments Merchant Center-om. Google Payments Merchant Center je mjesto na

11
https://play.google.com/apps/publish/signup/.
12
https://play.google.com/apps/publish/.

14
Diplomski rad Dragan Milanović

kojem će se pohraniti poslovne informacije i zahtijevati pravno ime poslovnice, adresa,


telefonski broj i ime koje će se pojaviti na kreditnim karticama prilikom transakcije.
Google Play Developer račun i Google Payments Merchant Center račun je moguće
povezati tako što se nakon prijave na Google Play Developer račun klikne na izvještaje (eng.
Reports), a zatim na opciju finansijski izvještaji (eng. Financial Reports). Ovo prikazuje
poruku i traži da se postavi račun trgovca (eng. Merchant).

3.6.3. Google Play

Google Play (ranije Android Market) je servis za


digitalnu distribuciju kojom upravlja Google. On služi kao
zvanična prodavnica aplikacija za Android operativni
sistem, omogućavajući korisnicima da pretražuju,
preuzimaju i objavljuju aplikacije. Google Play takođe
služi i kao prodavnica digitalnih medija, nudeći muziku,
knjige, filmove i televizijske programe. Na slici 3.5 je
prikazana Google Play aplikacija. Za 2018. godinu
stručnjaci su utvrdili visinu godišnjeg prihoda u visini od
skoro 12 miliona amričkih dolara [11].13

Neke osobine korištenja centralizovane prodavnice za Slika 3.5 – Google Play13


distribuciju Android aplikacija su:
 velika dostupnost– aplikacija je dostupna za skoro sve Android uređaje i skoro sve
zemlje,
 kombinovanje prodajnih aktivnosti – pored distribucije omogućava prodaju i
komunikaciju sa korisnicima,
 plaćanje i provizija – plaća se provizija, u ovom slučaju 30%,
 jednostavnost – nije potrebno ispunjavati zahtjeve raznih distributera već „samo“
jednog i svaki put postaje jednostavnije jer je posupak uvijek isti,
 skupljanje povratnih informacija od korisnika – povratne informacije ili feedback se
mogu skupljati u obliku ocjenjivanja ili komentara,
 statistika – jednim klikom miša dostupna je sva statistika za aplikaciju (npr. prodaja) i
 veća zavisnost – vezanje za jednog distributera.

13
https://developer.android.com/distribute/google-play

15
Diplomski rad Dragan Milanović

3.6.4. Alternative

Najlakši i najbrži način za distribuciju aplikacije je slanje korisniku putem email-a. Za


ovaj postupak je potrebno pripremiti aplikaciju za objavljivanje, a zatim je email-om poslati
korisniku. Kada korisnik otvori poruku na svom Android uređaju, Android sistem će
prepoznati APK i prikazati dugme Install Now u poruci (slika 3.6). Korisnici mogu instalirati
aplikaciju dodirom na dugme.

Slika 3.6 – Email

Naravno, aplikaciju je moguće učiniti dostupnom za preuzimanje na vlastitoj web


stranici. Sve što je potrebno za to je da se „hostuje“ APK datoteka spremna za objavljivanje
na web stranici i pruži korisnicima veza za preuzimanje. Kada korisnici pretražuju vezu za
preuzimanje sa svojih Android uređaja, datoteka se preuzima i sistem automatski počinje da
ga instalira na uređaj. Međutim, proces instalacije će se automatski pokrenuti samo ako je
korisnik konfigurisao svoja podešavanja tako da dozvoljava instaliranje aplikacija iz
nepoznatih izvora (eng. unknown sources). Iako je relativno lako objaviti aplikaciju na web
stranici, ovo može biti neefikasno. Na primjer, ukoliko se želi unovčiti aplikacija potrebno je
obraditi i pratiti sve finansijske transakcije i nije moguće koristiti usluge Google Play-a za
naplatu unutar aplikacije. Pored toga, nije moguće koristiti usluge licenciranja da bi se
spriječila neovlaštena instalacija i korištenje aplikacije.
Android štiti korisnike od slučajnog preuzimanja i instaliranja aplikacija iz lokacija
koje nisu Google Play, blokira takve instalacije dok se korisnik ne odluči uključiti dozvolu za
instaliranje aplikacija iz drugih izvora kao što su email ili web stranica. Korisnici moraju da
pređu na ekran za instaliranje nepoznatih aplikacija (eng. Install unknown apps) u postavkama
da bi omogućili instalaciju aplikacija [12].

16
Diplomski rad Dragan Milanović

4. MODELI MONETIZACIJE

Aplikacije danas zarađuju na minimalno 7 različitih načina. Model koji će najbolje


funkcionisati zavisi od nekoliko faktora o kojima će se dikutovati u ovom poglavlju. Modeli
su [13]:

4.1 Oglasi (Reklame)

U ovom modelu monetizacije, oglašivači plaćaju prikazivanje oglasa u samoj


aplikaciji. Moguće je dogovoriti direktno s oglašivačima prikazivanje oglasa u aplikaciji, ili
na brži i jednostavniji način, koristit usluge oglasne mreže koja je povezana sa mnogim
oglašivačima. Tako da se odmah počnu prikazivati oglasi u aplikaciji. Prikazivanje
odgovarajućeg oglasa korisniku vrši se na osnovu njegovih interesa, lokacije, pola, starosti i
drugih bitnih osobina korisnika i samog uređaja. Ovaj model omogućava da se objavi
besplatna aplikacija korisnicima. Sa odgovarajućim brojem korisnika koji preuzimaju i koriste
aplikaciju, prihodi mogu biti značajani. Oglasi su vremenom evoluirali, tako da su postali
relevantniji, što doprinosi boljem korisničkom iskustvu. Postoje različite vrste oglasa (video,
full-page, baner, itd.). Položaj i učestalost oglasa treba da funkcionišu sa dizajnom aplikacije i
da ne uznemiravaju korisnika. Postoje alati za jednostavno dodavanje oglasa u aplikaciju i
oglasne platforme (kao što je AdMob) koje omogućuju da se brzo počne zarađivati novac od
oglasa.

4.1.1. Oglasna platforma

Oglasna platforma ili oglasna mreža je kompanija koja povezuje oglašivače sa web-
lokacijama koje mogu da prikazuju oglase. Fraza “oglasna mreža“ sama po sebi je neutralna u
medijima u smislu da može postojati "televizijska oglasna mreža" ili "štampana oglasna
mreža", ali se sve više koristi u značenju "online oglasne mreže" jer se najčešće nalaze u
online prostoru. Osnovna razlika između tradicionalnih medijskih oglasnih mreža i online
oglasnih mreža je u tome što online oglasne mreže koriste centralni oglasni server za isporuku
oglasa potrošačima, što omogućava ciljanje, praćenje i izveštavanje o utiscima na načine koji
nisu mogući pomoću analognih medija.
Za popularnu aplikaciju sa slobodnim oglasnim prostorom, umjesto da se prave
direktni ugovori sa potencijalnim oglašivačima, koristi se oglasna mreža. Iza scene proces je
automatizovan, kada se instalira SDK oglasne mreže njihov API poziva njihove servere. Na
osnovu postavljenih kriterijuma, oglasna mreža pronalazi oglase koji će odlično funkcionisati
s aplikacijom. Ukoliko je nekoliko partnera za oglašavanje na mreži zainteresovano za
određeni oglasni prostor, da bi se odredilo čiji oglas se prikazuje, oglasna mreža obično
održava aukciju. Oglasna mreža ne bira pobjednika isključivo po cijeni, već razmatra koji je
oglašivač najrelevantniji za korisničku bazu, vrstu aplikacije i cijenu. Prikazuje pobjednički
oglas u aplikaciji i taj oglas koji se prikazuje smatra se „utiskom“. Ako korisnik klikne na

17
Diplomski rad Dragan Milanović

njega oglašivač dobija potencijalnog novog kupca, a profit se dijeli sa oglasnom mrežom. Sve
se to događa vrlo brzo, obično za manje od sekunde.

Slika 4.1 – Aukcija oglasne mreže

Važno je napomenuti da nisu sve oglasne mreže iste. Neke mreže se fokusiraju na
cijenu i da prikažu oglas ispred što više ljudi. Neke se više brinu o kvalitetu svojih oglašivača.
Druge uključuju dodatne funkcije koje će pomoći u drugim dijelovima poslovanja. Postoji
mnogo opcija i mnogo faktora koje treba razmotriti [14]. U narednoj tabeli (Tabela 4.1) su
izdvojene neke oglasne mreže sa poređenjem određenih karakteristika, koje su objašnjene u
daljem tekstu, za lakši odabir i izvlačenje maksimuma od oglasne mreže [15].

Oglasna
Platforme Plaćanje Formati Tržište
mreža
Android, iOS, CPC, CPM, Banner, Interstitial, Video,
AdMob Globalno
Unity, Cocos CPI Native, Trueview
Android, iOS, Globalno,
Unity Ads CPM, CPI Banner, Interstitial, Video,
Unity SAD
Android, iOS,
AppLovin CPC, CPA Interstitial, Video, Native, SAD
Mobile Web
Android, iOS, Interstitial, Video, Offer Globalno,
Chartboost CPC, CPI
Unity wall SAD
Facebook Android, iOS,
CPM, CPI Banner, Video, Slideshow Globalno
Ads Mobile Web

Tabela 4.1 – Mobilne oglasne mreže

4.1.2. Modeli određivanja cijena (PPC, CPC, CPM, CPI, CPA, CPV, eCPM)

Oglašivači i izdavači koriste širok raspon metoda obračuna plaćanja. Za mobilne


aplikacije industrija oglašavanja ne nudi samo model u kojem oglašivači plaćaju za
prikazivanje oglasa. Oni takođe imaju model plati-po-kliku (ili PPC model), gdje oglašivači
plaćaju samo kada neko klikne na njihov oglas [14].
PPC (Pay Per Click) ili CPC (Cost Per Click) podrazumijeva da oglašivač plaća
izdavaču proviziju svaki put kada posjetilac klikne na oglas oglašivača. Nebitno je koliko
često se oglas prikazuje. Provizija se plaća samo kada se klikne na oglas. CPC oglašavanje

18
Diplomski rad Dragan Milanović

dobro funkcioniše kada oglašivači žele posjetioce na njihovim web lokacijama. Ovaj model
radi bolje za oglašivače, jer im omogućava da plaćaju samo za slučajeve kada je interes za
njihov proizvod ili uslugu eksplicitan (njihovi oglasi su kliknuti). Za izdavača ovaj model
uvijek predstavlja određeni rizik da će besplatno poslužiti mnoštvo pojavljivanja oglasa [15].
Tržišni udio CPC-a je rastao svake godine od njegovog uvođenja, smanjujući dominaciju
CPM-a [16].
CPM (Cost Per Mille) omogućava da oglašivači plaćaju za svakih hiljadu prikaza
svoje poruke potencijalnim kupcima (mille je engleska riječ za hiljadu). Ovo je najbolji
poslovni model za izdavače, jer omogućava da zarade novac svaki put kada se oglas prikaže.
Ako imaju stabilan predvidiv saobraćaj mogu da prognoziraju svoj prihod. Nedostatak je da
oni mogu izgubiti neke dodatne prihode, ako je korisnik njihove aplikacije ili web stranice
zaista zainteresovan za proizvod ili uslugu koja se oglašava. U tom slučaju model CPC bi im
omogućio da zarade više novca [15].
CPI (Cost Per Install) je specifičan slučaj generičkog CPC modela za mobilne
aplikacije i mobilno oglašavanje. U CPI modelu oglašivači plaćaju fiksne stope ponude samo
kada je aplikacija instalirana. Cijena po instalaciji postala je jedna od najvažnijih metrika za
marketinške korisnike mobilnih aplikacija za mjerenje i praćenje, jer ona u suštini predstavlja
cijenu koju plaćaju da bi stekli klijente i stoga bi to trebalo da bude faktor u izračunavanju
ROI14.
CPA (Cost Per Action) ili PPP (Pay Per Performance) oglašavanje znači da oglašivač
plaća za broj korisnika koji obavljaju željenu aktivnost, kao što je završetak kupovine ili
popunjavanje obrasca za registraciju. PPP može takođe uključivati dijeljenje prihoda, gdje
izdavači zarađuju postotak profita oglašivača koji je rezultat oglašavanja. Ovo naravno
prenosi rizik neuspjelog oglašavanja na izdavače. Koristi se kod oglašavanja kao način
određivanja cijena još od 1998. godine.
CPV (Cost Per View) je video oglašavanje po cijeni gledanja. Sa ovim modelom
oglašivači plaćaju za svaku instancu prikazanog video oglasa. CPV je primarno mjerilo koje
se koristi u YouTube reklamnim kampanjama, kao dio Google AdWords platforme. Sa
trenutnim tempom rasta video oglašavanja ovaj model postaje sve popularniji.

4.1.3. Formati mobilnih oglasa

Postoji 5 glavnih formata koje podržavaju mobilne oglasne mreže: banner, interstitial,
native, video i „zid ponuda“ (eng. offer wall).
Banner oglasi su klasični statični ili animirani slikovni oglasi koji se nalaze unutar
interfejsa aplikacije. Pojavljuju se na vrhu ili dnu ekrana uređaja i obično se šire preko cijelog
ekrana kada se dodirnu.
Interstitial oglasi se prikazuju preko čitavog ekrana pokrivajući površinu čitave
aplikacije. Ovaj format se njačešće koristi pri promjeni prozora u aplikaciji ili pri prelasku u
naredni nivo ukoliko se radi o mobilnoj igri.

14
RIO (Return On Investment) - Povrat investicije.

19
Diplomski rad Dragan Milanović

Video oglasi se sastoje od kratkog video snimka (obično do 60 sekundi) za


oglašavanje proizvoda i usluga. Ovaj format mobilnog oglasa najčešće se koristi u medijskim
aplikacijama. Postoje dva glavna tipa video oglasa: in-stream i out-stream. Sa tipom in-
stream, video oglasi se prikazuju preko čitavog ekrana prije, poslije i unutar video sadržaja
koji se emituje u aplikaciji. Video oglasi tipa out-stream prikazuju se na web stranici
prikazanoj u mobilnoj aplikaciji. Uz Google-ove TrueView oglase korisnici mogu preskočiti
video zapis nakon 5 sekundi.
Native oglasi su ili banner ili video oglasi koji odgovaraju formi i funkciji interfejsa
aplikacije u kojoj su prikazani. Osnovni koncept je da se integrišu u izgled aplikacije tako da
izgledaju kao dio aplikacije i izgled interfejsa ostane konzistentan. S ovom vrstom oglasa
prima se JSON15 datoteka s odgovarajućim sadržajem oglasa za vlastitu prilagodbu.
„Zid ponuda“ je oglasna jedinica u mobilnoj aplikaciji koja krajnjim korisnicima pruža
mnogo opcija za interakciju. Najčešći slučaj upotrebe su mobilne igre u kojima zid ponuda
može ili reklamirati igre trećih strana ili niz igara od istog programera.

Banner Interstitial Video Native

Slika 4.2 – Formati mobilnih oglasa

4.1.4. Implementacija oglasa

AdMob objedinjuje sve funkcije mobilnih oglasa u jednu platformu. Moguće je


prijaviti se na AdMob platformu korištenjem Google naloga. AdMob koristi i AdSense i
Google Ads naloge za upravljanje nekim od njegovih funkcija kao što su plaćanja i kućni
oglasi16. Naloge je moguće kreirati prijavom na zvaničnu web stranicu17. Nakon prijave sa
Google nalogom, potrebno je popuniti podatke za izradu novih AdSense i Google Ads naloga.
Pri tome, odabir zemlje ili teritorije će odrediti valutu u kojoj se vrši isplata. Biranje iste
vremenske zone za oba naloga osigurava precizno izvještavanje. Valuta za naplatu Google
oglasa je valuta koja se koristi za plaćanje Google-u ako se koriste Google oglasi za
pokretanje plaćenih kampanja. Kreiranjem AdMob naloga, kreiraju se AdSense i Google Ads
nalozi i povezuju sa AdMob-om. Tako da je moguće postaviti (implementirati oglase) za
objavljene i neobjavljene aplikacije. Ako se postavi neobjavljena aplikacija, potrebno je vratiti

15
JSON (JavaScript Object Notation) je tekstualno baziran standard za razmjenu podataka.
16
Oglas koji promoviše vlastitu aplikaciju.
17
https://apps.admob.com/.

20
Diplomski rad Dragan Milanović

se na AdMob i povezati je s njenim unosom u trgovini aplikacija kasnije kada se aplikacija


objavi [17].
Integracija SDK-a za Google mobilne oglase u aplikaciju prvi je korak ka prikazivanju
oglasa i ostvarivanju prihoda. Aplikacije mogu da uvezu SDK za Google mobilne oglase
pomoću Gradle dependency-ja koji ukazuje na Google Maven repozitorijum. Da bi se koristio
taj repozitorijum mora se referencirati u datoteci build.gradle na nivou projekta, kao što je
prikazano u listingu 4.1.

allprojects {
repositories {
google()
jcenter()
}
}

Listing 4.1 – Google SDK integracija


Takođe, u datoteci build.gradle na nivou aplikacije u sekciju "dependencies" se mora
dodati linija koja upućuje Gradle da povuče najnoviju verziju SDK-a za mobilne oglase. Kada
se to uradi, potrebno je izvršiti Gradle sinhronizaciju projekta. Primjer app-level build.gradle
datoteke je prikazan u listingu 4.2.

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.google.android.gms:play-services-ads:17.2.0'
}

Listing 4.2 – Integracija SDK za oglase


Naredni korak je dodavanje AdMob ID-a u AndroidManifest.xml, sa tag-om <meta-
data>. Primjer dodavanja AdMod ID-a je prikazan u listingu 4.3.

<manifest>
<application>
<!-- Sample AdMob App ID -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
</application>
</manifest>

Listing 4.3 – Dodavanje AdMob ID-a

Kada se integriše SDK, moguće je odabrati format oglasa i slijediti korake za njegovu
implementaciju. Prije učitavanja oglasa, potrebno je da aplikacija inicijalizuje SDK za
mobilne oglase tako što će pozvati MobileAds.initialize() s ID-em AdMob aplikacije. Ovo
treba uraditi samo jednom, idealno pri pokretanju aplikacije.

21
Diplomski rad Dragan Milanović

Banner oglasi se implementiraju tako što se u aktivnost dodaju linije koda prikazane u
listingu 4.4 i 4.5.

...
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
...

Listing 4.4 – main_activity.xml

...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {


private AdView mAdView;

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");

mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}

Listing 4.5 – MainActivity.java

Interstitial oglase traže i prikazuju InterstitialAd objekti. Prvi korak je instanciranje


InterstitialAd-a i postavljanje njegovog ID-a oglasne jedinice. Ovo se radi u onCreate metodi
aktivnosti, a prikazivanje upotrebom metode show pri čemu treba obratiti pažnju da je oglas
već učitan (listingu 4.6).

22
Diplomski rad Dragan Milanović

...
import com.google.android.gms.ads.InterstitialAd;

public class MainActivity extends AppCompatActivity {


private InterstitialAd mInterstitialAd;

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");

mInterstitialAd = new InterstitialAd(this);


mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}

public void showInterstitial(View v) {


if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
}
}

Listing 4.6 – Interstitial oglas

Native oglasi se učitavaju preko klase AdLoader, koja ima svoju klasu Builder za
prilagođavanje tokom kreiranja. Dodavanjem listener-a AdLoader-u prilikom njegovog build-
a, aplikacija određuje koje vrste oglasa je spremna da primi (listingu 4.7).

...
AdLoader adLoader = new AdLoader.Builder(context, AD_MOB_APP_ID)
.forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
@Override
public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
// PRIKAŽI OGLAS
}})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
// NEUSPJEH PRIKAZA OGLASA
}})
.withNativeAdOptions(new NativeAdOptions.Builder()
// POZIV METODA NativeAdOptions.Builder
.build())
.build();
...

Listing 4.7 – Native oglas

23
Diplomski rad Dragan Milanović

4.2. Premium

Premium aplikacije korisnicima naplaćuju naknadu za preuzimanje i obično se kupuju


preko prodavnica aplikacija. Za ovaj model je moguće postaviti vlastitu cijenu. Obezbjeđuje
garantovan prihod za svako preuzimanje aplikacije. Ako aplikacija košta 0.99 dolara, a
prodavnice aplikacija uzimaju oko 0.30 dolara, zaradi se 0,69 dolara za svako preuzimanje
aplikacije. Premium aplikacije obično imaju veće stope angažmana. Pošto ljudi plaćaju za
aplikaciju, jasno je da oni zaista žele to rješenje. Ali samim tim obično imaju veća očekivanja
i ne praštaju greške u aplikaciji. Takođe, teško je konkurisati besplatnim aplikacijama. Kroz
različite prodavnice aplikacija preovladavaju besplatne aplikacije, što premium aplikacijama
otežava privlačenje korisnika. Aplikacija mora imati jedinstvene karakteristike kako bi
opravdala cijenu preuzimanja i razlikovala se od besplatnih konkurenata. Na primjer,
aplikacija sa slike 4.3 nudi 3D sadržaj kao i odgovarajuća aplikacija za računar.

Slika 4.3 – Trenutno najpoznatija premium aplikacija

U Google Play Console-i je moguće postaviti aplikaciju kao komercijalnu ili


besplatnu, odabrati u kojim zemljama je dostupna aplikacija i uključiti se za distribuciju
aplikacije na dodatne Android uređaje i programe. Postavljanje cijene za komercijalnu
aplikaciju zahtijeva podešavanje profila plaćanja i određivanje poreske stope. Zatim, u Google
Play Console-i na stranici za cijene i distribuciju samo se unese cijena. Google koristi cijenu
koja se unosi kao osnovu za izračunavanje tržišno specifičnih cijena. Pretvara cijenu u lokalnu
valutu, dodaje porez (u odabranim zemljama), te primijenjuje lokalne obrasce cijena i važeći
kurs za datum na koji se odredi cijena aplikacije. Moguće je ručno osvježiti cijenu kako bi se
osiguralo da lokalna cijena ima najnoviji kurs. Kada lokalna valuta nije podržana, generiše se
cijena u USD ili EUR. Cijene u USD ili EUR se temelje na cijeni koja se unese i valuta koja
se koristi u svakoj zemlji je postavljena i ne može se mijenjati.
Nakon što se objavi ili ažurira aplikacija, uključujući promjene cijena, dodavanje
SKU18-ova ili mijenjanje postavki distribucije aplikacije, može proći nekoliko sati dok se
promjene ne prikažu na Google Play-u. Aplikaciju je moguće promijeniti iz komercijalne
(Paid) u besplatnu (Free). Kada se aplikacija jednom ponudi besplatno, ne može se promijeniti
ponovo u komercijalnu verziju. Ako se aplikacija želi ponovo naplaćivati, mora se kreirati
nova aplikacija sa novim imenom paketa i ponovo navesti cijena.
Za aplikacije koje se nude putem usluge Google Play, naknada za transakcije iznosi
30% od cijene. Pri kupovini aplikacije, vlasnik aplikacije dobija 70% od uplate, preostalih
30% ide distribucijskom partneru i operativnim naknadama.

18
SKU (Stock Keeping Unit) je poseban identifikator proizvoda u prodaji.

24
Diplomski rad Dragan Milanović

4.3. Freemium

Freemium aplikacije su kombinacija besplatnog, modela sa oglasima i plaćenog


premium modela. Aplikacija je besplatna za preuzimanje, ali korisnici mogu nadograditi
aplikaciju na premium verziju koja ima više mogućnosti, uz odgovarajuću naknadu. Ovaj
model omogućava da se privuče velika grupa korisnika i najzainteresovanijim korisnicima se
pruže vrhunske usluge. Korisnici su u mogućnosti da testiraju uslugu prije kupovine, što znači
manji rizik za njih. Ovo je fleksibilan model koji se može prilagoditi gotovo svakoj vrsti
aplikacije - igre, uslužni programi, aplikacije za komunikaciju i mnoge druge. Za mnoge vrste
aplikacija moguće je mjesečno naplaćivati premium verziju što znači predvidivi, ponavljajući
prihod. Međutim, u nekim slučajevima teško je istovremeno ponuditi i uvjerljivu besplatnu
verziju i komercijalnu verziju svoje aplikacije. Ako se nudi previše mogućnosti besplatno,
teško je uvjeriti postojeću korisničku bazu da plate nadogradnju. Sa druge strane, ako se ne
ponudi dovoljno besplatnih funkcionalnosti, biće teško dobiti korisnike komercijalne verzije.
Model je idealan za aplikacije koje imaju korisnu besplatnu verziju i primamljive plaćene
beneficije i dodatke.
Freemium aplikacije su najpopularnije i imaju veću bruto zaradu od svih modela
monetizacije koje danas koriste kreatori aplikacija [15], a mobilne aplikacije (posebno igre)
što više stvaraju ovisnost to više povećavaju prihode. Primjer freemium aplikacija: Clash of
Clans i Candy Crush Saga (slika 4.4).

Slika 4.4 – Freemium mobilne aplikacije

25
Diplomski rad Dragan Milanović

4.4. eCommerce

Ovaj model je vrlo jednostavan – prodaje se fizička roba kroz aplikaciju. Aplikacija je
besplatna za preuzimanje i posjeduje portal za korisnike koji pretražuju i kupuju proizvode.
Profitne marže za eCommerce biznise su obično veće od tradicionalnih prodavnica. Moguće
je započeti prodavanje robe sa malim inventarom, mnogo jednostavnije i sa smanjenim
rizikom. Model je idealan za kompanije koje prodaju fizičku robu, na primjer Amazon (slika
4.5).

Slika 4.5 – eCommerce mobilne aplikacije

4.5. Kupovina u aplikaciji (IAP)

Ova strategija monetizacije se oslanja na prodaju digitalnih proizvoda unutar


aplikacije. Obično je sama aplikacija besplatna za korisnike, a relevantne pogodnosti se nude
uz naknadu. Na primjer, igra u kojoj korisnici pogađaju broj u 5 pokušaja može ponuditi 3
dodatna pokušaja za malu naknadu. Marža profita može biti visoka jer se prodaju digitalni a
ne fizički proizvodi, te se lako može kombinovati sa drugim modelima. Međutim, prodavnice
aplikacija obično smanjuju prihode za virtuelnu robu (ali ne i fizičku robu ili usluge) kupljenu
unutar aplikacije i obično samo 2-3% korisnika postaju kupci. Model je idealan za igrice i
koristi se u naslovima kao što je Candy Crush Saga (slika 4.4 desno).

4.5.1. Uvod

Google je obezbijedio API koji omogućava ugradnju raznih mogućnosti kupovine u


aplikaciji, s tim da se može prodavati samo digitalna roba. Nijedna verzija API-a ne
omogućava prodaju fizičke robe ni materijalnih dobara. Roba kupljena u aplikaciji postaje u
cijelosti vlasništvo korisnika ili je korisnik postepeno troši, ali se ne vraća. Servis In-App
Billing je zvanično Google-ovo rješenje za kupovinu u aplikacijama. Preduslov za upotrebu
API-a, bez obzira na verziju, jeste da se aplikacija nalazi u ponudi prodavnice Google Play i
da slijedi pravila za distribuciju tih aplikacija. Aplikacija mora biti u stanju da komunicira sa

26
Diplomski rad Dragan Milanović

Google Play servisima [18]. Google Play Billing se može koristiti za prodaju sljedećih vrsta
proizvoda u aplikaciji:
 Jednokratni proizvodi: Proizvod u aplikaciji koji zahtijeva jednokratnu naknadu koja
se ne ponavlja nakon plaćanja. Dodatni nivoi igre, premium nagradne kutije i medijske
datoteke su primjeri jednokratnih proizvoda. Google Play konzola naziva jednokratne
proizvode managed products, a biblioteka Google Play Billing ih naziva "INAPP".
 Nagradni proizvodi: Proizvod u aplikaciji koji zahtijeva od korisnika da gleda video
oglas. Dodatni pokušaji, valuta u igri i brzo izvršavanje zadatih zadataka su primjeri
nagradnih proizvoda. Google Play konzola naziva nagradne proizvode rewarded
products, a biblioteka Google Play Billing ih naziva "INAPP".
 Pretplate: Proizvod u aplikaciji koji zahtijeva periodično ponavljajuću naknadu.
Online časopisi i usluge streaming-a muzike su primjeri pretplata. Google Play Billing
ih naziva "SUBS".

Google Play Billing prati proizvode i transakcije koristeći žetone kupovine i


identifikatora (ID-a) narudžbe. Žeton ili token je niz znakova koji predstavlja pravo kupca na
proizvod u Google Play-u. Označava da je korisnik platio za određeni proizvod, predstavljen
SKU-om. ID narudžbe je niz znakova koji predstavlja finansijsku transakciju na Google Play-
u. Ovaj niz znakova se nalazi na računu koji se šalje email-om kupcu, a programeri trećih
strana koriste ID narudžbe za upravljanje povratima. ID-evi naloga se takođe koriste u
izvještajima o prodaji i isplatama. Za jednokratne proizvode i nagrađene proizvode, svaka
kupovina stvara novi token i novi ID narudžbe. Za pretplate, početna kupovina stvara žeton i
ID narudžbe. Za svaki kontinuirani obračunski period, žeton kupovine ostaje isti a izdaje se
novi ID narudžbe. Nadogradnje, poništavanje i ponovno prijavljivanje stvaraju nove žetone
kupovine i ID-eve narudžbe.

4.5.2. Implementacija

Za implementaciju kupovine u aplikaciji, pored developer naloga, potrebno je kreirati


trgovački nalog i povezati ih. Registracija trgovca se odvija u Google Play Console-i, u
meniju „upravljanje narudžbama“. Trgovački nalog se može otvoriti i direktno u Google
Checkout Merchant. Kada se testira kupovina u aplikacijama mora se koristiti prava kreditna
kartica, međutim, za svaku tako obavljenu transakciju novac će biti vraćen [18].
Google stavlja na raspolaganje biblioteku sa imenom Google Play Billing Library, u
kojoj se nalaze sve klase i interfejsi koji su potrebni za povezivanje sa Google-ovim servisima
za naplatu putem aplikacije. Integracija SDK-a za Google Play Billing Library u aplikaciji se
vrši referenciranjem u datoteci build.gradle na nivou aplikacije (listingu 4.8).

dependencies {
...
implementation 'com.android.billingclient:billing:1.2.2'
}

Listing 4.8 – Integracija Google Play Billing SDK

27
Diplomski rad Dragan Milanović

Sljedeći uzorak koda (listing 4.9) pokazuje kako pokrenuti vezu i testirati da li je
BillingClient spreman za upotrebu.

private BillingClient billingClient;


...
billingClient = BillingClient.newBuilder(activity).setListener(this).build();
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingResponse int billingResponseCode){
if (billingResponseCode == BillingResponse.OK) {
// BillingClient SPREMAN
}
}
@Override
public void onBillingServiceDisconnected() {
// PROBAJ PONOVO SA startConnection()
}
});

Listing 4.9 – Klijent za naplatu u aplikaciji

4.6. Pretplate

Slično modelu freemium koji naplaćuje više funkcija, ovaj model naplaćuje više
sadržaja. Korisnici mogu da vide određenu količinu sadržaja besplatno i onda se od njih traži
da se prijave za plaćenu pretplatu za nastavak pristupa. Ovaj model se dobro uklapa sa
oglasima. I dalje je moguće ostvariti zaradu od slobodnih (nepretplaćenih) korisnika s
oglasima, dopuštajući tom visokokvalitetnom sadržaju da bude pristupačniji. Sve dok su
zadovoljni korisnici koji plaćaju, oni će nastaviti da redovno plaćaju. Ali kao i freemium
model, nekim aplikacijama je teško ponuditi i uvjerljivu besplatnu i komercijalnu verziju
aplikacije. Nije lako testirati koliko bi sadržaja trebalo besplatno pružiti. Na primjer, da li bi
aplikacija zaradila više novca nudeći besplatno dijelove svakog članka ili bi se zaradilo više
novca dopuštajući korisnicima da čitaju određeni broj punih članaka besplatno mjesec dana.
Uglavnom, ovaj model je idealan za sadržajne i medijske kompanije. Dobar primjer je
YouTube i YouTube Red.
Za proizvode u aplikaciji koje se nude putem usluge Google Play, u koje spadaju i
pretplatnički proizvodi, naknada za transakcije iznosi 30% od cijene. Od 1. januara 2018.
godine naknada za pretplatničke proizvode se smanjuje na 15% za sve pretplatnike koji ostanu
nakon 12 plaćenih mjeseci. Period stupanja na snagu nove naknade zavisi od aktivnosti
korisnika. Na primjer, ako je pretplatnik aktivan 4 mjeseca, naknada za transakcije će se
smanjiti na 15% nakon 8 plaćenih mjeseci.
Google Play konzola omogućava da se izvrši promjena cijene pretplata koje se nude u
aplikaciji. Ova funkcionalnost je od velike koristi ako se promijeni količina sadržaja ili opseg
pogodnosti u aplikaciji. U svakom slučaju je potrebno obavijestiti korisnika o promjeni cijene.
U roku od najmanje 7 dana je potrebno kontaktirati postojeće pretplatnike o promijeni cijene
prije nego što ih Google Play počne obavještavati. Google Play automatizovano obaviještava
korisnike u vidu prozora (eng. dialog box) koji prikazuje staru cijenu, novu cijenu i datum
kada nova cijena stupa na snagu.

28
Diplomski rad Dragan Milanović

Sve akcije vezane za pretplate se prikazuju programeru u obliku real-time obavještenja


(RTDN19), moguća obavještenja su:
 SUBSCRIPTION_IN_GRACE_PERIOD – u grejs periodu,
 SUBSCRIPTION_ON_HOLD – na čekanju,
 SUBSCRIPTION_RECOVERED – pretplata plaćena,
 SUBSCRIPTION_CANCELLED – pretplata otkazana i
 SUBSCRIPTION_PAUSED – pretplata pauzirana.
Korisnici mogu da pauziraju pretplatu. Kada se omogući funkcija pauze, korisnici
mogu izabrati da pauziraju pretplatu za period od jedne sedmice do tri mjeseca, u zavisnosti
od perioda ponavljanja. Godišnja pretplata se ne može pauzirati, a ograničenja pauze od jedne
sedmice i tri mjeseca podložna su promjeni u bilo kom trenutku. Dok je pretplata pauzirana,
korisnik nema pristup pretplati. Na kraju perioda pauze, pretplata se nastavlja i Google
pokušava da obnovi pretplatu. Ako je nastavak uspješan, pretplata ponovo postaje aktivna
(slika 4.7). Ako nastavak pretplate ne uspije zbog problema sa plaćanjem, korisnik ide u
stanje čekanja računa (slika 4.6).

Slika 4.6 - Korisnik pauzira pretplatu i ne plati nakon pauze

Slika 4.7 - Korisnik pauzira i nastavi pretplatu

19
RTDN (Real-Time Developer Notifications) su obaveštenja u realnom vremenu za programere.

29
Diplomski rad Dragan Milanović

4.7. Hibrid

Ovaj model kombinije oglase i plaćanje u aplikacijama, segmentira publiku i pruža


prilagođeno iskustvo za svaki segment. Ponude za kupovinu u aplikaciji će se prikazati
segmentu korisnika koji će najvjerovatnije kupovati u aplikaciji, a oglasi segmentu koji
vjerovatno neće kupovati u aplikaciji. Pružanje prilagođenih iskustava različitim segmentima
korisnika omogućava korisnicima da se više angažuju. Kao i drugi besplatni modeli, hibridni
model olakšava izgradnju velike korisničke baze. Mnoge aplikacije koje već nude plaćanje u
aplikaciji ili već prikazuju oglase, mogu imati koristi od segmentacije korisnika sa
implementacijim modela hibridne monetizacije. Jedini problem kod ovoga modela je
kompleksnost pravilne segmentacije korisnika
Hibridni model je način na koji većina velikih streaming brendova koristi svoj sadržaj,
uključujući Netflix, Hulu i Apple TV. Međutim, hibridni modeli su jednako primjenjivi za
manje zabavne brendove sa više sadržaja. Na slici 4.8 je prikazana aplikacija koja
implementira hibridni model, u opisu se vidi da sadrži oglase i plaćanje u aplikaciji.

Slika 4.8 – Aplikacija sa oglasima i plaćanjem u aplikaciji

Kada je izabran poslovni model, naredni izazov je odlučivanje o tome koje


karakteristike treba da budu dostupne besplatno, a koje bi trebalo platiti. Za komercijalnu
verziju je potrebno utvrditi najvrjedniji dio aplikacije i sveobuhvatnu listu premium funkcija
aplikacije. Da bi se osiguralo da postoje održivi resursi za proširenje i održavanje besplatnih
usluga aplikacije za besplatnu korisničku bazu implementiraju se oglasi. Oglašavanje treba da
se uklopi u korisničko iskustvo i da ne prekida njegov tok. Odabir tipa oglasa treba da zavisi
od vrste sadržaja koji se nudi, estetike aplikacije i načina na koji se korisnici bave njime.

30
Diplomski rad Dragan Milanović

4.8. Statistika

Google Play Store trenutno (jun 2019) ima preko 2.954.900 aplikacija, od kojih su
4,6% premium a ostalih 95,4% besplatne. Postoji ukupno 49 kategorija, a igre čine 13,7% od
ukupnog broja aplikacija. U prosjeku se objavi 3,967 aplikacija dnevno za ovaj kvartal, što je
oko 28.000 aplikacija sedmično, odnosno preko 130,000 aplikacije mjesečno [19]. AdMob
oglasnu mrežu koristi 57,02% aplikacija i po statistikama iz 2017 godine većina prihoda za
aplikacije se ostvaruje preko oglasa, dok mobilne igre 43% zarade ostvare preko plaćanja u
aplikaciji [20]. Detaljna statistika je prikazana na slici 4.9.

Slika 4.9 - Distribucija prihoda mobilnih aplikacija za 2017 [20]

Plaćanje u aplikaciji postaje sve popularnije, što se može vidjeti na slici 4.10 gdje je
prikazan udio prihoda za mobilne aplikacije kroz period od 7 godina [21]. Međutim, potrebno
je napomenti da po studiji gdje je analizirano 40 Android aplikacija, 20 aplikacija sa oglasima
i njihove odgovarajuće komercijalne verzije kupljene na Google Play-u, komercijalne
aplikacije su se pokazale kao bolji izbor [22]. Iz eksperimentalne studije potvrđeno je da
aplikacije sa oglasima koriste više resursa od njihovih odgovarajućih komercijalnih verzija i
zaključak je da su razlike statistički značajne i da se, u zavisnosti od upotrebe, komercijalne
aplikacije mogu smatrati boljim izborom za korisnika jer se njegov trošak može amortizovati
u kratkom vremenskom periodu.

31
Diplomski rad Dragan Milanović

Slika 4.10 - Udio prihoda mobilnih aplikacija [21]

32
Diplomski rad Dragan Milanović

1. PRAKTIČAN RAD

Cilj praktičnog dijela rada je realizacija aplikacije koja uključuje barem jedan od
analiziranih načina monetizacije. Implementirana je Android aplikacija koja komunicira sa
eksternim sistemom i oglasnom mrežom, preuzima podatke od eksternog sistema i oglase od
oglasne mreže i vrši njihovo prikazivanje unutar određenih dijelova interfejsa.

1.1. Aplikacija

Naziv aplikacije je Stanica BL, a za kreiranje je korišteno integrisano razvojno


okruženje Android Studio. Aplikacija ima mogućnost prikazivanja redoslijeda dolaska
autobusa za odabranu autobusku stanicu. Na slici 5.1 je prikazan korisnički interfejs aplikacije
sa tipičnim slučajem upotrebe. Korisnik otvori aplikaciju, bira hoće li da traži stanicu na mapi
ili da je pretražuje iz liste, kada klikne na neku stanicu, otvara se nova aktivnost za pregled. U
toj aktivnosti (slika 5.1 desno) se nalaze informacije o konkretnoj stanici, vremena dolaska
autobusa na stanicu i baner oglas. Oglas je implementiran na toj lokaciji jer se preuzme u isto
vrijeme kada se od servisa zatraži redoslijed pristizanja. To znači da, ukoliko korisnik nije
povezan na internet, nema mogućnost pregleda dolazaka. Kada se poveže na internet,
preuzimaju se vremena dolazaka i plasira se baner oglas. Pored baner oglasa, implementran je
i međuprostorni ili interstitial oglas. Ovaj oglas se prikazuje preko čitavog ekrana pa je
potrebno obratiti pažnju kada i gdje da se prikaže. Ne ometajući tok akcija korisnika, on se
prikazuje nakon što korisnik izvrši pregled dolazaka i želi da zatvori aplikaciju.

Slika 5.1 – Korisnički interfejs aplikacije

33
Diplomski rad Dragan Milanović

1.2. Objavljivanje

Nakon kreiranja aplikacije, javlja se potreba za njenim objavljivanjem na Google Play


Store-u što omogućava ostalim korisnicima da pronađu, kupe i instaliraju aplikaciju.
Objavljivanje aplikacije na Google Play Store-u se vrši preko Google Play konzole (slika 5.2),
kojoj se može pristupiti samo sa developer nalogom.

Slika 5.2 – Google Play konzola20

Prvi korak za objavljivanje aplikacije je otvaranje Google Play konzole i prijavljivanje


sa developer nalogom. Proces objavljivanja započinje klikom na hiperlink „izrada aplikacije“
u sekciji „Sve aplikacije“. Tu se, nakon unosa naziva aplikacije, omogućava pristup sekciji
„Unos u trgovinu“. Sekcija „Unos u trgovinu“ zahtijeva podatke kao što su naslov, kratak
opis, detaljan opis, grafički materijali, kategorizacija i kontakt. Za grafičke materijale je
obavezno da se doda:
 ikona visoke rezolucije (512 x 512 px, PNG format),
 najmanje 2 snimka ekrana (screenshots) i
 jedna istaknuta grafika (1024 x 500 px, JPG ili PNG format).

20
https://play.google.com/apps/publish/signup/

34
Diplomski rad Dragan Milanović

5.3 – Dodavanje grafičkih materijala21

Nakon popunavanja polja nacrta aplikacije u sekciji „Unos u trgovinu“, moguće je


definisati produkciono izdanje aplikacije u sekciji „Izdanja aplikacije“. U sekciji „Izdanja
aplikacije“ se vrši upload potpisanog APK fajla (slika 5.4).

Slika 5.4 – Dodavanje APK fajla22

21
https://play.google.com/apps/publish/signup/.

35
Diplomski rad Dragan Milanović

Kada su svi podaci u sekciji „Izdanja aplikacije“ spremni, omogućava se pristup


sekciji „Ocjena sadržaja“. U sekciji „Ocjena sadržaja“ se nalazi upitnik o tome kakav se
sadržaj nalazi u aplikaciji. Aplikacija ne smije da sadrži nasilan, seksualan ili uvredljiv
sadržaj. Popunavanjem ankete i primjenom ocjene sadržaja omogućava se pristup sekciji
„Cijene i distribucija“ (slika 5.5). Sekcija „Cijene i distribucija“ zahtijeva navođenje cijene
aplikacije, kao i dostupnosti za određene zemlje.

Slika 5.5 – Odabir cijene aplikacije21

Nakon popunjavanja svih potrebnih sekcija, aplikaciju je moguće pustiti u produkciju


u sekciji „Izdanja aplikacije“ (slika 5.6). Za kraći vremenski period, nakon puštanja aplikacije
u produkciju, moguće je aplikaciju pronaći u Google Play-u. Obavještenje o tome da je
aplikacija postala dostupna na Google Play stiže u vidu email-a.

Slika 5.6 – Puštanje u produkciju21

22
https://play.google.com/apps/publish/signup/.

36
Diplomski rad Dragan Milanović

1.3. Monetizacija

Za implementaciju oglasa korišten je Google AdMob SDK i postupak koji je opisan


prethodno u radu. Da bi se oglasi mogli prikazivati u aplikaciji potrebno ih je definisati u
AdMob-u. Navodi se aplikacija i sve oglasne jedinice koje se nalaze u njoj (slika 5.7). Nakon
objavljivanja aplikacije u Google Play, potrebno je vratiti se u AdMob i u sekciji „Postavke
aplikacije“ povezati definisanu aplikaciju sa aplikacijom u Google Play-u.

Slika 5.7 – AdMob oglasi23

Baner oglas je implementiran u vidu „pametnog banera“, jer ima mogućnost da


automatski prilagodi svoju veličinu elementu u kom se nalazi. Implementacija se vrši
dodavanjem AdView elementa u layout (listingu 5.1) i dodavanjem koda (listingu 5.2).

<LinearLayout>
...
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
app:adSize="SMART_BANNER"
app:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX">
</com.google.android.gms.ads.AdView>
...
</LinearLayout>

Listing 5.1 – AdView element

23
https://admob.google.com/home/.

37
Diplomski rad Dragan Milanović

import com.google.android.gms.ads.AdView;
...
public class TimelineActivity extends AppCompatActivity {
...
private AdView mAdView;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mAdView = findViewById(R.id.adView);
mAdView.setAdListener(new AdListener() {
@Override
public void onAdOpened() {
// KOD KOJI SE IZVRSI KADA SE OTVORI OGLAS
tvAdSpace.setText("");
}
});

AdRequest adRequest = new AdRequest.Builder().build();


mAdView.loadAd(adRequest);
mAdView.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {}
@Override
public void onAdFailedToLoad(int errorCode) {}
@Override
public void onAdOpened() {}
@Override
public void onAdClicked() {}
@Override
public void onAdLeftApplication() {}
@Override
public void onAdClosed() {}
});
}
...

Listing 5.2 – Učitavanje banera

Interstitial oglas, za razliku od banera, nema element koji se ugrađuje u interfejs i


poziva se samo iz koda kao što je prikazano u primjeru koda 5.3. Interstitial oglas se poziva u
metodi koja se izvršava neposredno nakon učitavanja oglasa, što znači da nema čekanja da se
učita oglas. Učitavanje interstitial oglasa počinje pri napuštanju aktivnosti, tako de se oglas
prikaže na aktivnosti koja se nalazi „ispod“ te.

38
Diplomski rad Dragan Milanović

@Override
protected void onCreate(Bundle savedInstanceState) {
...
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX");
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
mInterstitialAd.show();
} // Ad finishes loading.
@Override
public void onAdFailedToLoad(int errorCode) {} // GRESKA
@Override
public void onAdOpened() {} // PRIKAZAN
@Override
public void onAdClicked() {} // KLIKNUO
@Override
public void onAdLeftApplication() {} // NAPUSTIO APLIKACIJU
@Override
public void onAdClosed() {} // ZATVOREN
});
}
...
@Override
protected void onRestart() {
super.onRestart();
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
...

Listing 5.2 – Implementirani interstitial

Kreirana je i aktivnost koja ima plaćanje u aplikaciji sa ciljem da korisnici mogu kupiti
gorivo za projekat i time pomoći da se realizuje aplikacija u potpunosti. Nažalost, za sad u
BiH moguće je imati samo Google developer nalog, ne i Google Merchant koji omogućava
kreiranje proizvoda u aplikaciji i njihovo prodavanje. Tako da je taj dio potrebno
implementirati pomoću PikPay24-a ili nekog drugog servisa za plaćanje u aplikaciji.
Implementirane su dvije autobuske linije različitih kompanija sa ciljem demonstracije
proizvoda koje te kompanije mogu kupiti. Ukoliko dođe do prodaje jednostavno se dodaju sve
linije i dizajn se prilagodi novom vlasniku. Ovo kao rezultat generiše dvije različite vrste
prihoda. Jedan pri samoj prodaji, a drugi periodičan prihod za održavanje. Ako bi se desilo da
nema zainteresovanog kupca i dalje se mogu implementirati određene linije i ostvariti prihod
od oglasa u aplikaciji.

24
https://ipg.pikpay.ba/

39
Diplomski rad Dragan Milanović

2. ZAKLJUČAK

Monetizacija aplikacija je veoma važan proces za programera, jer se zavisno od tržišta


i vrste aplikacije mogu ostvariti značajni prihodi. Od male ideje koja se pretvori u uspješnu
aplikaciju i pravilno monetizuje, može nastati ozbiljna kompanija koja nudi tu aplikaciju kao
svoj proizvod.
Moguće je imati dvije verzije aplikacije u Google Play-u, besplatnu i komercijalnu
(premium), koje se moraju održavati odvojeno. Kod ovakvog pristupa komplikovano je
izvršiti nadogradnju sa besplatne na komercijalnu verziju. Ako se odabere ovaj način
održavanja aplikacije, moraju postojati dva projekta, po jedan za svaku verziju. To će dovesti
do toga da postoje dvije kopije gotovo identičnog izvornog koda. Jedan od načina kako da se
izbjegne dupliciranje je da besplatna verzija sadrži i premium funkcije koje se otključavaju
tek kada korisnik instalira dodatnu komercijalnu aplikaciju za otključavanje tih premium
funkcija. Međutim, ovo ima isti rezultat kao i prva opcija: moraju se održavati dvije aplikacije
(mada ovaj put drugačije) i korisnici će morati instalirati dodatni softver. Najbolja opcija je
uključiti premium verziju kao kupovinu u aplikaciji. Aplikacija bi sadržavala sve premium
funkcije koje bi bile podrazumijevano zaključane. Kada korisnik plati za proizvod u
aplikaciji, u ovom slučaju premium članstvo, on bi otključao sve funkcije.
Za AdMob oglase potrebno je obratiti pažnju na cijenu klika (CPC) zavisno od države,
moguće je da klik na oglas od korisnika iz BiH ne donosi nikakvu zaradu, a od korisnika iz
SAD donosi 1$. Preporuka je praviti aplikacije za internacionalno tržište i fokusirati se na
države sa vrhunskim reklamnim kampanjama kao što su: Sjedinjene Američke Države,
Australija, Kanada, Maršalska Ostrva, Velika Britanija, Njemačka, Švajcarska, Brazil, Novi
Zeland, Italija itd.
Preporuka je i da se koristi dobar alat za analizu u aplikaciji, na primjer Google
Analytics, koji prikuplja podatke o korisnicima. Korištenje podataka za razumijevanje i
predviđanje ponašanja korisnika važno je za optimizaciju strategije monetizacije. Podaci
mogu pomoći da se istaknu dijelovi gdje su korisnici najviše angažovani u aplikaciji i oni koje
napuštaju. Mogu se saznati mjesta sa kojih dolazi većina korisnika i koje nove mogućnosti za
zaradu postoje. Podaci takođe mogu pomoći da se pokrenu efikasni eksperimenti i da se sa
sigurnošću zna da li je nova ideja pogodna za aplikaciju. Velika je stvar kada korisnik odluči
da napravi kupovinu u aplikaciji. Ako je proces kupovine naporan i težak, mogla bi se izgubiti
potencijalna zarada. Ovo je još jedan slučaj za postavljanje analitičke platforme u aplikaciji.
Analitička platforma treba da prati tok ekrana korisnika i da odredi koji procenat korisnika se
ne odlučuje za kupovinu. Ove informacije mogu pomoći da se optimizuje iskustvo u kupovini
i olakša korisnicima da obave kupovinu u aplikaciji [13].
U okviru rada detaljno je opisana monetizacija Android aplikacija. Za korisnike koji se
nisu ranije bavili monetizaciom aplikacija, date su smjernice kako pravilno pristupiti ovom
procesu. Opisan je i razvoj Android aplikacija, kao i način njihovog objavljivanja. Takođe,
implementirana je i objavljena aplikacija koja demonstrira koncepte monetizacije i
oglašavanja.

40
Diplomski rad Dragan Milanović

LITERATURA

[1] Ian F. Darwin, Android Cookbook. O’Reilly Media, Inc., California, 2017.
[2] „History of Mobile Advertising“, Know Online Advertising,
http://www.knowonlineadvertising.com/online-mobile-advertising/history-of-mobile-
advertising/, posjećeno: 08.05.2019.godine.
[3] Adrianne Jeffries, „Disconnect: why Andy Rubin and Android called it quits“, The Verge,
https://www.theverge.com/2013/3/19/4120208/why-andy-rubin-android-called-it-quits,
posjećeno: 08.05.2019.godine.
[4] "Google's Android OS: Past, Present, and Future", PhoneArena,
https://www.phonearena.com/news/Googles-Android-OS-Past-Present-and-Future_id21273,
posjećeno: 08.05.2019.godine.
[5] Steve Dowling, Lynn Fox, „iPhone to Support Third-Party Web 2.0 Applications“, Apple,
https://www.apple.com/newsroom/2007/06/11iPhone-to-Support-Third-Party-Web-2-0-
Applications/, posjećeno: 08.05.2019.godine.
[6] Matt Strain, „1983 to today: a history of mobile apps“, The Guardian,
https://www.theguardian.com/media-network/2015/feb/13/history-mobile-apps-future-
interactive-timeline/, posjećeno: 08.05.2019.godine.
[7] „Number of available applications in the Google Play Store from December 2009 to
December 2018“, Statista, https://www.statista.com/statistics/266210/number-of-available-
applications-in-the-google-play-store/, posjećeno: 08.05.2019.godine.
[8] Maxim Shafirov, „Kotlin on Android. Now official“, blog.jetbrains.com,
https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/, posjećeno:
08.05.2019.godine.
[9] „Meet Android Studio“, Android Developers, https://developer.android.com/studio/intro,
posjećeno: 08.05.2019.godine.
[10] Phil Dutson, Android Development Patterns. Pearson Education, Inc., Indiana, 2016.
[11] Veikko Krypczyk, Olena Bochkor, „Von der Idee bis zum Store“, Javamagazin, 1.2019,
str. 84-92, januar 2019.
[12] „Publish your app“, Android Developers, developer.android.com/studio/publish,
posjećeno: 08.05.2019.godine.
[13] Joe Salisbury, The No-nonsense Guide to App Monetization. AdMob, San Francisco,
2016.
[14] Joe Salisbury, The No-nonsense Guide to In-App Ads. AdMob, San Francisco, 2016.
[15] Artyom Dogtiev, „Top Mobile Ad Networks 2018“, Business of Apps,
http://www.businessofapps.com/guide/top-mobile-ad-networks/, posjećeno:
08.05.2019.godine.
[16] Hu, Yu; Shin, Jiwoong; Tang, Zhulei, „Performance-based Pricing Models in Online
Advertising: Cost per Click versus Cost per Action“, 2012,
http://faculty.som.yale.edu/JiwoongShin/Downloads/workingpapers/PerformanceBasedPricin
gModels.pdf, posjećeno: 08.05.2019.godine.
[17] „Mobile Ads SDK (Android)“, Android Developers,
https://developers.google.com/admob/android/quick-start, posjećeno: 08.05.2019.godine.
[18] James Steele, Nelson To, Android Developer's Cookbook: Building Applications with the
Android SDK. Addison-Wesley Professional, Boston, 2013.
[19] „Store Stats for Mobile Apps“, 42matters, https://42matters.com/stats, posjećeno:
10.06.2019.godine.
41
Diplomski rad Dragan Milanović

[20] „Distribution of worldwide mobile application revenues in 2017, by channel“, Statista,


https://www.statista.com/statistics/273120/share-of-worldwide-mobile-app-revenues-by-
channel/, posjećeno: 11.06.2019.godine.
[21] „In-App Purchases: ABC of Freemium App Monetization“, Medium,
https://medium.com/@aprofita_co/in-app-purchases-abc-of-freemium-app-monetization-
e742043927d2, posjećeno: 11.06.2019.godine.
[22] Rubén Saborido, Foutse Khomh, Giuliano Antoniol, Yann-Gaël Guéhéneuc,
„Comprehension of Ads-supported and Paid Android Applications: Are They Different?“,
25th International Conference on Program Comprehension (ICPC), Montréal, 2017.

42

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy