• No results found

Beacons for online advertising: An approach using a plugin

N/A
N/A
Protected

Academic year: 2022

Share "Beacons for online advertising: An approach using a plugin"

Copied!
76
0
0

Loading.... (view fulltext now)

Full text

(1)

IN

DEGREE PROJECT COMPUTER ENGINEERING, FIRST CYCLE, 15 CREDITS

STOCKHOLM SWEDEN 2017,

Beacons for online advertising

An approach using a plugin

ALBIN FRIEDNER

ALEXANDER NIKALAYEU

KTH ROYAL INSTITUTE OF TECHNOLOGY

SCHOOL OF INFORMATION AND COMMUNICATION TECHNOLOGY

(2)
(3)

Abstract

Beacons are small devices that can broadcast messages using Bluetooth and other communication technologies using low power consumption. Beacons technology started to emerge lately and many companies has started to see opportunities. One usage of beacons is improving online advertising by using localized information. The most common way to consume beacons today, is by using a native application. This solution is viable in many cases, but not for online advertising. The reason for this is that users do not want to download a native application only for advertising.

In this study, solutions for online advertising using beacons, are examined. The study is focused around a case study on implementing a plugin for Android applications. The plugin consists of a background service that listens for beacon messages, converts the beacon messages to geographic information and gathers user information. All that information is sent to a web service to later perform retargeting. This improves online advertisement, since localized advertisement can be displayed to the user.

The results of the case study showed that the plugin is a viable solution for online advertising using beacons. The plugin could be integrated and launched from different Android applications in a simple way. Measurements of the RAM usage and battery consumption indicates that the plugin can run with no huge impact on the performance or battery of the phone.

The purpose of the study is to present different ways of using beacons for online advertising.

Keywords

Beacons, Android, Plugins, Bluetooth, Retargeting, Physical Web

(4)

Abstract

Beacons är små enheter som kan sända ut meddelanden genom att använda Bluetooth eller andra kommunikationstekniker med låg energiförbrukning.

Teknologin bakom Beacons började framträda nyligen och många företag har redan sett de möjligheter som finns med teknologin. Beacons kan bland annat användas till att förbättra digital reklam genom att använda lokaliserad information. Det vanligaste sättet att konsumera beacons är att använda en lokal applikation. Det sättet är användbart i många fall, men inte för digital reklam. Anledningen till det är att användare tenderar att inte vilja ladda ner applikationer endast för att få reklam.

I den här studien undersöks lösningar för att använda beacons för digital reklam. Studien fokuserar kring en fallstudie om ett insticksprogram till applikationer för Android. Insticksprogrammet består av en bakgrundstjänst som lyssnar efter meddelande från beacons, konverterar meddelandet till geografisk information, samlar information om användaren och skickar informationen till en web service, som senare använder informationen för att ge användare anpassad reklam. Detta förbättrar reklamen, eftersom användarens position kan användas för att ge bättre anpassad reklam.

Resultaten från fallstudien visar att insticksprogrammet är en genomförbar lösning för att använda beacons för digital reklam. Insticksprogrammet kan integreras och startas från en applikation i Android på ett enkelt sätt. Mätningar av insticksprogrammets RAM-användning och batterianvändning visar på att det kan köras utan att märkbart påverka telefonens prestanda eller batteri.

Syftet med den här studien är att visa olika sätt som beacons kan användas för digital reklam.

Nyckelord

Beacons, Android, Insticksprogram, Bluetooth

(5)

Table of Contents

1 INTRODUCTION 1

1.1 Background 1

1.2 Problem 2

1.3 Purpose 2

1.4 Delimitations 2

1.5 Outline 3

2 THEORETIC BACKGROUND 5

2.1 Beacons 5

2.1.1 Bluetooth technology 5

2.1.2 Power usage and range 6

2.1.3 Communication protocols 6

2.1.4 iBeacon 7

2.1.5 Eddystone 7

2.1.6 Estimote protocols and tools 9

2.1.6.1 Fleet management API 9

2.1.6.2 Here & Now 9

2.1.6.3 Nearable 9

2.1.6.4 Other protocols and tools 9

2.1.7 Common usages 10

2.2 Android 10

2.2.1 Android Applications 10

2.2.2 Estimote SDK for Android 11

2.2.2.1 Estimote Connection 11

2.2.2.2 Estimote Location 11

2.2.2.3 Estimote Telemetry 12

2.2.3 Plugins and libraries 12

2.3 Online advertising 12

2.4 Data Management Platform 13

2.5 Earlier work 13

2.6 Summary 14

2.7 Sources and related works 15

3 METHOD 17

3.1 Research methods 17

3.1.1 Qualitative and quantitative research methods 17

(6)

3.1.2 Inductive and deductive approach 17

3.1.3 Chosen research method 17

3.1.4 Process overview 17

3.2 Data collection methods 18

3.2.1 Company information 18

3.2.2 Literature study 18

3.3 Analysis process 19

3.4 Implementation process 20

3.5 Evaluation methods 21

3.5.1 Non-functional requirements 21

3.5.2 Functional requirements 22

3.6 Project method and software development tools 22

3.6.1 Project method 22

3.6.2 Development environment 23

4 ANALYSIS 25

4.1 Interpretation of Adoveo requirements 25

4.2 Experiments 26

4.2.1 Receiving beacon signals 26

4.2.2 Retrieve information from a webservice 29

4.2.3 Collecting user data 30

4.2.4 Building a library 31

4.2.5 Launching the plugin 32

4.2.6 Start the beacon service on phone boot 33

4.2.7 Beacon plugin with a notification task 34

4.2.8 Physical web and retargeting plugin 35

5 CASE STUDY: THE ADOVEO BEACON PLUGIN 37

5.1 Design 37

5.1.1 General idea 37

5.1.2 Choose which beacons to monitor 38

5.1.3 Store beacon information 39

5.1.4 Generic plugin 40

5.1.5 Division of packages 41

5.1.6 Thread pool for retargeting job 41

5.1.7 Check network before sending information 42

5.2 Implementation 42

5.2.1 Beacon representation 42

5.2.2 Beacon fetcher 44

(7)

5.2.3 Beacon storage 45

5.2.4 iBeacon manager 45

5.2.5 Retargeting implementation 46

5.2.6 Data management platform client 47

5.2.7 Plugin launcher 47

6 RESULTS OF THE CASE STUDY 49

6.1 Evaluation of functional requirements 49

