• No results found

Sj¨alvst¨andigt arbete p˚a grundniv˚a

N/A
N/A
Protected

Academic year: 2021

Share "Sj¨alvst¨andigt arbete p˚a grundniv˚a"

Copied!
73
0
0

Loading.... (view fulltext now)

Full text

(1)

Datateknik

Computer Engineering

Annonssp˚arning f¨or digitala medier

En systemj¨amf¨orelse f¨or uppf¨oljning av annonskonvertering hos Facebook-annonser Linus Sj¨obro

(2)

Handledare: Magnus Eriksson, magnus.eriksson@miun.se F¨orfattare: Linus Sj¨obro, lisj1502@student.miun.se

Utbildningsprogram: Civilingenj¨or inom Datateknik, 300hp Kurs: Examensarbete, DT099G, 15hp

Huvudomr˚ade: Datateknik Termin, ˚ar: 6, 2019

(3)

Sammanfattning

Facebook ¨ar idag v¨arldens st¨orsta annonsplattform vilket g¨or det strategiskt smart f¨or f¨oretag att annonsera sin produkt eller sina tj¨anster p˚a plattformen.

Att f¨olja upp resultatet av dessa annonser ¨ar f¨or f¨oretagen en viktig parameter f¨or att veta om den annonserade m˚algruppen ¨ar r¨att. Syftet med detta arbete var att unders¨oka om ett eget system f¨or mobilapplikationer hos f¨oretaget Leeroy kan utvecklas f¨or uppf¨oljning av annonskonverteringar hos Facebook-annonser och hur Facebooks egna system implementeras och om andra system g˚ar att anv¨anda.

Utifr˚an detta syfte kunde ett antal m˚al fastst¨allas som alla kunde besvaras.

Utifr˚an en f¨orstudie kunde information insamlas om hurvida en egen l¨osning g˚ar att till¨ampa. Vilket resulterat i svaret nej, det ¨ar idag inte m¨ojligt att utveckla en egen l¨osning. Genom f¨orstudiens resultat kan en rekommenderad l¨osning presenteras d¨ar Facebooks system rekommenderas utifr˚an en j¨amf¨orelse mellan Facebook och Google Firebase. Denna rekommenderade l¨osning har resulterat i en implementationsguide som Leeroy kan anv¨anda f¨or att implementera Facebook SDK i sin applikationsportf¨olj baserat p˚a React Native.

Nyckelord: Facebook, Google Firebase, annonskonvertering, annonser, uppf¨oljning, React Native

(4)

Abstract

Facebook is today the biggest ads platform in the world. This makes it strategi- cally smart for companies to run their ads on the platform. To follow up the result from these ads is an important part for the companies to know if the target audience is the right one. The purpose with this thesis was to investigate if it’s possible for the company Leeroy to develope their own system that follow up ad conversion for Facebook ads. But also investigate how to implement Facebook’s own system and if other systems could be used. From this two purposes a number of goals have been set, which all could be answered. A pilot study resulted in the gathering of information if an own solution could be implemented. The result of this pilot study results in the answer no, an own solution could not be implemented at this state. Through the pilot study a recommended solution could be presented where Facebook’s system is the recommended way to go.

This result is based on a system comparison between Facebook and Google Firebase. This recommended solution has resulted in a implementation guide that Leeroy can use to implement Facebook SDK in their application portfolio based on React Native.

Keywords: Facebook, Google Firebase, Ad conversion, ads, monitoring, React Native

(5)

F¨ orord

Denna uppsats ¨ar skriven vid Mittuniversitet v˚aren och sommaren 2019.

Jag vill rikta ett stort och varmt tack till f¨oretaget Leeroy som l˚atit mig utf¨ora mitt examensarbete hos dem, till mina handledare p˚a f¨oretaget; Anders H¨ar´en, Alexander Andersson samt Martin Lundberg. De har hj¨alp, st¨ottat och besvarat fr˚agor under arbetets g˚ang. De har ¨aven visat stort engagemang f¨or arbetet.

Jag vill ¨aven rikta ett stort tack till min handledare Magnus Eriksson samt examinator Ulf Jennehag p˚a Mittuniversitetet f¨or det st¨od och kommentarer de givit under detta arbete.

(6)

Inneh˚ all

1 Introduktion 1

1.1 Bakgrund och problemmotivering . . . 1

1.2 Overgripande syfte . . . .¨ 2

1.3 Avgr¨ansningar . . . 2

1.4 M˚al . . . 3

1.5 Oversikt . . . .¨ 3

2 Teori 4 2.1 Leeroy . . . 4

2.1.1 Om f¨oretaget . . . 4

2.1.2 Tidigare forskning . . . 4

2.1.3 Nuvarande systeml¨age . . . 4

2.2 Application Programming Interface . . . 5

2.3 Software Development Kit . . . 5

2.4 Software Architecture Documentation . . . 6

2.4.1 Sekvensdiagram . . . 6

2.5 Externa programvaruberoenden . . . 6

2.6 Node Package Manager . . . 7

2.6.1 Popularitet . . . 7

2.6.2 Funktion och anv¨andning . . . 8

2.7 React Native . . . 8

2.7.1 Funktionalitet . . . 9

2.7.2 Milj¨okonfigurering . . . 11

2.8 Facebook . . . 12

2.8.1 Annonshantering . . . 12

2.8.2 Facebook-applikationer . . . 13

2.8.3 Facebook Analytics . . . 15

2.8.4 Facebook SDK . . . 15

(7)

2.9 Google Firebase . . . 17

2.9.1 Firebase-projekt . . . 17

2.9.2 Firebase-applikationer . . . 17

2.9.3 Dynamiska l¨ankar . . . 17

2.9.4 Google Analytics . . . 18

3 Metod 20 3.1 F¨orstudie . . . 20

3.1.1 Datainsamling . . . 20

3.1.2 Kravspecifikation . . . 20

3.1.3 Implementation . . . 21

3.2 Arbetsmetod . . . 21

3.2.1 Best˚andsdelar . . . 21

3.3 Utveckling . . . 22

3.3.1 Programspr˚ak . . . 22

3.3.2 Applikationsutveckling . . . 23

3.3.3 Verktyg . . . 23

3.3.4 Tester . . . 24

3.4 Utv¨ardering . . . 24

4 Konstruktion 27 4.1 Kravspecifikation . . . 27

4.1.1 Milj¨ovariabler . . . 27

4.1.2 Frist˚aende implementation . . . 27

4.1.3 M¨ojlighet att utesluta SDK . . . 27

4.2 Facebook . . . 28

4.2.1 Konfiguration Facebook-applikation . . . 28

4.2.2 Applikationskonstruktion . . . 29

4.2.3 Applikationstester . . . 35

4.3 Google . . . 37

4.3.1 Konfiguration Firebase-applikation . . . 37

4.3.2 Applikationskonstruktion . . . 38

4.3.3 Applikationstester . . . 40

(8)

5 Resulat 42

5.1 Egen l¨osning . . . 42

5.2 Facebook . . . 44

5.2.1 Anv¨andarv¨andlighet . . . 44

5.2.2 Konfiguration . . . 45

5.2.3 Implementation . . . 45

5.3 Google . . . 46

5.3.1 Anv¨andarv¨anlighet . . . 46

5.3.2 Konfiguration . . . 47

5.3.3 Implementation . . . 47

6 Slutsats 48 6.1 Egen l¨osning . . . 49

6.1.1 Unik identifikation . . . 49

6.1.2 H¨andelseregistrering . . . 49

6.2 Facebook SDK . . . 50

6.3 Google Firebase SDK . . . 50

6.4 Rekommenderad l¨osning . . . 51

6.5 Etiska och samh¨alleliga aspekter . . . 53

6.6 Fortsatt utveckling . . . 54

Bilagor 59 A Kravspecifikation 60 B Facebook implementation 61 B.1 Facebook application . . . 61

B.2 Facebook SDK . . . 62

B.2.1 iOS installation . . . 62

B.2.2 Android installation . . . 64

(9)

Terminologi

Ordlista

annonskonvertering Det utslag som en annons resulterar i n¨ar en anv¨andare interagerar med annonsen.

applikation Program som installeras p˚a en enhet. I detta arbete betyder detta en mobilapplikation f¨or Android och Apple iOS.

djupl¨ankning En l¨ank som anv¨ands f¨or att kunna skicka en anv¨andare till en speciell plats i en applikation.

pixelsp˚arning Anv¨ands vid h¨andelsesp˚arning av anv¨andare och anv¨andarbeteende vid webbsidor.

Akronymer

API Application Programming Interface NPM Node Package Manager

SAD Software Architecture Documentation SDK Software Development Kit

UML Unified Modeling Language

(10)

Kapitel 1: Introduktion

1.1 Bakgrund och problemmotivering

Annonser i sociala medier har under m˚anga ˚ar stadigt vuxit i popularitet d¨ar Facebook ¨ar den plattform som st˚ar f¨or den st¨orsta andelen. Facebook kom inf¨or 2018 att st˚a f¨or 10% av den totala annonsf¨ors¨aljningen p˚a annonsmark- naden i USA [1]. Denna annonsmarknad innefattar allt fr˚an digitala annonser p˚a exempelvis Facebook och Instagram som riktas mot en viss m˚algrupp till traditionella annonser i trycka tidningar. Under f¨orsta kvartalet 2019 hade Fa- cebook ¨over 1,5 miljarder aktiva anv¨andare p˚a daglig basis [2]. Utifr˚an denna stora marknadsandel och anv¨andarbas ¨ar det strategiskt smart f¨or f¨oretag att driva annonskampanjer p˚a plattformen f¨or att n˚a ut till en s˚a stor m˚algrupp som m¨ojligt.

En viktig del i dessa annonskampanjer ¨ar att kunna kontrollera vilket utslag annonsen har bidragit till. F¨oretag som erbjuder en eller flera mobilapplikationer och som annonserar om dessa beh¨over kunna se statistik ¨over resultatet f¨or att veta om m˚algruppen ¨ar av r¨att typ. Ett exempel p˚a resultat kan vara antalet applikationsinstallationer. F¨or att kunna sp˚ara dessa h¨andelser m˚aste de tj¨anstef¨oretag som tillhandah˚aller mobilapplikationer f¨or f¨oretag integrera en l¨osning f¨or att enkelt kunna sp˚ara de applikationsh¨andelser som sker.

Facebook tillhandah˚aller en egen l¨osning f¨or att sp˚ara dessa h¨andelser. Men denna l¨osning skapar en viss komplexitet n¨ar en ny mobilapplikation skapas och konfigureras. Om tj¨anstef¨oretaget tillhandah˚aller m˚anga kundapplikationer kr¨avs mycket arbete f¨or att tillhandah˚alla denna tj¨anst i varje applikation.

Detta arbete kommer att utforska och utv¨ardera de alternativ som tj¨anstef¨oretag har g¨allande implementation av installationssp˚arning f¨or applikationer i mobila enheter. Resultatet av arbetet kan sedan anv¨andas f¨or att v¨agleda tj¨anstef¨oretag i vilken l¨osning som kan implementeras.

(11)

1.2 Overgripande syfte ¨

Syftet med arbetet ¨ar att studera vilka tillg¨angliga alternativ som finns g¨allande sp˚arning av applikationsinstallationer f¨or Facebook-annonser hos plattformarna Android och Apple iOS. Samt erh˚alla ny kunskap om hur denna sp˚arning kan integreras med Facebooks annonsplattform.

Utifr˚an detta syfte har tv˚a fr˚agest¨allningar utformas;

1. Hur fungerar och implementerar man Facebooks SDK f¨or annonssp˚arning?

2. G˚ar det att implementera sp˚arning av applikationsinstallationer utan Facebooks SDK?

1.3 Avgr¨ ansningar

Detta arbete kommer att avgr¨ansas genom att enbart studera hur f¨oretaget Leeroy utvecklar samt konfigurerar sina applikationer. Vilket inneb¨ar att f¨oretag med andra konfigurations- och utvecklingsprocesser m¨ojligtvis inte kan genomf¨ora en implementeringen utan vissa anpassningar.

Arbetet kommer att utg˚a ifr˚an att studera hur man kan implementera en l¨osning f¨or att sp˚ara applikationsinstallationer fr˚an Facebook-annonser, vilket medf¨or att andra annonsplattformar och sp˚arning av andra applikationsh¨andelser utel¨amnas fr˚an studien.

En integration kommer att p˚ab¨orjas men inte till fullo implementeras p˚a grund av den tidram som finns.

(12)

1.4 M˚ al

Arbetet kan delas upp i ˚atta delm˚al;

1. Unders¨oka om ett eget alternativ f¨or annonssp˚arning g˚ar att utveckla utan att anv¨anda Facebook SDK

2. Unders¨oka hur Facebook SDK implementeras och den konfigurationsprocess som kr¨avs

3. Unders¨oka om andra plattformar g˚ar att anv¨anda f¨or att sp˚ara resultat av Facebook-annonser

4. Utv¨ardera de olika l¨osningarna genom att j¨amf¨ora komplexitet g¨allande konfiguration

5. Utv¨ardera de olika l¨osningarna genom att j¨amf¨ora komplexitet vid en implementation

6. Utv¨ardera de l¨osningar som framkommit genom att j¨amf¨ora komplexitet g¨allande anv¨andbarhet

7. Implementera ett l¨osningsexempel som kan anv¨andas i Leeroys applika- tionsportf¨olj

8. Presentera en l¨osning f¨or Leeroy utifr˚an arbetets resultat

1.5 Oversikt ¨

Kapitel 2 behandlar och beskriver relevant teori som behandlas i arbetet. Detta kapitel hj¨alper l¨asaren att f¨orst˚a de delar som anv¨ants i arbetet. Kapitel 3 beskriver de metoder som anv¨ants i arbetet f¨or att utf¨ora det teoretiska samt praktiska arbetet. I Kapitel 4 beskrivs och behandlar den implementation som gjorts i arbetet g¨allande Facebook samt Google Firebase SDK. I kapitel 5 beskrivs de resultat som teori, metod samt implementationen i arbetet har h¨arlett till och kapitel 6 diskuterar arbetets slutsats.

(13)

Kapitel 2: Teori

2.1 Leeroy

2.1.1 Om f¨ oretaget

Mjukvaruf¨oretaget Leeroy, grundat 2008, har utvecklat en digital plattform som m¨ojligg¨or en ¨okad f¨ors¨aljning och minskad kostnad f¨or restaurangbranchen.

Leeroy har s˚a sent som i mars 2019 tagit in en sammanlagd investering om 44 miljoner kronor d¨ar bland annat Zenith Venture Capital och Collector Bank st˚ar som investerare. [3] Investeringen ska hj¨alpa Leeroy att f¨orbereda ett intr¨ade p˚a den amerikanska marknaden. [4]

2.1.2 Tidigare forskning

Intervjuer som Leeroy genomf¨ort med flera stora restaurangkedjor visar att Facebook ¨ar en viktig bit i deras lojalitetsarbete. Alla kedjor har ett Facebook konto som anv¨ands f¨or att kommunicera med sina kunder. M˚anga av dessa kedjor anv¨ander ¨aven Facebooks annonsplattform f¨or att locka nya kunder att anv¨anda deras mobilapplikationer.

Leeroys kunder vill kunna m¨ata hur m˚anga anv¨andare som har klickat p˚a en annons och som sedan faktiskt laddar ner kundens applikation. Leeroy beh¨over hitta ett smidigt s¨att att koppla kundernas applikationer mot kundernas Facebook-konton. Problemet ¨ar att Leeroy vid tidpunkten detta arbete utf¨orts har tio olika kunder vilket resulterar i totalt tjugo stycken applikationer d˚a varje kund har en applikation f¨or b˚ada Android och Apple Iphone.

2.1.3 Nuvarande systeml¨ age

Leeroys kundapplikationer pratar med Leeroy app backend som ¨ar ett mellanlager mellan applikationerna och Leeroy Engine. Leeroy Engine hanterar och bearbetar

(14)

den data som skickas till och fr˚an applikationerna. En f¨orenkling av Leeroys system kan ses i figur 2.1.

Figur 2.1: F¨orenklad systembild ¨over Leeroys system

2.2 Application Programming Interface

Ett Application Programming Interface (API) ¨ar en samling av olika komman- don, funktioner och protokoll som utvecklare kan anv¨anda vid utveckling av mjukvara. Ett API kan som exempel inneh˚alla byggstenar f¨or Apple iOS r¨orande rotering och andra komponenter f¨or anv¨andargr¨anssnitt. D˚a dessa operationer och komponenter redan finns i det API man anv¨ander sig av beh¨over utvecklaren inte sj¨alv skriva dessa funktioner fr˚an grunden. Ett API kan ¨aven anv¨andas till att koppla ihop en eller flera olika system med varandra. Som exempel kan ett API anv¨andas f¨or att koppla ihop en mobilapplikation med en server som skickar data till applikationen och sedan tillbaka till servern igen. [5]

2.3 Software Development Kit

Ett Software Development Kit (SDK) ¨ar en samling definierade programfunktio- ner som anv¨ands vid utveckling av mjukvara. Ett SDK ¨ar enkelt att integrera i sitt eget projekt och ger full tillg˚ang till de funktioner som SDK inneh˚aller. Det finns olika typer av SDK beroende p˚a vilken typ av mjukvara som utvecklas. [6]

Ett SDK ¨ar ofta v¨aldokumenterat med exempel och instruktioner hur det anv¨ands. Det h¨ar d˚a de ofta ¨ar stora och kan vara r¨att komplexa, vilket g¨or det mycket sv˚art att anv¨anda utan dess dokumentation. [6]

(15)

2.4 Software Architecture Documentation

Software Architecture Documentation (SAD) anv¨ands inom mjukvaruutveck- ling f¨or att dokumentera hur kod och systemet ¨ar uppbyggt. Det finns olika dokumentationstyper som anv¨ands f¨or att skapa dokumentation i form av vi- suella diagram ¨over de mjukvarusystem som utvecklas. En av dessa ¨ar Unified Modeling Language (UML). UML kom till i samband med objektorienrade programspr˚ak f¨or att enkelt kunna dokumentera och visualisera dessa system.

[7, s. 3] UML best˚ar av ett flertal olika diagramtyper som till¨ampas vid olika former av dokumentation.

2.4.1 Sekvensdiagram

Sekvensdiagram anv¨ands f¨or att visualisera hur meddelandesekvenser interagerar mellan olika programh¨andelser eller delsystem d¨ar tiden inte ¨ar intressant eller beh¨over vara exakt. [7, s. 102] Ett sekvensdiagram best˚ar av roller som presenteras som rektanglar. Dessa roller beskriver ett objekt. Vardera roll har sedan en egen vertikal tidsaxel som representerar tiden.

Interaktion mellan tv˚a roller, ett meddelande, presenteras som en rak pil p˚a tidsaxeln. Dessa meddelande presenteras i fallande ordning. D¨ar det inte sker n˚agon interaktion mellan objekten presenteras tidsaxeln i ett streckat utf¨orande, och d¨ar en exekvering eller h¨andelse sker mellan tv˚a objekt presenteras den som en dubbelstreckat linje. Ett meddelande kan skickas ˚at b˚ada h˚allen och mellan alla objekt i diagrammet. [7, s. 102].

2.5 Externa programvaruberoenden

I programutveckling finns det tv˚a typer av beroenden. En av dessa ¨ar externa beroenden. Detta ¨ar bibliotek och programkod som anv¨ands i projektet men som f¨oretaget inte sj¨alv tillhandah˚aller. Detta medf¨or att f¨oretaget m˚aste f¨orlita sig p˚a en tredjepartsleverant¨or vid anv¨andning av biblioteket eller programkoden vilket betyder att f¨oretaget inte har n˚agon kontroll ¨over uppdateringar med

(16)

mera.[8] Ett extern beroende ¨ar exempelvis Facebook SDK, vilket beskrivs i avsnitt 2.8.4 Facebook SDK.

2.6 Node Package Manager

2.6.1 Popularitet

NPM [9] som ing˚ar i node.js ¨ar idag den st¨orta pakethanteraren f¨or JavaScript- baserade paket d¨ar antalet nedladdningar f¨or varje ˚ar ¨okar vilket kan p˚avisas i figur 2.2.