6.2 Evaluation of non-functional requirements 49

6.2.1 Simplicity of integration 50

6.2.2 Launching procedure 50

6.2.3 Impact on performance 50

6.2.3.1 90 minutes controlled experiment 50

6.2.3.2 12 hours real-world environment 51

6.2.4 Impact on battery life 51

6.2.4.1 One hour controlled experiment 51

6.2.4.2 Eight hours empiric test 52

7 DISCUSSION 53

7.1 Discussion of the methods used 53

7.1.1 Data collection 53

7.1.2 Implementation 54

7.1.3 Evaluation 54

7.2 Discussion of the results 55

7.3 Comparison with other solutions 55

7.3.1 Application only 55

7.3.2 Plugin with notifications 56

7.3.3 Physical web and Estimote Here & Now 56

7.3.4 Physical web with retargeting plugin 56

7.4 Research sources 57

7.5 Sustainability 57

7.6 Ethics 58

7.7 Contribution 58

7.8 Future research 58

9 REFERENCES 59

(8)

LIST OF ABBREVIATIONS AND CONCEPTS

5G The fifth generation of mobile networks.

Android A mobile operating system based on Linux.

Android SDK API Level A specific version of the Android platform which defines what functionality is available in the system.

Android Studio An integrated development environment (IDE), used for developing Android applications.

API Application Programming Interface specifies how applications can communicate and use a specific software by an interface.

Beacons Low-power, low-cost devices that transmits information using Bluetooth Low Energy.

Bluetooth Low Energy (BLE) Technology for wireless communication that uses low energy. Also known as Bluetooth Smart.

Eclipse An integrated development environment (IDE), used primary for developing applications in Java.

Estimote Cloud A collection of services provided by Estimote and includes a web dashboard, beacons management, authentication and security and much more

GATT Generic Attributes defines a hierarchical data structure that is used for connecting devices that uses Bluetooth Low Energy.

Gradle An open source system for automating the build and associated processes for a software.

GPS A navigation system that makes use of satellites in order to define the location of a device.

iBeacons A protocol developed by Apple and is used in beacons.

ID Identification, usually a number, is used for distinguishing different objects or subjects.

Integrated Development Environment (IDE) A software application that provides tools for software development. A few examples of tools are a code editor and a code compiler that converts human readable code to machine code.

Internet of Things (IoT) Everyday objects that can be connected and exchange data through Internet

(9)

iOS A mobile operating system, used on mobile devices manufactured by Apple.

IP-address Identifier for a node in a TCP/IP network used for identifying and locating the node.

Java An object-oriented programming language developed by Sun Microsystems.

Linux An open-source operating system based on Unix.

MB Megabytes is one million bytes and is an entity for digital space measurement

SDK Software Development Kit is a set of tools that can be used to develop applications for specific operating systems, platforms, frameworks etc.

Source code A collection of instructions, data and comments that is written in a programming language

TDD Test Driven Development is a software development process where tests for a functionality are written before the source code is written.

Unit test A test for testing a specific component of an application

Unix A collection of operating systems that Linux and Mac OSX are based on.

URL Uniform Resource Locator, is a string that identifies a web resource XML eXtensible Markup Language is a mark-up language which defines rules for encoding documents

XP eXtreme programming is a software development methodology that is flexible to customer requirements and is focused around good team work

(10)
(11)

1

1 INTRODUCTION

Internet of Things (IoT) is everyday objects that can be connected and exchange data through Internet. IoT has been growing for several years and is predicted to be the next big thing, especially when 5G networks will be implemented and available for customers. [17, 18] Companies have started to use small devices connected to the network, to provide improved services to their customers.

Beacons are one type of devices that can be assigned to the IoT category.

Beacons are small, low-power, low-cost, transmitting and computing devices that transmit different information, depending on the protocol implemented.

[25] The transmitted signal is meant to be received by a smartphone application or similar, which then can transform the signal to content useful for a user.

Beacons do not see devices around it and do not receive any user information from any user device, they only send out information. Some beacons can also be configured remotely from other devices, using special secure communication.

Beacons support different communication protocols, but the first one was Apple iBeacons. In 2013 Apple introduced iBeacons at World Wide Developer Conference. [5] iBeacons is a protocol that enables location awareness possibilities for apps. [6, 7] This means that companies can provide location based services, for example provide information about a place that is close to a user.

In the beginning, beacon devices that used iBeacon technology could communicate only with Apple devices and no official support had been provided for other platforms. Later several beacon manufacturers provided software to use beacons with different protocols both for Android and Apple iOS operating systems.

1.1 Background

Common usages of beacons are information providing, advertising and indoor positioning. For example, Apple has been using iBeacons devices1 in Apple Stores, to provide information about their products. Since beacon devices are becoming more popular, more companies have shown interest in using them.

One of these companies is Adoveo AB. [9]

Adoveo is a company that has created a digital advertising platform using videos and quizzes. The company has currently three ways to reach a customer. The first is embedded banners in websites, the second is direct linking in text and the third is social media. Now, Adoveo is interested to add one more way to reach customers. Using beacons, Adoveo can provide location based advertising.

1 Beacons that implement iBeacons protocol

(12)

2

1.2 Problem

Beacon signals are meant to be received by an application on a smartphone or similar smart devices. Since users do not download applications specifically to receive advertisement, Adoveo is interested in using a plugin in other applications to make use of beacon technology.

In this thesis, different ways of consuming beacon devices with smartphones, in this case Android smartphones, will be analysed. This thesis will also discuss how companies can make use of these solutions for online advertising.

The thesis research question is:

RQ: Which solutions can be implemented to consume beacons with smartphone devices in order to provide online advertising?

1.3 Purpose

This thesis presents a solution that facilitates the use of beacon technology.

Using the presented solution, beacon communication can be integrated in existing smartphone applications.

The thesis can be used for informative purposes by people that are interested in new opportunities created by the emerge of beacon technology and those who want to learn about beacons. This includes people that are doing studies in the area, who want to use the thesis as a reference. The thesis can also be valuable to partners of Adoveo AB, that want to use the solution for their applications.

The reason for this is that they will be provided with an explanation of the solution and the study behind it. The thesis can also be valuable to people that want to learn about new online marketing opportunities.

1.4 Delimitations

This thesis will consider several solutions, but will focus around the case study of developing a plugin for consuming beacons, which is a solution that Adoveo is interested in. A plugin will be developed to run on existing Android applications. The goal is that using the plugin shall require minimal work for the developers of the existing application.