Figur 2.2: Antal paketnedladdningar via NPM [10]

Pakethanteraren ¨ar ett stort steg framf¨or sin n¨armsta konkurrent som ¨ar den Facebook-¨agda hanteraren Yarn [11]. Antalet Google-s¨okningar per vecka kan ses i figur 2.3.

(17)

Figur 2.3: Popul¨aritet f¨or Npm och Yarn vid Googles¨okningar under tidsperioden 2017-2019 [12]

2.6.2 Funktion och anv¨ andning

NPM anv¨ands f¨or att installera externa paket och beroenden i JavaScript- applikationer. Dessa paket installeras fr˚an NPMs egna arkiv npmjs.com. Vid installation av dessa paket skapas en package.json-fil som bland annat inneh˚aller information om de paket som har installerats. Med denna fil kan man d˚a enkelt installera alla paket igen med ett enkelt kommando, npm install. Detta m¨ojligg¨or att alla de externa beroenden som beh¨ovs f¨or en applikation inte beh¨over finnas i kodbasen utan kan installeras enskilt p˚a varje system som k¨or programkoden.

[13]

2.7 React Native

React Native [14] som utvecklas av Facebook anv¨ands f¨or att skapa applikationer mot Android och iOS p˚a ett enkelt s¨att. Ist¨allet f¨or att utveckla tv˚a helt separat applikationer kan man med React Native g¨ora detta tillsammans. Det spr˚ak som anv¨ands ¨ar JavaScript d˚a React Native ¨ar baserat p˚a webbramverket React som

¨aven det utvecklats av Facebook [15].

(18)

React Native har de senaste ˚aren stadigt ¨okat i popularitet och har sedan ett par ˚ar tillbaka g˚att om plattformsspecifika spr˚ak f¨or iOS och Android i antalet Google-s¨okningar, vilket kan ses i figur 2.4. [16]

Figur 2.4: React Native i j¨amf¨orelse mot iOS och Android vid antalet Google- s¨okningar under tidsperioden 2017-2019 [16]

2.7.1 Funktionalitet

React Native g¨or om JavaScript-kod genom att anropa olika APIer (avsnitt 2.2 Application Programming Interface) f¨or att ¨overs¨atta JavaScript-kod till faktiskt plattformskod f¨or de b˚ada plattformarna Android och iOS. Det h¨ar sker med en

”brygga” som kommunicerar mellan JavaScript och plattformens kompilator f¨or att ¨overs¨atta JavaScript-koden till plattformskod. [17, s. 27] Figur 2.5 presenterar en enkel illustration hur React Native h¨anger ihop med JavaScript och de b˚ada plattformarna.

Figur 2.5: React Native brygga mellan JavaScript och kompilatorer

(19)

Externa moduler

Vid installation av externa moduler i React Native d¨ar det finns plattformsspecifik kod m˚aste man vidtag tre ˚atg¨arder;

1. Implementera samt sammanl¨anka modulen med React Native 2. Implementera modulen f¨or iOS

3. Implementera modulen f¨or Android [18]

Vid steg 1 installeras modulen i React Native och sammanl¨ankas sedan med kodbasen. Denna sammanl¨ankning skapar vissa beroenden i respektive platt- form. Denna l¨ankning m¨ojligg¨or att anrop kan skickas mellan plattformarna och JavaScript genom JavaScript-kod. Steg 2 och 3 implementerar och installerar modulen specifik f¨or iOS och Android. Utan denna implementation kan modu- len inte anv¨andas. Figur 2.6 visar hur en extern modul h¨anger samman med respektive kodbas. [19]

Figur 2.6: F¨orh˚allande mellan externa moduler och de olika kodbaserna

(20)

2.7.2 Milj¨ okonfigurering

Vid utveckling av programvara och applikationer finns det ett flertal olika viktiga milj¨ovariabler. Dessa variabler ¨ar i de flesta fall k¨anslig information som till exempel API-nycklar och databasl¨osenord. F¨or att denna information inte ska vara ett m¨ojligt hot vid intr˚ang i k¨allkoden m˚aste dessa separeras fr˚an koden.

Detta kan g¨oras med hj¨alp av en .env -konfigurationsfil. Figur 2.7 visar en enkel illustration ¨over detta. Informationen ¨ar ¨aven enkel att uppdatera d˚a alla variabler finns i en och samma fil. [20]

Figur 2.7: Illustration ¨over konfigurationsfil och variabler i kodbas

Dessa konfigurationsfiler kan ¨aven anv¨andas f¨or att s¨arskilja produktions- och utvecklingmilj¨oer fr˚an varandra, f¨or att p˚a ett enkelt s¨att kunna hantera dessa.

Detta d˚a olika milj¨oer f¨or samma applikation kan inneh˚alla olika typer av anslutningar till exempelvis databaser d¨ar l¨osenord skiljer. Figur 2.8 visar en illustration hur de olika .env -filerna kan h¨anga samman med k¨allkoden. [21]

(21)

Figur 2.8: Illustration ¨over konfigurationsfil enligt ”Twelve factor”

2.8 Facebook

Facebook tillhandah˚aller olika tj¨anster f¨or f¨oretag och mjukvaruutvecklare. Detta kapitel behandlar de delar som ¨ar v¨asentliga f¨or detta arbetet.

2.8.1 Annonshantering

Annonstyper

Facebook erbjuder olika typer av annonser som kan skapas och presenteras f¨or den valda m˚algruppen. En av dessa alternativ ¨ar applikationsannonser. Vilket har som syfte att locka anv¨andare till en vald applikation via annonser som utformas f¨or att ¨oppna eller installera den annonserade applikationen. [22]

Annonsresultat

Vid sp˚arning och sammanst¨allning av annonskonverteringar vid applikations- annonser anv¨ander Facebook applikationsh¨andelser (avsnitt 2.8.2 Facebook- applikationer) f¨or att sp˚ara hur m˚anga installationer som har gjort f¨or den aktuella annonsen. [22] N¨ar en anv¨andare interagerar med en applikationsannons finns tv˚a m¨ojliga scenarion;

1. Applikationen finns redan installerad p˚a anv¨andarens enhet. Annonsen

(22)

leder d˚a till att applikationen ¨oppnas. ¨Oppningsh¨andelsen loggas och skickas till Facebook.

2. Applikationen finns inte p˚a enheten. Annonsen ¨oppnar enhetens appli- kationsbutik och l˚ater anv¨andaren best¨amma om denna vill ladda ner applikationen.

I det h¨ar skedet loggas installationen och skickas till Facebook Analytics.

Vid utv¨ardering av annonsresultatet syns sedan hur m˚anga installationer som har gjorts f¨or den aktuella annonsen. Denna h¨andelsesekvens illustreras enligt figur 2.9. [23]

Figur 2.9: H¨andelsesekvens vid applikationsannonser

2.8.2 Facebook-applikationer

F¨ortydligande av termer

I detta kapitel omn¨amns tv˚a typer av applikationer. Detta kan skapa en viss f¨orvirring. Detta f¨ortydligas d¨arf¨or nedan.

• En Facebook-applikation ¨ar en konfigurerad applikation i Facebooks system.

• En applikation ¨ar en mobilapplikation.

(23)

F¨or att Facebook ska veta vilken applikation de skall kommunicera med m˚aste denna kopplas samman med Facebook. Detta sker genom att en Facebook- applikation konfigureras hos Facebook. Facebook-applikationen konfigureras med information fr˚an applikationen samt l¨amnar information som implementeras i applikationen. Det h¨ar skapar en koppling mellan Facebooks system med hj¨alp Facebook SDK som implementerats i applikationen. [24], [25]

Applikationsh¨andelser

Applikationsh¨andelser l˚ater Facebook sp˚ara hur anv¨andare beter sig och vad de utf¨or i en applikation [26]. De parametrar som ska m¨atas och sp˚aras best¨ams sedan vid utveckling av mjukvaran. Datan skickas fr˚an applikationen till Facebook via Facebook SDK (avsnitt 2.8.4 Facebook SDK) som sedan sammanst¨alls med Facebook Analytics (avsnitt 2.8.3 Facebook Analytics). Denna sekvens illustreras enligt figur 2.10.

Figur 2.10: Sekvensdiagram ¨over Facebooks h¨andelsesp˚arning

(24)

2.8.3 Facebook Analytics

F¨or att se resultat fr˚an annonskampanjer, pixelsp˚arningar och

applikationsh¨andelser erbjuder Facebook analystj¨ansten Facebook Analytics.

F¨oretag kan med hj¨alp av analytics enkelt ¨overblicka dessa h¨andelser. [27]

F¨or att analytics ska kunna sp˚ara information f¨or en h¨andelse kr¨avs det att vardera sp˚arningssystem kan l¨ankas samman med Facebook. F¨or applikationer g¨ors detta via Facebook SDK d¨ar en Facebook-applikation finns kopplad mot applikationen. Denna sekvensh¨andelse illustreras i figur 2.11. Annonssp˚arning hamnar d˚a automatiskt i Analytics.

Figur 2.11: Sekvensdiagram ¨over Facebook Analytics f¨or applikationer

2.8.4 Facebook SDK

Facebook tillhandah˚aller ett SDK f¨or sina tj¨anster som kr¨avs f¨or att koppla ihop Facebook med en applikation. Det anv¨ands bland annat f¨or att sp˚ara anv¨andarbeteende och h¨andelser i applikationer, vilket beskrivs n¨armare i kapitel 2.8.2. F¨or att kunna erbjuda detta SDK till s˚a m˚anga olika spr˚ak och plattformar som m¨ojligt m˚aste det finnas i en m¨angd olika versioner. De plattformar som Facebook st¨odjer presenteras i tabell 2.1.

(25)

Tabell 2.1: Plattformar och spr˚ak f¨or Facebook SDK. [28]

Android iOS JavaScript PC-spel PHP Business SDK React Native Swift tvOS

Unity

React Native

Facebook tillhandah˚aller ett SDK f¨or applikationer utvecklade med React Native (avsnitt 2.7 React Native). [29] Vid anv¨andning av denna g¨ors sj¨alva integrationen i React Native-delen av applikationen men konfigureras olika f¨or Android och iOS d¨ar varje plattform kr¨aver sin egna konfiguration. [30], [31] Vidare implementeras de funktioner som finns i SDKt i React Native-delen av applikationen. Exempelvis sp˚arning av varor i en kundkorg. [32]

(26)

2.9 Google Firebase

Google tillhandah˚aller en stor tj¨ansteplattform f¨or utvecklare och f¨oretag, Goog- le Firebase, firebase.google.com. Nedan f¨oljer de funktioner och tj¨anster fr˚an plattformen som ¨ar relevant i detta arbetet.

2.9.1 Firebase-projekt

Google Firebase ¨ar uppbyggt med en projektstruktur som m¨ojligg¨or att ett och samma Google-konto kan ¨aga och hantera en eller flera olika projekt. Dessa projekt skapas via Firebase Console, console.firebase.google.com. I dessa projekt konfigureras de Firebase-applikationer ( avsnitt 2.9.2 Firebase-applikationer) som anv¨ands f¨or att koppla samman en applikation med Googles system.

2.9.2 Firebase-applikationer

Vid anv¨andning av Google Firebase beh¨over Google Firebase SDK, som finns implementerat i applikationen, kopplas samman med projektet i Google Fire- base. Google tillhandah˚aller en tj¨anst f¨or detta, Firebase-applikationer. Denna applikation ¨ar l¨anken mellan SDK och Firebase.

2.9.3 Dynamiska l¨ ankar

Dynamiska l¨ankar ¨ar l¨ankar som inte har endast en destination. Dessa l¨ankar kan anv¨andas f¨or att skicka en anv¨andare fr˚an en webbplats till exempelvis en speciell plats i en applikation. S˚a kallat djupl¨ankning. Dess destination styrs av l¨ankens konfiguration. [33]

Dessa l¨ankar kan exempelvis anv¨andas i annonskampanjer f¨or att p˚a ett enkelt s¨att skicka anv¨andaren till applikationsbutiken om applikationen saknas p˚a enheten, och ¨oppna applikationen i det fall den redan finns installerad. Detta illustreras enligt figur 2.12.

(27)

Figur 2.12: Sekvensdiagram ¨over interaktion med dynamisk l¨ankning kopplat mot en applikation

2.9.4 Google Analytics

Google Analytics en en kostnadsfri tj¨anst fr˚an Google som erbjuder m¨atning och sammanst¨allning av data. Tj¨ansten st¨odjer, bland annat, m¨atning av appli- kationsh¨andelser f¨or Android och iOS. [34]

Anv¨andning

F¨or att anv¨anda tj¨ansten m˚aste Google Firebase SDK implementeras separat f¨or iOS [35] och Android [36]. Tj¨ansten kan sedan anv¨andas f¨or att logga olika typer av h¨andelser. Dessa ¨ar bland annat annonskonverteringar via Googles an- nonsplattform Adsens samt bland applikationsinstallationer. Vad som ska loggas beror p˚a hur applikationen konstrueras och vilka h¨andelser som implementeras.

[37], [38]

(28)

React Native

Google Analytics finns f¨or React Native via paketet React Native Firebase.

[39] Genom att implementera detta paket kan man skapa h¨andelsesp˚arning med JavaScript. F¨or att kunna anv¨anda tj¨ansten m˚aste Google Firebase SDK implementeras f¨or b˚ade Android och iOS, vilket beskrivs under avsnitt 2.9.4 Anv¨andning ovan.

(29)

Kapitel 3: Metod

3.1 F¨ orstudie

En f¨orstudie utf¨ordes f¨or att samla information om m¨ojliga l¨osningar. Studien innefattade att kontrollera om en egen l¨osning skulle kunna genomf¨oras och hur en implementation av detta skulle g˚a till enligt m˚al 1 (avsnitt 1.4 M˚al). Ut¨over detta gjordes en nogrann unders¨okning hur en implementation av installationssp˚arning kan hanteras med Facebook SDK [28] enligt m˚al 2 samt om andra existerande l¨osningar g˚ar att anv¨ands tillsammans med Facebook [40] enligt m˚al 3.

3.1.1 Datainsamling

Insamling av data som ber¨or f¨oretaget Leeroys verksamhet gjordes via intervjuer med hj¨alp av personal hos f¨oretaget. Dessa intervjuer samlade information om hur f¨oretagets system fungerar och hur dessa kan till¨ampas i arbetet. Intervjuer skedde prim¨art vid fysiska m¨oten men vid mindre icke-komplexa fr˚agest¨allningar

¨aven digitalt.

Ddatainsamling som inte baserats p˚a f¨oretagets verksamhet har inh¨amtats fr˚an Google Scholar, Mittuniversitetes bibliotek (Primo), Digitala Vetenskapliga Arkivet (DIVA) samt vardera ber¨orda systems dokumentation ifall s˚adan funnits.

3.1.2 Kravspecifikation

Med de underlag som f¨orstudie och intervjuer resulterat i kunde en kravspe- cifikation utformas f¨or att kunna m¨ojligg¨ora ett l¨osningsexempel enligt m˚al 7 (avsnitt 1.4 M˚al).

(30)

3.1.3 Implementation

Utifr˚an de resultat som framkommit under f¨orstudien kunde en implementation av tv˚a enkla testapplikationer skapas. Resultatet fr˚an dessa implementationer kom att l¨agga grunden i den l¨osning som presenterats f¨or f¨oretaget i enlighet med m˚al 8.

3.2 Arbetsmetod

Arbetet har utformats enligt det agila arbetss¨attet scrum. Tv˚a f¨ordelar med att anv¨anda scrum som arbetss¨att ¨ar enkelheten i att ¨andra ifall n˚agot faller utanf¨or det f¨orv¨antade resultatet och de kontroller som anv¨andarna i teamet tvingas g¨ora gentemot det sprintm˚al som satts upp. [41, s. 4]

P˚a grund av arbetets ringa storlek har en modifierad variant anv¨ants d¨ar ett f˚atal av dess best˚andsdelar till¨ampats. Dessa ¨ar sprint, dagligt scrumm¨ote, sprintgranskning samt sprintplannering.

3.2.1 Best˚ andsdelar

Nedan f¨oljer en f¨orklaring hur de ovan n¨amnda best˚andsdelarna fr˚an scrum har till¨ampats och modifierats f¨or arbetet och hur dessa skiljer sig fr˚an det t¨anka s¨attet.

Sprint

Indelning av arbetet har skett i sm˚a portioner, sprintar, f¨or att skapa en

¨overgripande bild ¨over vad som skall g¨oras och vad som har gjorts. L¨angden hos en sprint har varierat fr˚an en till tv˚a veckor. Detta har lett till att arbetet har kunna delas upp i sm˚a delm˚al som ¨ar enkla att f¨olja och utv¨ardera. [41, s. 7]

Sprintplanering

Under varje sprintgranksning med f¨oretaget har nya ¨onskem˚al och infallsvinklar kunnat tillkomma som d˚a tagits med i n¨astkommande sprint, medans den

(31)

¨overgripande planeringen har skett i ensamhet av f¨orfattaren. Detta har kunnat ske d˚a arbetet fr˚an b¨orjan har haft klara m˚al vad som skall uppn˚as och vad som b¨or och beh¨over utf¨oras. [41, s. 9]

Daglig scrumm¨ote

Inf¨or varje dags arbete har en dagsplanering skapats och f¨oreg˚aende arbete utv¨arderats samt reviderats vid behov. Detta h¨arledde till att sprinten delas ned i mindre delar som f¨or dagen ¨ar ¨oversk˚adliga och enkla att arbeta utifr˚an. N¨ar ett team arbetar med Scrum ¨ar detta ett m¨ote som skall vara max 15 minuter.

Men d˚a arbetet utf¨orts ensam s˚a har ist¨allet en kort genomg˚ang utf¨orts innan arbetes start. [41, s. 10]

Sprintgranksning

Efter varje avslutad sprint granskas arbetet utifr˚an de resultat som uppn˚atts under perioden. Granskningen skedde genom m¨oten hos Leeroy d¨ar de resultat samt fr˚agor som uppkommit behandlats.

Den modifiering som skett i det h¨ar arbetet gentemot hur en sprintgranksning skall hanteras ¨ar att de m¨oten som planerats inte har gjorts i b¨orjan av varje sprinten, utan har ist¨allet skett efter varje sprintgranksning i samspr˚ak med f¨oretaget. [41, s. 11]

3.3 Utveckling

I detta avsnitt f¨oljer de metoder som anv¨ants i detta arbete f¨or att utveckla en l¨osning enligt m˚al 7 ( avsnitt 1.4 M˚al).

3.3.1 Programspr˚ ak

Det programspr˚ak som anv¨andes i utvecklingen av mjukvaran i arbetet ¨ar JavaScript med ramverket React Native [14]. Dessa valdes f¨or att komma s˚a

(32)

n¨ara Leeroys system som m¨ojligt d˚a dem anv¨ander detta spr˚ak och ramverk i sin applikationsportf¨olj.

3.3.2 Applikationsutveckling

Tv˚a enkla applikationer utvecklades f¨or att testa Facebook SDK (m˚al 2, avsnitt 1.4) samt Google Firebase SDK (m˚al 3, avsnitt 1.4) med de spr˚ak och ramverk vilket n¨amnts i avsnitt 3.3.1 Programspr˚ak ovan. D˚a fokus i arbetet var att simulera hur en l¨osning g¨allande sp˚arning av applikationsinstallationer fungerar

¨ar applikationerna i sin helhet v¨aldigt enkelt med f˚a funktioner. Ett par enkla funktioner implementerades f¨or att s¨akerst¨alla fortsatt funktion ifall den l¨osning som anv¨andes slutar fungera eller l¨amnas okonfigurerad.

3.3.3 Verktyg

Nedan f¨oljer beskrivningar om de verktyg som anv¨andes under arbetet.

Utvecklingsmilj¨o

Textredigeraren Atom [42] anv¨andes f¨or att skriva programkod. Atom g˚ar att ut¨oka med en stor m¨angd olika paket f¨or att underl¨atta vid anv¨andandet av ett visst spr˚ak. Det h¨ar g¨or Atom till en mycket kompetent utvecklingsmilj¨o att anv¨anda.