The case study will only focus on Android applications developed for Android SDK API level 18 or newer. Android is an open-source operating system for mobile devices. Open-source means that the source code is open for any developer. Since it is publicly available, there is almost no restriction to the development process and suits for a study, since it is easier to replicate by other people. This in an advantage over Apple’s operating system iOS, which is a closed system where development is available only on Apple computers.

(13)

3

Android operating system has different versions that are defined by the Android SDK API level. The Android SDK API level is a specific version of the Android platform, which defines what functionality is available in the system. By using Android SDK API level 18 as the minimum required level for the case study, this solution will currently cover 88.9% of all the Android users. [4] The reason for not using older API levels is that Bluetooth Low Energy (BLE), used by beacons for communication, was not supported until level 18. [12]

The potential of consuming different types of beacon devices is discovered in the study, but the main focus is to develop the plugin for beacon devices developed by Estimote. [10] In this case study, focus is on wireless communication with Bluetooth technology, in order to consume beacons.

Therefore, other potential communication technologies, like NFC, are eliminated.

1.5 Outline

In chapter 2, the detailed background for the study is explained. The chapter also describes the pre-study that has been made, including the literature study.

The literature study covers beacons, different protocols, known beacon usages, Android applications, ways to consume beacons and online advertising.

Chapter 3 explains the methods used for the research and describes how methods are used to answer the research question. Methods for data collection, analysis, implementation and evaluation is described. Project methods and software development tools are also described.

In chapter 4, the performed analysis, including interpretation of Adoveo requirement and practical experiments of the technologies mentioned in the literature study, is explained.

Chapter 5 covers the case study made in the thesis. The design decisions made during the design phase of the case study is explained. The implementation of the product developed in the case study is also explained.

Chapter 6 covers the evaluation and results of the case study. Both the evaluation for the functional and the non-functional requirements are documented.

In chapter 7, a discussion is provided regarding the methods used in the study and the results from the case study. The results from the case study are also compared to other solutions. Contributions of the study and potential future research is also mentioned.

(14)

4

(15)

5

2 THEORETIC BACKGROUND

This chapter presents the literature study of this thesis. In order to answer the research question, information about beacons, Android, plugins, online advertisement and data management platform, is needed. Literature study includes discovering how beacon devices work, different means of communication with other devices, how Android devices can receive a signal and if the solution suggested by Adoveo is theoretically possible.

2.1 Beacons

Beacons are small computing devices that transmit data. They can run on a battery or be connected to some other power source. For example, Estimote beacons has a 32-bit ARM Cortex CPU with accelerometer, temperature sensor and a 2.4 GHz Bluetooth 4.0 Smart, also known as Bluetooth Low Energy (BLE), for communication. [25]

As mentioned before, a beacon’s primary assignment is to broadcast a signal.

That signal can be picked up by any device supporting Bluetooth Low Energy (BLE), covered in next subsection. Beacons cannot see devices around them or download any information from any user devices, but they can receive configuration information using special protocols. Configuration information can for example be a new setting for the signal strength. Using a secured protocol, covered in later sections, it is possible to make sure that only authorized applications can update configuration.

2.1.1 Bluetooth technology

As communication technology, Bluetooth beacons are using Bluetooth Low Energy (BLE). BLE is a low power version of Bluetooth and was built specifically for Internet of Things. [39] In comparison to standard Bluetooth, BLE sends less data and less frequently, which saves power. BLE has also a different physical layer and a simplified state machine, which allows asynchronous communication and less power consumption. [2, 43]

BLE is split into 40 channels which are of two types: Advertising Channels and Data Channels. Advertising Channels are used for broadcasting data, discovering devices and initiation of a connection. Data Channels are used for communication after the devices has been connected. [43]

Using Advertising Channels, advertising channel packets will be transmitted.

Those packets can be data needed for discovery, connection initiation or some data that needs to be broadcasted. A device can also listen through Advertising Channels for a response to send advertising packets and also respond to them.

[43]

Bluetooth beacons are using BLE’s advertisement technology to broadcast data.

[44]

(16)

6

2.1.2 Power usage and range

Beacons require a low amount of power to operate, since they are using BLE.

Some beacons can last a couple of years and broadcast up to 200 meters.

Beacons manufactured by Kontakt2 has maximum range of 70 meters. [3]

Estimote beacons can last more than 3 years on single CR2477 battery and can transmit information up to 200 meters.

The signal range of beacons is customizable by setting different power requirements and intervals of the sending signal. Low signal power leads to a shorter range and a longer life-time. Lower transmitting interval leads to a longer life-time. High signal power leads to a longer range and a shorter life- time. High transmitting interval leads to a shorter life-time. [37]

The signal can be diffracted, interfered with or absorbed by water (including human body), meaning that in real world conditions, the range may vary. [25]

Bluetooth is also broadcasting on an open 2.4 GHz frequency which is widely used by many other wireless protocols, including Wi-Fi3. That means, other devices can interfere with beacons. For example, Wi-Fi has higher output power, up to 23 dBm, compared to maximum allowed 10 dBm for beacons. If a beacon is placed near a Wi-Fi source, it can, and will according to some tests, distort the beacon transmission. [42]

2.1.3 Communication protocols

All beacons implement one or several communication protocols. A protocol in this case, means a communication standard between two or several parties that specifies what kind of messages will be sent and how they are constructed.

Many beacons support several protocols. Some beacons can broadcast several protocols, for example Estimote Location Beacons. Beacons that can do that are taking turns sending information with different protocols, using first one protocol and then another. Beacon that cannot broadcast several protocols, broadcast only one. The beacon configuration needs to be changed to broadcast another protocol.

Several protocols exist, but this study covers iBeacons by Apple, Eddystone by Google and a few Estimote protocols, since they are supported by the beacons that will be used in the case study. [7,8] iBeacons and Eddystone also appears to be the most popular protocols.

2 Beacons manufacturer and beacon software provider 3 Wi-Fi is wireless networking technology in a local area

(17)

7

2.1.4 iBeacon

iBeacon is a beacon protocol created by Apple. With this protocol beacons have been introduced to the world.

An iBeacons data packet is constructed of three different ID’s [2]:

● UUID - is a unique identification number that identifies a group of beacons. For example, if one retail store chain purchased 1000 beacons, they all will have same UUID. That way, store’s receiving application can filter beacons and work only with their own ones.