(33)

Pakethantering

Pakethanteraren NPM anv¨andes under arbetet d˚a NPM ¨ar enkelt att anv¨anda samt att dess utbud av externa paket ¨ar det st¨orsta i v¨arlden. NPM fungerar ocks˚a mycket bra tillsammans med React Native.

Plattformsberoende milj¨oer

D˚a React Native m˚aste kunna falla tillbaka mot plattformskod f¨or de b˚ada platt- formarna Android och Apple iOS s˚a beh¨ovdes ¨aven Android Studio och Apple Xcode anv¨andas under implementationen. Men den huvudsakliga utvecklingen skedde mot React Native med JavaScript.

Illustrationer och diagram

Illustrationer och diagram skapades med hj¨alp av tv˚a onlinetj¨anster. draw.io och visual-paradigm.com. Draw anv¨andes f¨or illustrationer och Visual-paradigm f¨or diagram.

3.3.4 Tester

Under hela arbetet har de mjukvaruimplementeringar som utf¨orts genomg˚att kontinuerliga tester f¨or att verifiera dess funktionalitet samt avst¨amma dessa mot kravspecifikation. N¨ar en funktion f¨orklarats som fullbordad har denna markerats som klar i kravspecifikationen.

3.4 Utv¨ ardering

F¨or att kunna utv¨ardera de resultat som arbetet medf¨ort utformades en utv¨arderingsmetod. Denna utv¨arderingsmetod bestod av m¨atningar g¨allande komplexitet mellan de olika l¨osningarna som har utv¨arderats. Dessa m¨atningar ¨ar objektiva bed¨omningar utifr˚an personliga preferenser. M¨atningarna kan s˚aledes bringa ett annat resultat f¨or andra som l¨aser detta arbete.

Komplexiteten delades upp i tre delar;

(34)

1. L˚ag komplexitet 2. Medel komplexitet 3. H¨og komplexitet

L˚ag komplexitet beskriver att f˚a delsteg beh¨over tas vid utf¨orande. Medel komplexitet beskriver att fler men l¨atta eller f˚a men sv˚ara delsteg beh¨over tas vid utf¨orande. H¨og komplexitet beskriver att m˚anga och sv˚ara delsteg beh¨over tas vid utf¨orande.

Enligt de m˚al som presenterats under avsnitt 1.4 M˚al gjordes utv¨arderingar g¨allande komplexiteten i konfiguration enligt m˚al 4, programimplementering enligt m˚al 5 samt anv¨andarv¨anlighet enligt m˚al 6.

F¨or att skapa en klar bild ¨over hur utv¨arderingen g˚att till och vilken typ av preferenser som st˚att till grund f¨or de olika komplexitetsniv˚aerna s˚a presen- teras h¨ar ett par exempel. Dessa exempel ˚aterspelar enkla illustrationer hur komplexitetsutv¨arderingen g˚att till f¨or kodkomplexiteten.

L˚ag komplexitet

F¨or att n˚agon av de tre utv¨arderingarna ska ha en l˚ag komplexitet betyder det att det m˚aste vara l¨att att utf¨ora. Vid kodimplementation betyder detta s˚aledes att det ska vara lite kod p˚a f˚a platser eller mer men enkel kod p˚a en plats. Figur 3.1 p˚avisar detta nedan.

Figur 3.1: Illustrerat exempel ¨over l˚ag kodkomplexitet

(35)

Medel komplexitet

Medel komplexitet betyder att det det kan finnas enkel kod p˚a flera platser eller sv˚arare kod p˚a flera platser. Detta illustrerar i figur 3.2.

Figur 3.2: Illustrerat exempel ¨over medel kodkomplexitet

H¨og komplexitet

N¨ar en komplexitet med status h¨og n¨amns betyder detta det aktuella omr˚adet har den h¨ogsta komplexiteten av de tre niv˚aerna. F¨or att n˚a h¨og komplexitet i utv¨arderingen kr¨avs det att det finns mycket kod p˚a en plats, vilket illustreras i figur 3.3 nedan.

Figur 3.3: Illustrerat exempel ¨over h¨og kodkomplexitet

Ovan n¨amnda exempel behandlar hur en implementation av faktiskt kod utv¨arderas och dess komplexitetsgrad. Liknande tillv¨agag˚anss¨att sker ¨aven f¨or de tv˚a andra utv¨arderingarna som behandlar anv¨andarv¨anlighet samt konfi- guration.

(36)

Kapitel 4: Konstruktion

I arbetets implementation har tv˚a testapplikationer skapats med hj¨alp av React Native. Detta kapitel beskriver de implementationer som genomf¨orts och hur dessa g˚att till.

4.1 Kravspecifikation

Utifr˚an den information som samlats in fr˚an Leeroy under arbetets f¨orstudie enligt avsnitt 3.1 F¨orstudie har en enkel kravspecifikation (bilaga A) tagits fram.

Dessa krav beskrivs i detalj nedan.

4.1.1 Milj¨ ovariabler

Leeroy konfigurerar sina applikationer med milj¨ovariabler som finns i en generell fil av typen .env (avsnitt 2.7.2 Milj¨okonfigurering). Denna fil inneh˚aller den information som beh¨ovs vid skapandet av en ny kundapplikation.

4.1.2 Frist˚ aende implementation

D˚a b˚ade Facebook och Google SDK ¨ar av typen externa beroenden (avsnitt 2.5 Externa programvaruberoenden) m˚aste en s˚adan implementation g¨oras f¨or att applikationen fortsatt ska fungera som vanligt ifall n˚agot h¨ander med dessa SDK.

4.1.3 M¨ ojlighet att utesluta SDK

Om en kund till Leeroy inte vill ha m¨ojlighet att sp˚ara h¨andelser och applika- tionsannonser m˚aste det SDK som implementeras enkelt kunna uteslutas eller avaktiveras.

(37)

4.2 Facebook

Detta avsnitt f¨orklarar hur applikationen, som ¨ar byggd med React Native (avsnitt 2.7 React Native), har g˚att till. Applikationen har till uppgift att testa hur Facebook SDK fungerar och implementeras. En fullst¨andig implementationsguide finns att tillg˚a i bilaga B.

4.2.1 Konfiguration Facebook-applikation

Som n¨amns i avsnitt 2.8.2 Facebook-applikationer m˚aste en Facebook-applikation konfigureras f¨or att kunna ansluta Facebook mot applikationen som utvecklas.

Facebook-applikationen har konfigurerats f¨or b˚ade Android och iOS d˚a b˚ada dessa plattformar har implementerats f¨or Facebook SDK. Vid skapandet av Facebook- applikationen anges ett Display Name som ¨ar namnet p˚a applikationen. Ett App ID samt App Secret genereras sedan automatiskt av systemet. Detta Display Name och App ID anv¨ands sedan vid konfigurationen av SDK i applikationen.

Figur 4.1 visar grundinst¨allningarna Facebook-applikationen.

Figur 4.1: Grundinst¨allningar f¨or Facebook-applikation

F¨or att ansluta en Android- och iOS-applikation m˚aste Facebook-applikationen konfigureras med information fr˚an vardera applikation. Figur 4.2 och 4.3 visar den information som h¨amtats fr˚an varje applikation.

(38)

Figur 4.2: Android-konfiguration f¨or Facebook-applikation

Figur 4.3: iOS-konfiguration f¨or Facebook-applikation

4.2.2 Applikationskonstruktion

Applikationen ¨ar uppbyggd med tv˚a komponenter som kan ses i figur 4.4.

Huvudkompoent, App.js, har till enda uppgift att implementera komponenten Facebook.js. Denna komponent utformar gr¨anssnittet och de anrop som sker mot Facebook SDK.

Figur 4.4: React Native komponentf¨orh˚allande

(39)

Implementation av Facebook SDK

Facebook SDK implementeras enligt avsnitt 2.7.1 Externa moduler. Med denna implementation kan man som beskrivs i avsnittet anv¨anda JavaScript-kod f¨or att anropa funktioner mot Facebook SDK. Exempel p˚a ett JavaScript-anrop f¨or Facebook SDK enligt programkod 1 nedan. Programkoden presenterar en implementation av Facebook React Native SDK samt hur en enkel funktion som skickar iv¨ag en h¨andelse till Facebook kan se ut. Denna anpassade h¨andelse ¨ar den som anv¨ants vid de tester som utf¨orst f¨or att simulera en applikationsinstallation p˚a ett enkelt s¨att.

import {AppEventsLogger} from 'react-native-fbsdk';

...

customFacebookEvent() {

AppEventsLogger.logEvent(`${platform}customEvent`);

} ...

Programkod 1: Anrop mot Facebook SDK via JavaScript

Konfiguration

Applikationens konfiguration har skett med hj¨alp av konfigurationsfilen .env en- ligt kravspecifikation punkt 1 (Bilaga A). Konfigurationsfilen inneh˚aller informa- tion h¨amtat fr˚an den Facebook-applikation (avsnitt 2.8.2 Facebook-applikationer) som konfigurerats i Facebooks system. F¨or att anv¨anda den information som finns i filen m˚aste olika plattformsspecifika milj¨ovariabler skapas var f¨or sig.

Figur 4.5 visar hur konfigurationsfilen f¨orh˚aller sig till de olika kodbaserna.

(40)

Figur 4.5: .env relation mellan de olika kodbaserna

Denna konfigurationsfil g˚ar ¨aven att anv¨anda i de React Native komponenter som skapas genom att importera modulen i komponenten. Detta illustreras i programkod 2 nedan d¨ar modulen importeras och sedan skriver ut en variabel i filen till konsollen.

import Config from 'react-native-config';

...

console.log(Config.ENV_VARIABLE_NAME);

Programkod 2: Implementation av konfigurationsfil i React Native Vid inplementationen av Facebook SDK har tre milj¨ovariabler definierats. Dessa

¨ar Facebook-applikationens ID och namn samt om automatiska h¨andelser ska loggas, vilket presenteras enligt programkod 3.

FACEBOOK_APP_ID=123 FACEBOOK_APP_NAME=abc

FACEBOOK_AUTO_LOG_EVENTS=true

Programkod 3: .env -variabler f¨or Facebook SDK

Med hj¨alp av FACEBOOK AUTO LOG EVENTS -variabeln i konfigurationsfilen kontrolleras enkelt de milj¨ovariabler som styr hurvida automatiska h¨andelser ska

(41)

loggas av Facebook eller inte. D˚a detta ¨ar en sekvens som inte kan kontrolleras via React Native m˚aste olika l¨osningar implementeras f¨or de b˚ada plattformarna.

Hos iOS kan ett l¨osningsexempel, som presenteras i programkod 4, implementeras i metoden applicationDidBecomeActive i klassen AppDelegate som finns i filen AppDelegate.m.

NSString * facebookAutoLogEvents = [ReactNativeConfig

envFor:@"FACEBOOK_AUTO_LOG_EVENTS"];

if([facebookAutoLogEvents isEqualToString: @"true"]) { [FBSDKAppEvents activateApp];

}

Programkod 4: Implementationsexempel f¨or hantering av automatiska h¨andelser f¨or iOS

L¨osningen hos Android implementeras i AndroidManifest.xml d¨ar en meta- data-tagg styr hurvida denna h¨andelse ¨ar aktiverad eller inte. Programkod 5 presenterar den meta-tagg som anv¨ands.

<meta-data

android:name="com.facebook.sdk.AutoLogAppEventsEnabled"

android:value="@string/FACEBOOK_AUTO_LOG_EVENTS"/>

Programkod 5: Implementation f¨or hantering av automatiska h¨andelser f¨or Android

Anv¨andargr¨anssnitt

D˚a applikationen som utvecklades var till f¨or att endast testa hur Facebook SDK fungerar s˚a togs ett enkelt testgr¨anssnitt fram. Gr¨anssnittet har till enda uppgift att h¨amta information fr˚an konfigurationsfilen .env samt ha m¨ojlighet att skicka

(42)

iv¨ag en testh¨andelse till Facebook. Gr¨anssnittet f¨or de b˚ada plattformarna kan ses i figur 4.6.

Figur 4.6: Gr¨anssnitt hos testapplikation f¨or iOS och Android

Som kan ses i figur 4.6 finns vissa skillnader i applikationerna. Detta d˚a React Native ¨overs¨atter JavaScript-koden till plattformskod och skapar plattforms- specifika komponenter fr˚an samma kod. I programkod 6 nedan presenteras den JavaScript-kod som kr¨avs f¨or att skapa applikationens knapp ”Send event”. React Native ¨overs¨atter sedan denna till en plattformskomponent vid kompilering.

<Button

title = "Send event"

onPress = {this.customFacebookEvent}/>

Programkod 6: S¨andknapp f¨or applikation

(43)

Figur 4.7 presenterar hur de interna komponenter som anv¨ants i applikatio- nen kapslar in varandra. Det ¨ar sedan dessa komponenter som ¨overs¨atts vid kompilering.

Figur 4.7: Illustration ¨over interna komponenter f¨or Facebook.js

Nytt systeml¨age

Utifr˚an det tidigare beskrivna systeml¨aget i avsnitt 2.1.3 Nuvarande systeml¨age kan man nu presentera ett nytt, t¨ankt, systeml¨age utifr˚an hur Facebook SDK fungerar enligt avsnitt 2.8 Facebook. Det nya systeml¨aget presenteras i figur 4.8 nedan.

(44)

Figur 4.8: Nytt f¨orenklat systeml¨age ¨over en implementation med Facebook SDK

4.2.3 Applikationstester

De tester som utf¨orts har testats f¨or b˚ade iOS och Android. F¨or att s¨akerst¨alla applikationens funktioner gentemot Facebook SDK har tester utf¨orts d¨ar en anpassad testh¨andelse skickas till, och loggas i Facebooks system. D˚a testappli- kationen inte finns att tillg˚a i n˚agon applikationsbutik har denna testh¨andelse simulerat applikationsinstallationer. H¨andelsen s¨akerst¨aller att integrationen mot Facebook fungerar tillfredsst¨allande. Resultat fr˚an en av dessa testh¨andelser kan ses i figur 4.9.

(45)

Figur 4.9: Loggning av testh¨andelser

Automatisk h¨andelseloggning

Facebook har vissa standardh¨andelser som automatiskt loggas vid integration av Facebook SDK. Tester har utf¨orts n¨ar dessa avaktiverats f¨or att s¨akerst¨alla att implementaitonen fungerar.

S¨akerst¨allning av applikationsfunktion

Konfigurationsfilen .env har vid tester l¨amnats okonfigurerad f¨or att simulera hur ett icke konfigurerat SDK samt hur applikationens fortsatts funktion fungerar.

(46)

4.3 Google

Detta avsnitt behandlar och beskriver den implementation som genomf¨orts f¨or att skapa en testapplikation mot Google Firebase SDK med React Native (avsnitt 2.7 React Native).

4.3.1 Konfiguration Firebase-applikation

Som beskrivs i avsnitt 2.9.2 Firebase-applikationer m˚aste en Google-applikation skapas i det aktuella Firebase-projektet, enligt avsnitt 2.9.1 Firebase-projekt, f¨or att Google Firebase SDK ska kunna koppla samman applikationen och projektet.

Firebase-applikationen konfigureras med information fr˚an iOS- och Android- applikationen. Fr˚an applikationerna inh¨amtas f¨or Android Package namn som implementeras i Android-applikationen i Firebase enligt figur 4.10.

Figur 4.10: Konfiguration med information fr˚an Android-applikation Bundle ID inh¨amtas fr˚an iOS-applikationen och implementeras i iOS-applikationen i Firebase enligt figur 4.11.

(47)

Figur 4.11: Konfiguration med information fr˚an iOS-applikation

4.3.2 Applikationskonstruktion

Konstruktionen f¨or denna testapplikation ¨ar av en enkel typ utan n˚agot grafiskt anv¨andargr¨anssnitt. Detta d˚a endast standardh¨andelser har skickats till Google via deras SDK.

Implementation Google Firebase SDK

Google Firebase SDK fungerar endast att anv¨anda genom att implementeras i React Native samt i respektive kodbas. Detta utf¨ors enligt avsnitt 2.7.1 Externa moduler. F¨orutom att implementera modulerna m˚aste olika ˚atg¨arder vidtas f¨or vardera kodbas. F¨or iOS m˚aste Google Firebase SDK importeras samt utf¨ora ett funktionsanrop genom att implementera koden enligt programkod 7 i metoden didFinishLaunchingWithOptions i klassen AppDelegate.

#import <Firebase.h>

...

// Direkt under funktionen didFinishLaunchingWithOptions [FIRApp configure];

Programkod 7: Import och funktionsanrop f¨or Firebase SDK hos iOS

(48)

Konfiguration

Den konfiguration som kr¨avs f¨or att anv¨anda Google Firebase SDK implemen- teras f¨or iOS via en .plist -fil och f¨or Android med hj¨alp av en json-fil. Dessa filer genereras automatiskt vid skapandet av vardera applikation i det Goog- le Firebase-projekt (avsnitt 2.9.1 Firebase-projekt) som anv¨ands. Dessa filer implementeras sedan i iOS och Android-projektet.

Denna konfiguration ¨ar s˚aledes inte n˚agot som sker med en .env -konfigurationsfil som i fallet Facebook (avsnitt 4.2.2 Konfiguration), utan skapas unikt f¨or appli- kationen.

Nytt systeml¨age

utifr˚an den implementation som gjorts kan ett nytt, t¨ankt, systeml¨age tas fram vid en implementation av Google Firebase SDK. Detta utg˚ar ifr˚an det tidigare n¨amnda systeml¨aget n¨amnt i avsnitt 2.1.3 Nuvarande systeml¨age och presenteras i figur 4.12.

(49)

Figur 4.12: F¨orenklat systeml¨age vid en t¨ankt implementation av Google Firebase SDK

4.3.3 Applikationstester

Vid testning av Google Firebase SDK har endast en typ av test utf¨orst. Detta

¨ar att kontrollera om de standardh¨andelser som automatiskt aktiveras vid implementeringen av SDK kommer in i Google Firebase Analytics. H¨andelsernas inkomst i systemet har ¨overvakats med hj¨alp av Google Firebase fels¨okningsl¨age.

Detta l¨age visar inkomna h¨andelser i realtid och ger s˚aledes en direkt ˚aterkoppling gentemot utvecklaren. Hur dessa h¨andelser ser ut i systemets fels¨okningsl¨age presenteras i figur 4.13.

(50)

Figur 4.13: Inkomna h¨andelser i Google Firebase fels¨okning

Med hj¨alp av dessa tester har kontroller utf¨orts f¨or att veta om implementationen av Google Firebase SDK fungerar.

(51)

Kapitel 5: Resulat

Kapitlet Resultat presenterar resultatet av arbetes f¨orstudie samt implementa- tion.

5.1 Egen l¨ osning

De resultat som framkommit utifr˚an f¨orstudien g¨allande m¨ojligheten att imple- mentera en egen, frist˚aende, l¨osning som inte anv¨ander Facebook SDK enligt m˚al 1, samt hur denna skulle t¨ankas byggas presenteras i detta avsnitt.

Den egna l¨osning var att skapa ett system som tillhandah˚aller unika dynamiska l¨ankar som anv¨ands vid annonsskapande. Dessa l¨ankar skulle fungera som s˚adant att vid klick p˚a annonsen skickas anv¨andaren vidare till en webbtj¨anst som knyter ett unikt ID till en databas. Denna webbtj¨anst kontrollera om den angiva applikationen finns installerad p˚a enheten. Finns applikationen installerad s˚a

¨oppnas denna och registrerar en applikations¨oppning. Figur 5.1 visar hur detta datafl¨ode kan t¨ankas se ut.

Figur 5.1: T¨ankt datafl¨ode f¨or den egna l¨osningen n¨ar applikationen finns installerad p˚a enheten

(52)

Finns den inte installerad skickas anv¨andaren ist¨allet vidare till applikationsbu- tiken och applikationsinstallation registreras om anv¨andaren v¨aljer att installera applikationen. Denna registrering sker med samma unika ID som registreras vid applikation¨oppningen och skulle d˚a knyta samman annons¨oppningen med applikationsinstallationen. Figur 5.2 visar ett t¨ankt datafl¨ode.