● Major - an identification number that can be used to identify smaller groups of beacons. For example, if the store chain has their physical stores in different locations, a store can be identified by a major number.

For example, number 1 can be Stockholm, number 2 can be London and so on.

● Minor - an identification number that can be used to identify even smaller groups or individual beacons. For example, in the same store, housewares can have id number 10, clothing 20 and so on.

All those ID values can be changed to suit the purpose. This protocol is broadly supported by different beacons, including Estimote beacons. [7]

The iBeacon protocol is officially supported only by iOS4 devices, meaning that only iOS devices officially can understand iBeacons protocol. Even so, there are several libraries available for Android system and several beacon manufactures provide their own libraries to support iBeacons on several platforms. The Android system is covered in the Android section further on.

One restriction iBeacons has compared to some others, is that an application must be created to use iBeacon signals. Eddystone protocol, described in the next subsection, has a type of message that can be received by Google Chrome application.

2.1.5 Eddystone

Eddystone is a beacon protocol developed by Google. [13] This protocol can be used by Android and iOS devices.

It has several different types of payload that can be included in a message: [13, 20]:

● Eddystone-UID - a 16 bytes unique, static ID. It has two parts, a Namespace component and an Instance component. A Namespace component is a 10 bytes long character value5 and has the same purpose as UUID in iBeacons, to identify beacon groups. An Instance component

4 Mobile operating system created by Apple

5 Character value in this case can be numbers, letters or combination of both

(18)

8

is a 6 bytes long character value, used for identifying smaller groups or single beacons in a group. This correspond to major and minor values in iBeacon protocol.

● Eddystone-EID - a dynamic ID that changes every few minutes, which is used to secure transmission. [15] It is designed for security and protection from Hijacking and Spoofing. Hijacking is when an attacker uses someone else's infrastructure to deliver other content. Spoofing is when an attacker uses someone else’s infrastructure to place it in a different location. For example, a third party can copy beacon information from someone else's beacon and places it in another beacon on a bus. The Eddystone-EID id value is determined by a public key on the beacon, and can be checked by a remote resolving service using a private key. The token is relayed to the service by an application on a user device together with an authorization key. Authorization key belongs to the application and makes sure that only authorized applications can relay the token. [20]

● Eddystone-URL - a way to send a compressed URL6 that can be used directly by a client. With this protocol, there is no need to build an application, since the URL will be opened in a browser as soon as it receives the signal. Currently, not all mobile browsers have support for that protocol, which means not all devices can open the URL directly.

This is part of Physical Web. Physical Web is an open standard for IoT backed by Google and is built in into Android operation system. Google defines Physical Web as “an open approach to enable quick and seamless interactions with physical objects and locations. “[24]

● Eddystone-TLM - an endpoint for maintenance of beacons. Together with the usual data, a beacon will send telemetry data like battery voltage, beacon temperature, beacon uptime and number of packets sent since last power-up or reboot. This signal is broadcasted less frequently than other signals.

Google recommends to set up beacons implementing Eddystone-UID or -EID to support future platforms.

Eddystone also provides Eddystone Configuration Service - a GATT service. A GATT service is a Generic Attributes service. It defines a collection of hierarchical data structures exposed to connected BLE devices. Those data structures encapsulate the behaviour of a part of a device. [21, 22] “It allows the beacon to report its capabilities to apps, and for the beacon's broadcast data to be reconfigured. This service is also necessary for secure configuration and registration as an Eddystone-EID beacon.” [23]

6 URL stands for Uniform Resource Locator is a string that identifies a web resource

(19)

9

2.1.6 Estimote protocols and tools

Estimote provides a range of their own protocols and tools for their beacon devices. Different protocols are suited for different purposes.

2.1.6.1 Fleet management API

Estimote have created a fleet management API for wireless configuration of Estimote beacons. When a client application receives a beacon signal, it connects to Estimote Cloud where configuration for beacons is defined. If configuration has been changed, then that client application receives the new configuration and forwards it to the beacon. That way beacon will be updated without any need of technicians going around and changing configuration manually. Fleet management API also provides several endpoints to get the list of currently registered beacons, their information and more.

2.1.6.2 Here & Now

Estimote’s Here & Now service is a way of sending real-time contextual notification based on the signal from Estimote Location Beacons. This is built on top on Eddystone-URL and Physical Web, but has a few extra benefits. As mentioned before, with Eddystone-URL beacons are sending an URL that can be picked and opened up by a browser that supports beacon signals. Here &

Now works similarly. A beacon signal with Eddystone-URL is received. The link is sent to an Estimote service where it is resolved and return user defined information. That information is a title, a description and a link to a website.

Then a notification is issued with the received information. [70, 71]

Here & Now is built on top of Physical Web. Physical Web is build-in into the Android operating system and in Chrome widget for iOS. That means that no dedicated application is needed to be installed on user device. [70, 71]

2.1.6.3 Nearable

Nearable is a protocol developed for Estimote Stickers. Estimote Sticker is a smaller version of a beacon that can broadcast signal up to 15 meters, is waterproof and provides contextual data of physical objects, described below.

The main difference between this and other protocols is that it sends actual predefined context and sensor data, not ID values. [14] Contextual data can be some kind of text message. Sensor data is temperature data, orientation in space, motion in X, Y, Z and more. [51]

2.1.6.4 Other protocols and tools

Estimote Connection, Estimote Location and Estimote Telemetry are a few important Estimote protocols and tools that handle connection to beacons, indoor localization and maintenance information about beacons. Those three are covered more in-depth in the Estimote SDK subsection further on.

(20)

10

2.1.7 Common usages

Beacons are used for many different purposes. Indoor positioning is a big use case and has been researched broadly by several academic institutes, including KTH. [53]

Information providing is the intended usage of beacons. Beacons send tokens that can be transformed to information about something nearby. For example, it can be a product in a store or an object in a museum. It can also be used to provide advertisement.

In December 2013 Apple has deployed iBeacons in all their US stores. Users could receive product information, suggestion and offers in stores. [45]

Major League Baseball added BLE beacons to their stadiums. Beacons and “At the Ballpark” application provides direction to seats, possibility to display tickets and more. [45]

Store and restaurant owners can log how their customers move in a store and know which products customers stay for, and for which they do not. [45]

2.2 Android

Android is a mobile operating system for mostly smartphones, tablets and wearables. Android is developed by Google and is open source. That means anyone can see the code of the system and also can make changes and use Android as starting point for their own systems. For example, most smartphone companies that are using Android in their products, write changes to the default Android system and make it more adjusted to their own requirements. [46]