Figur 5.2: T¨ankt datafl¨ode f¨or den egna l¨osningen n¨ar applikationen inte finns installerad p˚a enheten

Om en tr¨aff mellan annons¨oppningen och applikations ¨oppningen/installationen skett i databasen skulle sedan systemet skicka vidare informationen till Facebook Analytics (avsnitt 2.8.3 Facebook Analytics) och d˚a registrera en annonskonver- tering f¨or annonsen. Figur 5.3 nedan visar datafl¨odet.

Figur 5.3: T¨ankt datafl¨ode efter att en tr¨aff i databasen skett

(53)

Det ¨ar i dagsl¨aget inte m¨ojligt att implementera en s˚adan l¨osning som inte anv¨ander sig av Facebook SDK men samtidigt skickar insamlad data r¨orande applikationsinstallationer till Facebook Analytics (avsnitt 2.8.3 Facebook Analy- tics).

5.2 Facebook

Utifr˚an de implementationstester som utf¨orts med Facebook SDK enligt m˚al 2 kan en komplexitetsutv¨ardering i enlighet med m˚al 4, 5 och 6 sammanfattas enligt figur 5.4 nedan.

Anv¨andarv¨anlighet Konfiguration Implementation ag

Medel

Omr˚ade

Komplexitet

Komplexitet Facebook

Facebook

Figur 5.4: Resultat av komplexitetsm¨atning f¨or Facebook SDK

5.2.1 Anv¨ andarv¨ andlighet

Anv¨andarv¨anligheten vid annonsskapande har en l˚ag komplexitet d˚a det ¨ar enkelt att skapa nya annonser i Facebooks annonsplattform. Detta d˚a man direkt anv¨ander sig av den konfigurerade Facebook-applkationen som ¨ar kopplad mot mobilapplikationen.

S˚aledes beh¨ovs ingen vidare handp˚al¨aggning mer ¨an att v¨alja vilken applikation som ska anv¨andas f¨or annonsen.

(54)

5.2.2 Konfiguration

Konfigurationsprocessen f¨or att skapa en Facebook-applikation som kopplas sam- man med en mobilapplikation via Facebook SDK har en medelh¨og komplexitet, d˚a det kr¨avs en viss handp˚al¨aggning vid konfigurering av applikationen. D˚a det beh¨ovs information fr˚an Facebook-applikationen till mobilapplikationen och tv¨artom kr¨avs en viss handp˚al¨aggning f¨or varje applikation. Helst om f¨oretaget har flera olika applikationer. Samtidigt ¨ar den information som kommer fr˚an Fa- cebook enkel att implementera d˚a den implementeras i .env -konfigurationsfilen.

Om Facebook SDK l¨amnas helt okonfigurerad kommer inte Android-applikationen att fungera vilket d˚a kr¨aver en av tv˚a m¨ojliga ˚atg¨arder. Att lyfta bort SDK fr˚an applikationen helt och h˚allet om denna inte ska anv¨andas eller i konfigu- rationsfilen styra s˚a att applikations ID endast best˚ar av noll (0) och namnet l¨amnas tomt. SDKt tror d˚a att det ¨ar konfigurerat men den kan kan inte f˚a n˚agon kontakt med Facebook eftersom ett korrekt ID saknas.

5.2.3 Implementation

Att implementera Facebook SDK i en mobilapplikation har en medel komplexitet d˚a det inte kr¨avs speciellt mycket kod p˚a m˚anga olika st¨allen. Det kr¨avs dock att vissa filer automatiskt l¨aggs till i iOS-projektet vilket medf¨or att komplexiteten inte blir av typen l˚ag.

(55)

5.3 Google

Resultatet fr˚an implementationen med Google Firebase (avsnitt 4.3 Google) enligt m˚al 3 kan med enlighet enligt m˚al 4, 5 och 6 sammanst¨allas till en utv¨ardering enligt avsnitt 3.4 Utv¨ardering. Denna sammanst¨allda utv¨ardering ses i figur 5.5 nedan.

Anv¨andarv¨anlighet Konfiguration Implementation ag

Medel og

Omr˚ade

Komplexitet

Komplexitet Google

Google

Figur 5.5: Resultat av komplexitetsm¨atning f¨or Google Firebase SDK

5.3.1 Anv¨ andarv¨ anlighet

Att skapa Facebook-annonser med hj¨alp av Google Firebase Analytics har en medelh¨og komplexitet. Detta d˚a det kr¨avs en viss handp˚al¨aggning f¨or att skapa unika identifikationsl¨ankar som anv¨ands i varje annons. Vilket skiljer sig i tillv¨agag˚anss¨attet fr˚an att skapa en annons med en konfigurerad Facebook- applikation, som beskrivs i avsnitt 5.2.1 Anv¨andarv¨andlighet.

(56)

5.3.2 Konfiguration

Att konfigurera en Google Firebase-applikation kr¨aver information fr˚an den b˚ada applikationerna f¨or iOS samt Android. Det ¨ar ¨aven mycket information fr˚an Google Firebase som m˚aste finnas i applikationerna f¨or att Google Firebase SDK ska fungera. D¨arf¨or genereras en .plist -fil f¨or iOS samt en .json-fil f¨or Android som inneh˚aller all denna information. Detta g¨or det besv¨arligt och sv˚art att fylla i all denna information i en .env -konfigurationsfil.

Det kr¨avs ¨aven olika typer av information f¨or de b˚ada plattformarna vilket enkelt medf¨or att en konfigurationsfil snabbt blir ohanterbar.

Dessa n¨amnda parametrar skapar en h¨og konfigurationskomplexitet f¨or Google Firebase SDK.

5.3.3 Implementation

Att implementera Google Firebase SDK ¨ar enkelt och kr¨aver inte mycket fak- tisk kod f¨or att fungera. Detta medf¨or att implementationssteget har en l˚ag komplexitet.

(57)

Kapitel 6: Slutsats

Denna uppsats har utg˚att ifr˚an tv˚a syften. Kan man implementera en egen- konstruerad l¨osning eller andra akt¨orers l¨osningar g¨allande uppf¨oljning av an- nonskonvertering f¨or Facebook-annonser utan att anv¨anda Facebook SDK. Samt hur Facebook SDK implementeras i en React Native applikation.

F¨or att uppfylla dessa tv˚a syften har ett antal m˚al utformats;

1. Unders¨oka om ett eget alternativ f¨or annonssp˚arning g˚ar att utveckla utan att anv¨anda Facebook SDK

2. Unders¨oka hur Facebook SDK implementeras och den konfigurationsprocess som kr¨avs

3. Unders¨oka om andra plattformar g˚ar att anv¨anda f¨or att sp˚ara resultat av Facebook-annonser

4. Utv¨ardera de olika l¨osningarna genom att j¨amf¨ora komplexitet g¨allande konfiguration

5. Utv¨ardera de olika l¨osningarna genom att j¨amf¨ora komplexitet vid en implementation

6. Utv¨ardera de l¨osningar som framkommit genom att j¨amf¨ora komplexitet g¨allande anv¨andbarhet

7. Implementera ett l¨osningsexempel som kan anv¨andas i Leeroys applika- tionsportf¨olj

8. Presentera en l¨osning f¨or Leeroy utifr˚an arbetets resultat

(58)

6.1 Egen l¨ osning

Utifr˚an den f¨orstudie som genomf¨orts enligt m˚al 1 kan en slutsats f¨or en egen- konstruerad l¨osning st¨allas.

Det ¨ar idag inte m¨ojligt att implementera en egen l¨osning enligt m˚al 1 som sammanst¨aller annonskonverteringar hos Facebook-annonser f¨or mobila enheter.

Detta grundar sig i tv˚a faktorer.

1. Unik identifikation 2. H¨andelseregistrering

6.1.1 Unik identifikation

En f¨oruts¨attning f¨or att skapa ett eget system, som kan registrera installationer och andra applikationsh¨andelser, kr¨aver att det finns ett unik ID f¨or varje enheten.

Detta ID anv¨ands d˚a f¨or att knyta samman enheten med de interaktioner som skett med annonsen.

Facebook och andra system anv¨ander sig av ett annons¨ors ID (advertiser ID) som anv¨ands f¨or att knya en enhet med en annonsinterkation. Att anv¨anda detta id sker under starka restriktioner och g˚ar endast att n˚a fr˚an installerade applikationer. Det ¨ar s˚aledes inte m¨ojligt att n˚a detta ID fr˚an en webbl¨asare.

Ett liknande problem uppst˚ar om man vill skapa ett unikt ID som ist¨allet kan n˚as fr˚an webbl¨asaren. Detta ID g˚ar d˚a inte att n˚a fr˚an en installerad applikation.

Det finns s˚aledes inte n˚agon m¨ojlighet f¨or webbl¨asaren och applikationen att kommunicera med varandra och knyta detta ID fr˚an tv˚a h˚all.

6.1.2 H¨ andelseregistrering

Det andra problemet med en egen l¨osning ¨ar hur matchningen i databasen ska leda till att en installation/¨oppning registreras i Facebook Analytics.

(59)

Att anv¨anda sig av Facebook Analytics f¨or denna typen av h¨andelse ¨ar n˚agot som inte g˚ar i dagsl¨aget. Detta grundar sig i hur man ska kunna avfyra en annonskonvertering fr˚an systemets server. Att anv¨anda en Facebook Tracking Pixel kr¨aver att ett fysiskt bes¨ok m˚aste g¨oras p˚a en webbplats, och g˚ar d¨arf¨or inte att avfyra fr˚an en server. Ett fysiskt bes¨ok p˚a en specifik webbplats m˚aste s˚aldes utf¨oras efter att en eventuell matchning i databasen har skett.

6.2 Facebook SDK

I enlighet med m˚al 2 har Facebooks SDK implementerats och testats f¨or att utv¨ardera dess funktionalitet. Tre parametrar har tagits i beaktning vid dessa tester utifr˚an m˚al 4, 5 och 6.