Android is based on a multi-user Linux system, where every application is a user and has a unique id. Linux is an open source operating system based on Unix. [36]. An Android application runs in its own Linux process by default.

[37]

2.2.1 Android Applications

An Android application is a program that runs on the Android operating system. An application can for example be a game like Angry Birds or a web browser like Google Chrome.

Applications for the Android system are written in the Java programming language. The source code is compiled with associated data and resources. The compilation is done by the Android SDK Tools and the files are compiled into an Android Package, which is an archive file containing all the content of the application. The Android Package is then installed on the Android operating system.

An Android application consists of different parts: application components (for example activities to show content to users and services to perform some kind of task in the background), a manifest file (which is explained more in-depth in

(21)

11

section 2.2.3), and resources like images and text. An Android application can use many different system services. [37] One of these services is Bluetooth Low Energy (BLE).

BLE was first introduced for Android SDK Level 18. As mentioned in the introduction, the Android SDK API level is a specific version of the Android platform which defines what functionality is available in the system. Currently about 88.9% of the Android users, uses Android SDK Level 18 or newer. BLE is therefore available on most Android devices. [12]

As mentioned before, Android devices will receive different information from different beacons with different protocols. Some information will be direct content that can be shown to a user, but in many cases information from a beacon will be some kind of token. Therefore, a token has to be converted to some kind of content, which can be done in different ways.

A common way is that the receiving application will receive some kind of token from the beacon device, depending on the protocol used. The application matches the beacon token with a key in a data structure, usually some kind of database. The database value associated with the key contains information, that is fetched by the application and shown to the user. Content can also be provided by extracting information from the token. For example, if the token consists of an URL when using Eddystone-URL, the application can open the URL directly in a web browser.

2.2.2 Estimote SDK for Android

Estimote SDK for Android is provided by Estimote Inc as part of their beacon products. SDK stands for Software Development Kit and provides functionality for developers to handle Estimote beacons. It also provides support for services that are included in Estimote Cloud. Estimote Cloud is a collection of services provided by Estimote and includes a web dashboard, beacons management, authentication and security and much more. [40] Those services are not covered in depth in this section. Estimote Connection, Estimote Location and Estimote Telemetry, covered in the following subsections, are all parts of the Estimote SDK for Android.

2.2.2.1 Estimote Connection

Estimote Connection is an abstraction of the connection process and hides all connection procedures from application developers. [7, 31]

The SDK handles the establishment of a Bluetooth connection and provides authorization. Unauthorized parties are thereby prohibited to change beacon configuration. [31]

2.2.2.2 Estimote Location

Estimote Indoor Location SDK is set of tools to provide precise indoor positioning services. Currently, these tools are only available for Estimote Location Beacons. How precise location will be, is determined by the size and shape of the room, crowd density and number of beacons. There has to be at least, one beacon per wall. [23]

(22)

12

2.2.2.3 Estimote Telemetry

Estimote Telemetry packet transmits real time sensor and health data and can be picked up by the Estimote SDK and relayed to Estimote Cloud. [33] Health data in this case, refers to the health of the beacon, for example battery life and temperature.

2.2.3 Plugins and libraries

The solution that Adoveo wants to investigate involves plugins. This section covers plugins and how they can be used in Android.

A software plugin is an extension to an existing software application. The purpose of a plugin is to add functionality to an application. [19] Reasons for a software application to support plugins is to make the application thinner and to enable adding functionality from third party developers. Plugins are supported by web browsers like Google Chrome and Mozilla Firefox, and software applications like Adobe Photoshop and Eclipse. An example of a plugin used in Google Chrome is AdBlock, which blocks ads on websites displayed in the browser. [55]

“Plugin” as a term does not exist in the Android world. Instead, they are referred to as libraries, that are usually imported with Gradle7. [34] Also, an Android applications can call other applications available on the device. This makes classic plugins unnecessary in most cases. [35]

One of the advantages of plugins in software is that they only need to be added, and will be started automatically with the application. Consumers of the plugin do not have to do any additional programming to launch the plugin. That kind of auto start is possible on Android using an application manifest. Application manifest is an AndroidManifest.xml file that provides essential application information to the Android system, in order to run an application. Every application must have at least one such file. [27] Android also provides support for multiple manifest files that are merged to one by Gradle build. [28]

2.3 Online advertising

Online advertising is marketing and advertising displayed to consumers using the Internet. There are several different ways that advertising can be done online. One common way to advertise online is display advertising, which means banners that contain text or multimedia, like videos.

Another common way to advertise is through search engine advertising, which lets advertisement be bound to keywords. The advertisement will for the most part be displayed as a search result on the top or to the right of the other search results. It is also common with social media advertising, that can be used as word-of-mouth marketing, which means people will advertise a product they like by telling other people about it. A common way to do social advertising is

7 Gradle is a build tool used to build a software project and to include different dependencies, to simplify development process. [41]

(23)

13

by using social medias like Facebook. A sponsored post on Facebook looks like a regular post, but states that it is sponsored. Members of Facebook can like, comment or share the sponsored post, and the advertisement can therefore be more widely spread. There are some benefits of using online advertising compared to traditional advertisement like television and newspapers.

One of the benefits of online advertisement is that it is much easier to measure than traditional advertising, like television commercials. For example, it is very difficult for a company to measure if their television commercial for a product actually affects if people want to buy the product or not. In online advertisement, the number of clicks on the commercial can easily be measured, and also what the user does after they clicked the advertisement e.g. making a purchase. The good measurability of online advertisement can also be used to choose between two different commercials. An experiment can be done when some people can see one commercial for a product and the other group can see another commercial for the same product. Then the response from the users can be measured in order to see which commercial is best.

Another benefit of online advertisement is that the advertisements can be targeted to individuals, based on information about the reader. Targeting has been a desired benefit for a while, but Internet has made it a lot easier by making it easier and cheaper to find information about users. It is also easier to send different commercials online to a specific user, than to send different newspapers to different users based on targeting. There are different types of targeting. One example is contextual retargeting, that displays the advertisement based on the content of the current website. Another example is demographic targeting, which displays the advertisement based on user data, like age and gender. [26] Retargeting is another word used for targeting and is the word used in this report.

One more retargeting technique is the retargeting used in geomarketing, which uses geographic information about a user or user group to target commercials.

The geographic location can be provided by using for example the IP address, GPS or Beacons. [29, 30]

2.4 Data Management Platform

A Data Management Platform (DMP) is a computing system that stores and manages data. [75] A DMP stores, sorts and provides useful information for marketers and other businesses.

2.5 Earlier work

There exists earlier research on both online advertising and beacons. The research that has been done on beacons, mainly focuses on indoor positioning.

Research of online advertising combined with beacons, has not been found.

(24)

14

2.6 Summary

Beacons are transmitting devices with low computing power and low power requirements. Bluetooth 4.0 Smart or BLE has very low power requirements, which explains its usage in beacons. Beacon signals are meant to be received by smartphones or similar devices that can receive BLE signals and support beacon protocols.

Many different protocols are used for communication between beacons and receiving devices. iBeacons is one of the first and still officially only supported by Apple products. It is closed source and transmits three different ID values that makes it possible to distinguish different beacons. An application on the receiving side converts those IDs to some kind of content that is later shown to a user. Eddystone is another beacon protocol developed by Google that is open source and has more options of broadcast messages, in comparison to iBeacons.

Estimote is a beacons manufacturer whose product support both iBeacons and Eddystone and also provides their own protocols for connection, configuration, indoor positioning, telemetry and smaller types of beacons.

Most research done currently on beacon devices is indoor positioning. That research is not important for this thesis since it does not answer any of the questions, but those papers provide a lot of technical information about beacons, BLE and alternatives to beacons such as NFC and Li-Fi. They are not covered in this thesis.

Android is an operating system based on the open source operating system Linux. An Android application is an application that runs on the Android operating system. The application consists of application components, a manifest file and resources.

Android supports BLE only from API 18 and newer, which means that currently 88.9% of users will be able to use beacons. BLE is used to consume beacons by converting a token transmitted by the beacon to content shown to the user.

A plugin in Android is a library imported by Gradle. Android applications can also make use of other applications on the device, to perform some kind of task.

Android supports multiple AndroidManifest-files. That is a positive sign that it is quite possible to create an auto-launching plugin for Android, and add plugin specific permissions.

Online advertising is marketing and advertising displayed to consumers using the Internet. Examples of commercials used in online advertising is banners, search engine advertising, and social media advertising. Benefits of using online advertising is that it is easier to measure the success of the commercial, and to target commercial to individuals.

(25)

15

2.7 Sources and related works

This section presents important sources used for this literature study.

Source Research area Key findings Cross-platform

Mobile Development and Internet of Things [2, 45]

Beacons, Bluetooth Low Energy(BLE)

Bluetooth Low Energy(BLE) was integrated into Bluetooth Core Specification 4.0 in 2010. BLE is marketed as Bluetooth Smart.

BLE is transmitting less data and less frequently compared to Bluetooth Classic.

Beacons current usages like in Apple Stores, at baseball stadiums and in stores.

Bluetooth Official website and technical specification [21, 22, 39, 43]

Bluetooth Low Energy(BLE)

BLE has 40 channels of two types.

Advertising type is transmitting and also can receive responses. Data type is used for communication when a connection is established. GATT defines a hierarchical data structure that is exposed to connected BLE device. BLE was built specifically for Internet of Things.

Texas Instruments, Bluetooth Low Energy Beacons [42, 44]

Bluetooth Low Energy(BLE), Beacons

Beacons can be non-connectable and connectable. Since Wi-Fi is using same frequency as Bluetooth and is much more powerful, placing a BLE beacon near a Wi-Fi source can distort beacon signal.

Estimote

Documentation and Estimote Community Portal [7, 10, 14, 20, 25, 31, 32, 33, 40]

Beacons, beacon protocols, Estimote SDK

General information on what beacons are and how they operate. In-depth information on iBeacon and Eddystone protocols.

Information on Estimote protocols, services and security. Estimote provides a SDK that provides connection to beacons, security and several other tools.

Google Developers Beacon