Givet resultat ¨ar att Facebook SDK ¨ar enklast f¨or annons¨oren att anv¨anda vid skapande av Facebook-annonser. Det ¨ar ¨aven relativt enkelt f¨or f¨oretaget som tillhandah˚aller en applikation att konfigurera en Facebook-applikation och koppla samman denna med Facebook SDK. Det g˚ar dock inte att l¨amna detta SDK helt okonfigurerad i en Android-applikation utan beh¨over alltid minst ett ID. Detta ID kan dock best˚a av endast en nolla (0) f¨or att applikationen ska fungera.

6.3 Google Firebase SDK

I m˚al 3 unders¨oktes om andra plattformar g˚ar att anv¨anda f¨or att m¨ata an- nonskonvertering f¨or Facebook-annonser. Vid denna j¨amf¨orelse har m˚al m˚al 4, 5 och 6 tagit i beaktning. Google Firebase har valts som denna plattform.

Det ¨ar fullt m¨ojligt att anv¨anda Google Firebase SDK f¨or att m¨ata annonskon- verteringar som sammanst¨alls med hj¨alp av Google Analytics.

Att implementera Google Firebase SDK ¨ar v¨aldigt enkelt och kr¨aver inte mycket kodimplementation i respektive k¨allkod. Detta medf¨or att en implementation har en l˚ag komplexitet.

(60)

Att konfigurera Google Firebase SDK har en h¨og komplexitet d˚a det inte p˚a ett enkelt s¨att g˚ar att mata in information fr˚an Google Firebase i en konfigurationsfil av typen .env. Det h¨ar beror p˚a att det ¨ar mycket information som kr¨avs till varje plattform. Det vill s¨aga iOS och Android. plattformarna delar inte heller samma information. Det h¨ar medf¨or att flera variabler m˚aste finnas i konfigurationsfilen.

Google tillhandah˚aller ist¨allet en nedladdningsbar fil f¨or vardera plattform som inneh˚aller den information som kr¨avs. Dessa filer implementeras d˚a i vardera plattforms kodbas.

Att anv¨anda Google Firebase SDK f¨or att m¨ata annonskonverteringar f¨or Facebook-annonser ¨ar mer komplicerat. Detta kan ses som en sj¨alvklarhet d˚a det ¨ar tv˚a olika system. F¨or att m¨ata konvertering f¨or varje annons kr¨avs det att det skapas unika, dynamiska, l¨ankar f¨or varje annons. Detta ¨ar n˚agot som m˚aste g¨oras via Google Firebase och sedan implementeras i Facebook-annonsen.

Det h¨ar skapar en medelh¨og komplexitet d˚a det kr¨avs fler delsteg och arbete i flera system.

6.4 Rekommenderad l¨ osning

Utifr˚an den j¨amf¨orelse g¨allande komplexitet som gjort mellan Facebook SDK samt Google Firebase SDK kan en sammanst¨allning enligt figur 6.1 nedan visas.

Utifr˚an denna sammanst¨allning kan sedan en rekommenderas l¨osning ges.

(61)

Anv¨andarv¨anlighet Konfiguration Implementation ag

Medel og

Omr˚ade

Komplexitet

Komplexitet Google och Facebook

Facebook Google

Figur 6.1: Sammanst¨allt resultat av komplexitetsutv¨ardering

Att annonsera via Facebook och att m¨ata annonskonverteringar g¨ors enklast med hj¨alp av Facebook SDK. Detta kan ses som en sj¨alvklarhet d˚a system fr˚an samma leverant¨or oftast fungerar b¨ast tillsammans. Att skapa en annons med en Facebook-applikation g¨ors snabbt och enkelt, och andra system beh¨over inte blandas in.

En implementation av Facebook SDK kan utf¨oras i enlighet med m˚al 7 d˚a en konfigurationsfil av typen .env kan anv¨andas vid konfigurering enligt punkt 1 i st¨alld kravspecifikation (bilaga A). Punkt 2 i kravspecifikationen kan uppfyllas.

Det g˚ar att utesluta SDK fr˚an applikationerna genom att s¨atta applikations-ID till noll (0) och helt utesluta applikationsnamnet.

Enligt punkt 3 i kravspecifikationen m˚aste applikationen alltid fungera fast¨an

¨andringar g¨ors i SDK. Facebook har historiskt sett gjort sm˚a f¨or¨andringar i sitt SDK som inte har en direkt p˚averkan p˚a dess drift. Om en stor f¨or¨andring g¨ors kommer dess funktionalitet inte p˚averkas d˚a varje applikation har en lokal kopia. Det som kan h¨anda ¨ar att kopplingen mot Facebook slutar fungera vilket enkelt ˚atg¨ardas via en applikationsuppdatering d¨ar den senaste versionen av SDK implementeras. I detta arbete b¨or ¨aven po¨angteras att n˚agra uppenbara fel p˚a grund av ¨andringar inte skett till fel och obrukbara applikationer.

(62)

Utifr˚an denna rekommenderade l¨osning har en l¨osningsguide sammanfattas i enlighet med m˚al 8 vilket kan ses i bilaga B.

Den rekommenderade l¨osningen ¨ar ¨aven den l¨osning som har b¨ast skalbarhet vid ut¨okning av antalet kundapplikationer f¨or Leeroy. Detta d˚a l¨osningen kr¨aver minst antal steg f¨or att koppla ihop Facebook med applikationerna. Det kr¨avs dock fortfarande mer arbete fr˚an Leeroy vid skapande av nya kundapplikationer, vilket ¨ar sv˚art att komma ifr˚an helt och h˚allet.

6.5 Etiska och samh¨ alleliga aspekter

Att Facebook varit i hetluften mer ¨an en g˚ang har nog inte undkommit n˚agon.

Att s˚aledes anv¨anda en tj¨anst som ¨ar direkt reglerad av Facebook kan till en viss del uts¨atta anv¨andare f¨or exponering av s¨akerhetsrisker som inte hanteras av applikationsf¨oretaget. En avv¨agning m˚aste g¨oras av respektive kund om en eventuell risk f¨or exponering ¨ar v¨art kontra v¨ardet som dessa system ger f¨oretagen. Att informera anv¨andaren om att applikationen samlar in data till Facebook ¨ar n˚agot som b¨or tas i beaktning vid implementering av dessa system.

Att l˚ata anv¨andare av en applikation best¨amma om denna vill sp˚aras eller inte ¨ar n˚agot som idag g˚ar hos b˚ade iOS och Android och sker direkt i operativsystemet.

Anv¨andaren kan sj¨alv aktivt v¨alja om dessa vill bli sp˚arade genom inst¨allningar hos vardera operativsystem.

Man b¨or ¨aven ta i beaktning att Facebook en dag kanske inte ¨ar den starkaste akt¨oren p˚a marknaden. Det finns inget som s¨ager att Facebook kommer vara i samma storlek om tio ˚ar som dom ¨ar idag. Ett f¨oretag av Facebooks storlek kan ganska enkelt tappa stora marknadsandelar. Fast¨an det ¨ar n˚agot som ¨ar h¨ogst osannolikt i dagens l¨age.

(63)

6.6 Fortsatt utveckling

En vidareutveckling av detta arbete kan inneb¨ara att andra leverant¨orer av annonsuppf¨oljning j¨amf¨ors och testas. Utifr˚an dessa tester kan d˚a nya resultat sammanst¨allas som kan ligga till grund i vilken l¨osning som b¨ast passar f¨oretaget Leeroy.

En fortsatt utveckling kan ¨aven leda till att faktiskt implementera Facebook SDK i Leeroys applikationsportf¨olj och f˚a detta att fungera p˚a ett tilfredst¨allande vis.

(64)

K¨ allf¨ orteckning

[1] eMarketer. (jan. 2018). Social Media Will Hit Major Milestones in 2018, (h¨amtad 2019-05-05).

[2] Statista. (2019). Facebook: number of daily active users worldwide 2011- 2019, (h¨amtad 2019-05-05).

[3] Leeroy. (mars 2019). LEEROY raises 44 million SEK, URL: leeroy.se/

knowledge-hub/leeroy-raises-44-million-sek (h¨amtad 2019-04-14).

[4] ——, (april 2018). Vi tar steget in i USA med Livit Design!, URL: leeroy.

se / knowledge - hub / vi - tar - steget - in - i - usa - med - livit - design (h¨amtad 2019-04-10).

[5] T. Terms. (juni 2016). API, URL: techterms . com / definition / api (h¨amtad 2019-04-28).

[6] ——, (april 2010). SDK, URL: techterms.com/definition/sdk (h¨amtad 2019-04-27).

[7] G. B. James Rumbaugh Ivar Jacobsom, The Unified Modeling Language Reference Manual, second. Addison-Wesley, juli 2004.

[8] L. Trab. (aug. 2016). A Guide to Dependencies, Constraints and Assump- tions (Part 1): Project Dependencies, URL: inloox.com/company/blog/

articles/a-guide-to-dependencies-constraints-and-assumptions- part-1-project-dependencies/ (h¨amtad 2019-05-02).

[9] About NPM. URL: https : / / docs . npmjs . com / about - npm/ (h¨amtad 2019-05-10).

[10] Npm, package download counts, Github, aug. 2017. URL: https://github.

com/npm/registry/blob/master/docs/download-counts.md (h¨amtad 2019-05-11).

[11] Getting started, yarnpkg. URL: https : / / yarnpkg . com / en / docs / getting-started (h¨amtad 2019-05-26).

References

Related documents

[r]

Vi anser det vara av vikt att först och främst utveckla den diskussion om klassificeringen av studiens företag, som vi påbörjade i avsnittet urval i kapitel tre. Vi är väl medvetna

[r]

Kan även erbjuda olika typer framkallningar av era bilder allt från vanliga pappers kopior på kvalitets papper, till stora tavlor.. Det går även att beställa många olika

O FINNFORSFALLET

Detaljplanen möjliggör att mark för bostadsändamål kan överföras från Bymarken 1:1 till Skålen Övre 16. Detaljplanen innehåller även mark för allmän

Här finns allt ifrån lättåkta nybörjarböcker till riktigt branta backar för den som är van skidåkare och vill ha utmaningar.. Vid foten av skidanläggningen finns restauranger

Efter utbildningen får du en examen där du har de kunskaper som behövs för att arbeta inom något av bygg- och anläggningsbranschens olika yrken.. Till exempel