Documentation [8, 13, 15,

Beacons, Beacon protocols

Google beacon platform and beacon tools are available for Android and iOS devices.

In-depth information on Eddystone protocol and payload types. Eddystone security protocol and how it works.

(26)

16

Google Android Documentation [4, 34, 35, 37]

Android operating system

Current Android usage and version

distribution. Android supports BLE only from API level 18 and higher. BLE requires user permissions. General information about key components in an Android application.

Android application can request other applications on the device to perform some task. Android application does not seem to have plugins, but instead uses libraries.

Android application uses App Manifest that provides information to Android system essential to launch an application.

Google Android Studio

Documentation [ 27, 28]

Android

Development tools

Android Studio is a tool for developing application. Android Studio project supports several App Manifest that later merged into one. Android Studio provides simple way to create Android Libraries.

Advances in

Computers. 81st ed [26]

Online marketing Different types of online marketing. Benefits of online marketing compared to traditional marketing.

(27)

17

3 METHOD

This chapter covers the research methods, data collection methods, implementation process, evaluation methods and tools used in this study to answer the research question.

3.1 Research methods

Research methods can be divided into qualitative and quantitative studies, described below. [54] This section also covers inductive and deductive methods, the chosen research method and the research process.

3.1.1 Qualitative and quantitative research methods

In a qualitative study, researcher interprets subject using empirical materials, for example personal experience, people's opinions and observations in natural environment. Most of the data in qualitative research is words that cannot be quantified.

Quantitative study is a study formulated through numbers and statistics. It is about quantifiable data. Researchers studies the subject objectively and eliminates their personal opinions. The goal is to produce generalized and repeatable result. [16]

3.1.2 Inductive and deductive approach

By using an inductive approach, observations and patterns are used to get a better understanding of a concept or to formulate new theories. Qualitative data is often used when using this approach.

The deductive approach is used to verify or falsify a theory. This is often done by performing experiments on quantitative data relevant to the theory. The experiments are done in order to test the theory. [76]

3.1.3 Chosen research method

In this thesis both qualitative and quantitative methods are used. Some parts are qualitative, such as evaluation of the simplicity of importing a plugin. Some parts are quantitative, such as evaluation of the battery usage that can be quantified. An inductive research approach is used in this study, since it is focused around exploration of new solutions.

3.1.4 Process overview

The process of the study is divided into different phases. See figure 3.1.1 for an overview of the process.

(28)

18

Figure 3.1.1 - An overview of the process of the study

3.2 Data collection methods

This section covers different ways that data is collected in this study.

3.2.1 Company information

In discussion with the company, information is gathered regarding their background, their business and the background of the problem. The company provided a solution to their problem that they want analysed.

3.2.2 Literature study

During the first weeks of the project, a literature study is conducted. This includes reading earlier theses, researches, official documentations and specifications of different technologies like Bluetooth, beacon protocols and the Android operating system. Earlier theses and other scientific researches about online advertising are also part of the study intended to help answering the research question.

Problem statement

Data collection - Literature study - Adoveo requirements

Analysis - Interpretation of requirements - Experiments

Case study

Results and Evaluation

Discussion and Conclusions

(29)

19

3.3 Analysis process

Adoveo has provided a solution they want to get analysed. Analysis is the process of performing several experiments to get a better understanding of the technology, and understand if the solutions suggested by Adoveo are possible to implement.

The first step is to understand the requirements from Adoveo and what kind of solution they want to implement. This is important to identify which kind of experiments has to be done. The next step is to perform the experiments.

To keep track of which experiments has to be done, a checklist is created, see table 3.3.1. The checklist includes descriptions of the experiments, the statuses (such as green for done, yellow for partly done or white for not done) and comment sections to point out important issues or other information.

Description Status Comments

Test receiving beacon signal and

understand iBeacon packets There is a problem with API 19, but it is an Estimote SDK problem. It is reported to their development team.

Test to send a UUID, major, minor to a webservice and get back the content data, such as location information

Works with our own webservice, need to test if it is possible with Estimote Cloud

Test to collect information about the user from the device

Test to build an Android library

Test to integrate the library into an Android application

Works as a local import and a local Maven dependency. Need to be tested as a remote repository.

Test different ways to launch the library 1. Auto launch works with Application object - but only one Application object can exist with manifest otherwise it does not work

2. Calling an object that starts a service

(30)

20

Test to start the plugin when the phone boots up without having the user to start an application

Table 3.3.1 - Experiments checklist at one point during the work

3.4 Implementation process

After the experiments are successfully conducted, the next step is to perform a case study with an implementation satisfying Adoveo requirements. The case study is the result of the literature study and experiments and is later used to answer the research question.

The implementation process starts with a design phase. Lessons learned during the experiments, and previous experience have big impact on the design. An important tool during the design process is UML diagrams. UML stand for Unified Modeling Language and is a modelling language for software engineering and design. With UML, it is possible to create structural, behavioural and interaction diagrams of an application. That helps a developer or a team to make important decisions before coding. [68]

Several diagrams are used during the design stage. One important diagram is Class diagram. A Class diagram shows classes, their state, behaviour and connections to other classes. A Class diagram helps to define needed classes and their structure. Using this diagram, it is easier to decide which classes can be merged with other classes and which ones should be split into several.

Classes should depend on other classes as little as possible. Reason is that if 10 classes depends on a class that will change its public parts, then the other 10 classes will have to be changed. Using Class diagram, it is easy to see if a class has too high coupling.

Another important diagram that is used in the design phase is Sequence Diagram. It is an interaction diagram and shows how different components are interacting with each other. This diagram is good for defining methods and identifying design patterns.

After design is complete, the application is implemented. Implementation is done in iterations. Each iteration is:

● Implement part of functionality

● Write test for the chosen functionality

● Write a function and directly test it with unit tests

Those steps are followed until the application is written and all tests are passed.

(31)

21

3.5 Evaluation methods

The Oxford Dictionary describes evaluation as “The making of a judgement about the amount, number, or value of something; assessment.” [56].

Evaluation in this study is done to make sure that the functional requirements are working correctly and that the non-functional requirements are fulfilled.

This shows if the implementation created in the case study is a viable solution for online advertising using beacons. This result is later used to answer the research question.

3.5.1 Non-functional requirements

Non-functional requirements are evaluated using both qualitative and quantitative methods. Important non-functional requirements to evaluate, are the simplicity of integrating the plugin to a client application and how much the performance of the client application is affected by the plugin.

The simplicity of integration is a subjective quality that is different for every developer and is evaluated using qualitative method. Generally, a plugin only has to be imported and no more work has to be done by the users to start using added functionality. In this study, simplicity of integration has following qualities:

● Importing should be possible for a developer with a common software project management tool

● In the worst case, a developer has to write a simple command to call a method to start the plugin. In the best case, the plugin will launch automatically

● The original application should not change in any other way than adding code for importing the plugin and starting it

When it comes to the performance of the plugin, there are a few important qualities: the battery life and RAM usage when running it.

To evaluate the performance, several tests of the product are conducted:

● The comparison of battery usage running the application in the background for 1 hour without the plugin and running application in the background for 1 hour with the plugin. In the evaluation, the beacons will be turned off and on every 10 minutes. This is a quantitative evaluation, since the data is collected and transformed into the statistics.

● The comparison of battery usage using the phone normally for 8 hours without the plugin and 8 hours of normal usage with the plugin on and with beacons in range of the phone at different times. This is a qualitative evaluation, since empirical observations are done by the user.

● An observation of RAM used by the plugin when running the plugin for 90 minutes during an active period.

● An observation of RAM used by the plugin after running the plugin for 12 hours during a normal period.

(32)

22

The development tool used for the development of the plugin contains a RAM monitor which is used as a tool in the evaluation. If provides both the current amount of RAM allocated and how much memory each component in an application is using. The development tool is explained in section 3.6, further on. The battery observation is done using a battery monitor that is built in into the Android operating system.

3.5.2 Functional requirements

Functional requirements are collected in a checklist form. These requirements are measured using qualitative methods. That means that the requirements are fulfilled when testers of the application have interpreted that the requirements are fulfilled. The list of functional requirements is presented in section 4.1.

Examples of these requirements are that the plugin is able to receive beacons signal by either iBeacons or Eddystone and that the plugin can collect information about a user, important for the retargeting.

To make sure that application fulfils the functional requirements, log messages written by the application is analysed and a remote web service is used to check if information gathered on the phone is sent correctly to a web service for retargeting or to a Data Management Platform to handle the collected data.

3.6 Project method and software development tools

This section describes the project methods and the development environment used in the project.

3.6.1 Project method

As a method for performing the implementation part, XP (eXtreme Programming) is used. XP is an agile software development method. An agile method means that the process is flexible. An example of this is that the requirements can change during the project depending on the needs of the customer. [47] XP is used in this case study because there are many rules included in the method that are suitable for creating high quality software.

There is a list of work practices that has to be followed. In practice, not all rules are followed and each developer team chooses what practises are going to be followed and which not. That way teams can adapt to different projects. A few of the practises proposed in this method are iterative work, pair programming and Test-Driven Development (TDD). These are a few of the practises followed during the implementation phase.

Iterative work means that the case study is divided into smaller pieces of work and every previous piece is a building stone for the next. That way a big problem gets solved by solving multiple subproblems.

(33)

23

Pair programming means that two people are programming together on the same computer. [49] At any given time, one person is writing the code and the second person is checking that the code is correct, giving advice and checking that the code has good quality. Programmers are switching roles when it is suitable, for example when one has an idea that might solve the problem. Pair programming is used to increase the quality of the code and that is the reason for using the practice in this project.

TDD means that tests are written before the actual production code is written when implementing new functionality. [50] A test is written to define what is expected to be done by a certain function. Then the function code itself is written to pass the test and all other previously defined tests. When the code has passed the test, it gets refactored to be as simple as possible and all tests are run again. There are several reasons to use TDD. One is to make sure that developer is concentrating on solving the problem. When writing a test, the developer is concentrated on the conceptual view of the function. This is that the function will solve some kind of problem, where it receives some information (input) and respond with some solution (output). If the developer first writes the function and a test after, there is a risk that test will be written just to accept the function technically, but the conception goal of solving some kind of problem may be missed.

More general reason to write tests is to make sure that new changes do not break the program. That means previous functions has to work as before and not get affected by new changes, unless the changes are meant to change previous functions.

3.6.2 Development environment

As mentioned in the delimitations section, all practical parts in the case study are implemented for Android smartphones. Android applications are developed using Java programming language, but with configuration and resources defined with XML. XML is a mark-up language where the tags are defined by the developer. Example of resources defined by XML in Android is text in different languages.

To develop the application an IDE (Integrated Development Environment) is used. An IDE is a software application that provides tools for software development. A few examples of tools are a code editor and a code compiler that converts human readable code to machine code. Android Studio is the official IDE for Android application development and is used in the case study. [52]

There are multiple reasons to use Android Studio. One is that Android Studio is an official Android IDE and is very popular, which makes it easy for others to follow this study. Since it is popular, there is a lot of documentation and support, which makes it easier to solve problems. Android Studio has tools for creating Android libraries and merge several manifest files into one. Both functionalities are important for the case study.

(34)

24

(35)

25

4 ANALYSIS

This section covers the practical analysis of the technologies mentioned in the literature study. The practical analysis is needed in order to be able to perform the case study. First, an interpretation of the Adoveo requirements is explained.

Then the experiments that are conducted are explained, with explanations on how they are conducted, and the outcome of the experiments.

4.1 Interpretation of Adoveo requirements

Adoveo’s general requirements are to create a plugin that is inserted into partners applications to receive beacons and perform a task when beacon signal is received. There are several different tasks that are considered to make use of the beacons in advertising.

Adoveo’s original idea was to show advertisement as notifications. This turned out to be possible to do only in a few cases due to legal issues. This is further explained in the result and discussion.

The modified version of the product is to create a plugin only for retargeting.

Table 4.1.1 is showing a checklist of the functions that plugin have to perform.

Description Status

Be able to receive signals from a beacon using iBeacon protocol

Be able to convert the beacon signal to information needed for retargeting, e.g. beacon position and which store it belongs to

Be able to collect needed information about a user (e.g. user identifier and current time) and store a cookie

Be able to send both the beacon information and the user information to a webservice

Be able to integrate the plugin into any Android application with API 18 or greater

To not interrupt work of the original application, e.g. an error in the plugin will not affect the original application

Table 4.1.1 - Checklist of the functional requirements for the case study

(36)

26

4.2 Experiments

Before performing the case study, eight practical experiments are conducted to get a better understanding of the technology. The experiments also impact on the design of the implementation created in the case study.

● The first experiment is conducted to learn how to work with beacons and receive beacon signals using an Android application with a background service.

● The second experiment is to learn how to translate the received beacon information to user friendly content, by using a web service.

● The third experiment is to learn which information can be collected by an Android application.

● The fourth experiment is to learn how to create a plugin for Android as a library.

● The fifth experiment is to learn how to integrate and launch the Android plugin

● The sixth experiment is to learn how to start the plugin on reboot of the phone, without the need for a user to start the application.

● The seventh experiment is about combining the first, fourth, fifth and sixth experiments into a single plugin. New functionality is also added to learn to perform a task alongside listening for beacon signals. Several overall tests are also performed to check plugin functionality in different real-world situations.

● The eighth experiment is about trying to remove the need of having to build a beacon manager that listens for beacons and use the existing functionality provided by the Physical Web.

4.2.1 Receiving beacon signals

The first experiment is about learning how to receive beacon signals using Estimote SDK and to check if there are any problems with different devices.

This is an important part of answering the research question since this research is about beacons and how they can be used with smartphones.

First, a new project is created in Android Studio. There are different decisions that has to be made when creating an Android Product, such as API level, if application will be for phones or for TV or other devices. In this case, it is a phone application with minimum API level 18 since that is the lowest API level that supports BLE. The next step is to import Estimote SDK into the project which is done by adding a dependency into the Gradle build file.

References

Related documents

We made an attempt to evaluate the Bluetooth Low Energy protocol in conjunction with Smartphones, the way it works in indoor environments, how it is affected by multipath and

The aim of this study is to identify relevant content for a self-management guide by using the outcomes of previous research in combination with knowledge and experiences from

I regeringens vision läggs stor tyngd vid biobränslen som bland annat biogas och bränslen från skog och jordbruk (prop. Miljö- och klimatarbetet sker till stor del genom

In theme 4.2.2, that what kind of scenario is affecting the results of the instrument, it was mentioned that there was a difference between the two first crews’ results in

Decerno already monitor requests using a threshold based approach with static thresholds and today alarms can be raised due to three reasons.. The average response time for GET

Previous research on children’s views of advertising on the internet has shown that young children are mostly (Andersen et al. 2008), and teenagers are exclusively (Sandberg et

betalsystem, en- och tvåvägs informationsutbyten och användarverifiering för tjänster. I studien användes metoderna dagboksstudie, enkätundersökning, upplevelsestudie, workshops

Impressions A business metric for counting the number of times mobile subscribers have viewed a particular page, mobile advertisement on a mobile internet site or embedded within