Cross-Platform Mobile Application Development - Theseus

Page created by Nathaniel Burton
 
CONTINUE READING
Cross-Platform Mobile Application Development - Theseus
Bachelor’s thesis

Information and Communication Technology

2022

           Juuso Torikka

           Cross-Platform Mobile
           Application Development
Bachelor’s Thesis | Abstract

Turku University of Applied Sciences

Information and Communication Technology

2022 | 28 pages

Juuso Torikka

Cross-Platform Mobile Application Development
The purpose of this thesis is to develop a prototype version of the new mobile
application MyEWay with TUAS Health Tech Lab. for Eerikkilän Urheiluopisto.
The objective is to build a prototype version, which can be used to gather user
experience data to further develop the application into a release version. The
application has to work on both Android and iOS operating systems, which is
why it will be built using a cross-platform framework like React Native. The
application must contain features like possibility for the user to insert their
personal feelings of fatigue and wellbeing after practice, and on a daily basis.
The application has to be able to display this data with simplistic and easily
understandable charts and visualizations for both players and coaches.

Objectives required in this stage of the development process were implemented
successfully into the application mostly within time limits. The final result is a
requirements filling mobile application designed for test use, which can be
utilizied to collect required data to further develop the application.

Keywords:

React Native, Expo CLI, Android, iOS, Cross-Platform Development
Opinnäytetyö (AMK) | tiivistelmä

Turun ammattikorkeakoulu

Tieto- ja viestintätekniikka

2022 | 28 sivua

Juuso Torikka

Cross-Platform Mobile Application Development
Tämän opinnäytetyön tarkoituksena on rakentaa mobiilisovelluksen
prototyyppiversio uudesta MyEWay-sovelluksesta Eerikkilän Urheiluopistolle
yhteistyössä TUAS Health Tech lab:in kanssa. Tavoitteena on rakentaa
prototyyppiversio, jota voidaan käyttää käyttäjäkokemuksen parantamisessa
sovelluksen jatkokehityksen aikana. Mobiilisovellus rakennetaan käytettäväksi
sekä Android, että iOS käyttöjärjestelmillä, jolloin on järkevää valita
alustariippumaton teknologia, kuten React Native, käytettäväksi
kehitysteknologiaksi. Prototyyppiversion tulee sisältää käyttäjälle tapa syöttää
sovellukseen henkilökohtaisia tuntemuksia rasituksesta ja hyvinvoinnista, sekä
esittää nämä tiedot helposti luettavana ja tulkittavana esimerkiksi kaavioiden
muodossa niin pelaajalle, kuin valmentajallekin.

Tässä kehitysvaiheessa vaaditut ominaisuudet onnistuttiin sisällyttämään
sovellukseen enimmäkseen aikataulujen puitteissa. Lopputuloksena on tuotettu
vaatimukset täyttävä, testikäyttöön sopiva versio mobiilisovelluksesta, jonka
avulla kyetään keräämään testaajilta käyttökokemusta kehittäviä tietoja, joiden
avulla mahdollistetaan jatkokehitys.

Asiasanat:

React Native, Expo CLI, Android, iOS, Cross-Platform Development
Content

List of abbreviations (or) symbols                           5

1 Introduction                                               6

2 Mobile applications and their development technologies     7
2.1 Different approaches to mobile application development   7
    2.1.1 Native applications                                7
    2.1.2 Cross-platform applications                        8
2.2 Xamarin                                                  9
    2.2.1 .NET                                               10
    2.2.2 Xamarin.Forms                                      10
2.3 Ionic                                                    10
2.4 Flutter                                                  10
2.5 React                                                    11
    2.5.1 Node.js                                            11
    2.5.2 State and props                                    11
    2.5.3 JSX                                                12
    2.5.4 React Native                                       12

3 Technical implementation                                   16
3.1 Technical requiremets                                    16
3.2 Analysis                                                 16
3.3 Technical implementation                                 18

4 Conclusion                                                 24

References                                                   26
List of abbreviations (or) symbols

API              Application Programming Interface

BaaS             Backend as a Service

IDE              Integrated Development Environment

JS               JavaScript

JSX              JavaScript XML

npm              Node Package Manager

OS               Operating System

SDK              Software Development Kit

UI               User Interface

.NET             Software Farmework developed by Microsoft
6

1 Introduction

The purpose of this thesis is to develop a cross-platform mobile application for
Eerikkilän Urheiluopisto in collaboration with TUAS Health Tech Lab. This thesis
partly covers theory of the technologies used as well as thought and
development process of the application. The objective is to develop a prototype
version of the new MyEWay application, which then can be used to collect user
experience data from test users and allow the application to be further
developed into a release version.

Mobile applications have become almost a necessity for businesses and new or
updated mobile applications are released constantly. With two leading mobile
operating systems, Android and iOS, it is nearly always worth it to develop the
application for both instead of just one. Mobile applications, or apps in short,
can be developed either with Native or cross-platform technologies. This thesis
covers the cross-platform method using React Native as the development
framework, which has become one of the most popular technologies in mobile
application development.

Cross-platform frameworks have become extremely popular in app
development. Excellent technical documentations and a large user base’s of
these technologies make it easier for new developers to get into app
development. Many studies and articles have been written about the
advantages and disadvatages of these frameworks. In this thesis, some of both
are covered, but mainly the focus is on the technical execution of the
development process, since the development itself is the authors responsibility.

One aspect of this thesis is to demonstrate key consepts of mobile app
development using cross-platform framework and demonstrate basic features in
technical execution an app developer can benefit from. These features include
in example on-device data storage, modals, in-app navigation and basic data
visualization. Also some alternatives for used features are also glanced at but
not thoroughly examined.

Turku University of Applied Sciences Thesis | Juuso Torikka
7

2 Mobile applications and their development
  technologies

Mobile applications have come far since Nokia released the well known arcade
game “Snake” for their 6110 mobile phone in 1997. Now there is an app for
everything and if there isn’t, soon there will be. Mobile apps can be the main
product of the company, a mobile version of their website with same
functionalities or it can be something completely different. In all cases, the
application brings value for and from their customers by being accessible with
minimum effort and available for use almost anywhere. In this theoretical
section of the thesis, the focus lies in modern cross-platform mobile
development using React Native.

2.1   Different approaches to mobile application development

Google’s Android and Apple’s iOS are the two most popular operating systems
which hold more than 99% of the market share in mobile operating systems
worldwide (statcounter [2022]). While Android is still the forerunner in the
market share, iOS becomes more and more popular especially among youth
who tend to be more active users of different apps.

Mobile applications can either be developed natively for a single platform like
Android or iOS, or the app can be cross-platform, which means that the app is
developed once and it works on both operating systems. Even though cross-
platform applications can be used on other platforms and in web, only mobile
platforms are covered in this thesis.

2.1.1 Native applications

Native mobile application development is the best choice for complex and well
budgeted projects as well as for projects targeted for a specific platform. With
native code, the app will always be tailored for the operating system and the

Turku University of Applied Sciences Thesis | Juuso Torikka
8

performance can be excellent compared to cross-platform applications. Native
development’s best features include custom UI components, better API usability
and better access to device’s hardware. Drawbacks of native development
include the time it takes to develop separate apps for different operating
systems with different programming languages as well as the cost of it, since
more developers are likely to be needed to develop and maintain the
application’s code base.

When building an application for single-platform use, it is often better to choose
the Native approach. Native applications are made using platform specific
programming languages and tools. Applications for Apple devices are made
using Objective-C and Swift with Xcode, whereas Android applications are
created using Java and Kotlin with Android Studio (mDevelopers [2021]).

When developing natively using Xcode or Android Studio, they offer the user
pre-built layouts and directories to get started easily regardless of the target
operating system being a mobile phone, watch or even a smart television.

2.1.2 Cross-platform applications

The benefits of a cross-platform framework compared to native development,
are that only one codebase needs to be managed and the need for native code
is limited. Most disadvantages of cross-platform frameworks are limitations in
design and in ability to render 3D-effects.

Developers can choose to build modern mobile applications from vast amount
of different open source cross-platform frameworks. Most commonly used today
are Flutter and React Native. The latter was developed by Meta Platforms, Inc.,
formerly known as Facebook, to develop applications for different Android and
Apple’s operating systems. React Native is used for different worldwide apps
including Facebook and Instagram. With similar capabilities, Flutter was
developed by Google. These two were ranked the most used cross-platform
development frameworks in 2021 (Statista [2021]). While React Native is written

Turku University of Applied Sciences Thesis | Juuso Torikka
9

in JavaScript and JSX, a syntax extension to JavaScript, while Flutter uses Dart
as its programming language.

Cross-platform frameworks have become extremely popular with applications
that are developed by small teams or a single person. This is because one code
base handles both operating systems. Frameworks such as React Native are
called native cross-platform frameworks. This means that the same code for all
operating systems is translated into the device’s native code.

Other well-known cross-platform development type is hybrid development,
where the application’s code is rendered in a webview using the device’s
browser engine. Native cross-platform development is a good combination of
hybrid and native development, since it gives nearly all native development’s
advantages in user interface design and visual effects as well as similar user
experience on all platforms, and the advantage of sharing the code across
multiple platforms like with hybrid development (Patel [2021]).

2.2   Xamarin

Xamarin is Microsoft’s open source technology for creating native cross-
platform applications. Xamarin uses .NET developer platform and C# to create
these cross-platform applications with shared logic behind them. Xamarin
extends the .NET platform by enabling access to native features on mobile
devices. Because Xamarin can access all native APIs, regardless of the
platform, application development can be done also for other Android and Apple
devices, like Apple TV, Apple Watch and Android Wear. Xamarin applications
being fully native, they can benefit from hardware acceleration and access
device hardware capabilities including Bluetooth, NFC and fingerprint scanner
(Xamarin [2022]).

Turku University of Applied Sciences Thesis | Juuso Torikka
10

2.2.1 .NET

.NET is Microsoft’s open source developer platform for creating different types
of cross-platform applications. It can be used with multiple different
programming languages, which of the most common one is C#. Xamarin is a
mobile .NET platform, but .NET also has their own platforms for desktop and
websites called .NET Core and .NET Framework. They can be used to create
almost any kind of application from games to IoT applications (.NET [2022]).

2.2.2 Xamarin.Forms

Xamarin.Forms is a open source feature of Xamarin. It’s a cross-platform
framework for building mobile applications with .NET. Since Xamarin.Forms is a
full UI framework instead of a UI library, it includes everything needed for
building mobile apps from navigation to animation APIs. User interfaces can be
built with Xamarin.Forms by using either declarative XAML or imperatively with
C# (Xamarin.Forms [2022]).

2.3   Ionic

Ionic is a hybrid cross-platform UI toolkit for building mobile apps using different
web technologies like HTML, CSS and JavaScript with assistance from
frameworks like Angular, React and Vue (Ionic [2021]). Since Ionic is hybrid
framework, the performance of the application may be hindered if the app
becomes too heavy. Ionic’s benefits come from the technology stack available,
its fast development process and ability to create elegant user interfaces easily
(Shah [2021]).

2.4   Flutter

Developed and maintained by Google, Flutter is one of the most used cross-
platform development technologies in the world (Statista [2021]). Flutter uses an

Turku University of Applied Sciences Thesis | Juuso Torikka
11

object-oriented programming language Dart. Flutter is a native cross-platform
techonology and it uses its own rendering engine instead of browser
technology. Flutter offers variety of different widgets of Android and iOS styles
and an easy way of creating your own widgets (Flutter [2022]).

2.5   React

React is a JavaScript library made as well as maintained by Meta, and designed
for building user interfaces. React’s main principle is that complex UIs can be
built using smaller pieces called components. These components are updated
and rendered efficiently using React’s render() method, which takes the input
data and returns what needs to be displayed. React also follows the declarative
programming paradigm, a style that rather describes what has to be done
instead of how it is done, which makes the code more predictable and easier to
debug. (React [2022]).

2.5.1 Node.js

Node.js is a JavaScript runtime built on Google’s V8, an open source engine
designed to allow developers to create JavaScript applications that run outside
of a browser. Installation of Node.js also comes with a package manager npm.
Npm is allows downloading JavaScript libraries and other standalone tools used
in development. React needs Node.js to build the JavaScript code and npm to
handle all dependencies (Node.js [2021]).

2.5.2 State and props

State is used to make React Component Classes dynamic. This means that
when data is changed, the component keeps track of it. State holds information
that may change during component’s lifetime, which makes it observable. State
is similar to other React object called props, which are immutable, unlike state.
Props holds information to control object’s behaviour. Initial state has to be set

Turku University of Applied Sciences Thesis | Juuso Torikka
12

always since it needs to be excisting throughout the lifecycle. When
component’s state needs to be changed, setState() method is used, which
updateds the states and calls render() method to update the view (Robards
[2019]).

2.5.3 JSX

JavaScript XML, or JSX is a syntax extension for JavaScript and recommended
to be used to describe what the UI should look like. JSX is a way of writing
HTML code in React. Using React doesn’t require using JSX, but it can be
helpful when working on an UI with JavaScript code. JSX expressions become
standard JavaScript function calls after compiling. That way they can also be
used in if statements, for loops and as return values from functions among other
things (React [2022]).

2.5.4 React Native

React Native is a JavaScript framework based on React. While React is
targeted for web application development, React Native is for mobile
applications. React Native is one of the most used frameworks in mobile
development (Statista [2021]).

In this project React Native was chosen as the cross-platform framework.
Reasons for this are previous experience with JavaScript and its increasing
popularity amongst developers. Other things that affect the choice are its Hot
Reload, where developer can see changes on simulator or test device without
rebuilding the whole project, web implementation libraries if a web version of the
app is needed in the future, and of course the overall popularity of JavaScript.

The core of React Native’s architecture is the bridge which transforms the
JavaScript code into native components and back. Android and iOS devices
cannot understand JavaScript, so native components are rendered by invoking
the native rendering APIs in their native programming languages. This means

Turku University of Applied Sciences Thesis | Juuso Torikka
13

the UI components are real mobile components instead of webviews
(Tsurbeliov [2021]).

Figure 1. React Native architecture (Akveo [2021]).

Unlike many other development frameworks, React Native does not use HTML
components like  or  to create components, but has its own commands
to create them (Tsurbeliov [2021]).

Figure 2. Components comparison (Akveo [2021])

React Native project can be started either with React Native CLI, a built in
feature of React Native, or Expo CLI, a toolchain built around React Native
(React Native [2022]). Both of these allow developer to setup, manage and run

Turku University of Applied Sciences Thesis | Juuso Torikka
14

the project with few very important differences. React Native CLI’s perhaps the
strongest feature is the possibility of adding native modules written in Java
(Android) or Objective-C (iOS), therefore giving more space for imagination
when creating visuals or effects, or accessing device hardware. One of the
common benefit of using React Native CLI is the ability to integrate software
development kits using their native code. These benefits unfortunately come
with limitations, more conserning the Windows users. React Native CLI
generates separate projects for both Android and iOS and you need to have
access to Apple computer to develop for iOS. While Android development on
Windows is made all in all easy, iOS development and simulation need many
workarounds, which are either difficult or against Apple’s End-User Licence
Agreement (Apple [2021]). Expo in other hand creates only one build chain for
both operating systems and is an easy way to get started with cross-platform
development. The drawback with Expo is the inability to write native code,
although Expo applications can later be ejected into React Native with separate
projects for both Android and iOS. After ejecting the project, software
development kits can be integrated into the application and native code can be
used for both platforms.

When choosing tools for cross-platform application development, I highly
encourage using Apple’s ecosystem. This is simply because Apple has made it
quite difficult to develop iOS applications on platforms other than macOS.

React Native’s documentation recommends using Microsoft’s Visual Studio
Code as IDE when developing. VS Code’s React Native Tools -extension
creates a development environment for the project and allows debugging and
running relevant commands from the Command Palette. VS Code was also
used in this project as the IDE.

Common way to handle backend with React Native apps is to use Backend as a
Service, or BaaS in short. BaaS allows for easy cloud infrastructure and offers
many useful features like APIs, file storage and push notifications. Perhaps the
most well known BaaS is Google’s Firebase, which offers great scalability with
NoSQL storage options. BaaS is an easy way to handle backend when starting

Turku University of Applied Sciences Thesis | Juuso Torikka
15

a development, since most of the services are pay-as-you-go style, which
means that the more users you have, cost rises. With new applications with low
user bases the costs are usually from zero to minimal. In this project though,
BaaS is not an option.

Turku University of Applied Sciences Thesis | Juuso Torikka
16

3 Technical implementation

This chapter goes through the process and decisions made during the
development explaining why certain decisions were made.

3.1   Technical requiremets

The required objective for my thesis work is to build a mobile application’s
prototype version that can be used to gain user experience feedback from test
users to further develop the mobile application into release version. The
prototype version requires the possibility for the user to insert their personal
fatigue leves, both daily and after practice, data visualizations to examine past
inputs implemented in modern and easy-to-use user interface.

The application must be built in a way that it can be further developed without
too many difficulties or obstacles that could be prevented in prototype
development. These difficulties and obstacles include choosing an appropriate
development framework that has as few limitations, and as many benefits as
possible, self commenting as well as style guide appropriate code and
possibility to use the application on both iOS and Android platforms.

3.2   Analysis

To accomplish these objectives, first thing to decide is the approach that is
going to be used in the project. Modern mobile applications can be developed
with variety of different development frameworks and programming languages.
When choosing these, it is highly beneficial to consider if the application is a
single- or cross-platform project. Since one of the requirements in this project is
that the application can be used on both iOS and Android devices, cross-
platform framework becomes the most efficient choice when only one person is
executing the project.

Turku University of Applied Sciences Thesis | Juuso Torikka
17

Deciding the framework which is going to be used, it must be taken into account
how complex the logic of the application is and how visually impressive the
application needs to be. One key aspect of the prototype is that the user
interface needs to be simplistic with easy-to-use features. With these aspects in
mind, nearly any cross-platform technology could be chosen if developer would
not have a preference beforehand.

One key aspect of choosing the technology used, is its programming language.
The variety of those is immense among cross-platform frameworks. If the given
schedule for the development process is long enough, any framework could be
chosen. With my experience of different programming languages, I chose
JavaScript as the language for purely time related reasons and for it being the
most familiar. JavaScript leaves two frameworks to work with, React Native and
Ionic. Without knowing the direction where the development process is going
after prototype phase, it is more sensible to trust native cross-platform’s
efficiency and features instead of hybrid’s.

After choosing to go cross-platform with React Native, it must be decided if the
application is going to be built on top of Expo CLI or React Native CLI. This
decision must be made based on what tools the developer has available and
the complexity of the app.

Modern mobile applications need a way to store any user or app data. On
smaller projects without excess resources on hand, it is easier to use something
like Google’s Firebase as a backend, which makes everything easier, including
storing user and app data as well as allowing user to login securely, without
having to do everything from the start. In this projects prototype development, it
was discussed that the app will use own servers, so Firebase or any other
development platform would not be an option. In this case the possibilities are
either creating own database to store data, or to use devices own storage
possibilities. Because the first prototype is mainly needed for user feedback,
and to make development process faster, the choice lands on using device’s
own storage until further development.

Turku University of Applied Sciences Thesis | Juuso Torikka
18

3.3   Technical implementation

First thing to consider before starting to develop is the user interface. In this
project the UI is designed by others, so only the implementation in code is left to
be done. Development process itself begins with the decision about the
approach. The app is meant to be multi-platform and used on iOS and Android
devices, hence the best and easiest approach is the cross-platform approach.
The case would of course be different if the development team was bigger and
more experienced.

Since I have used JavaScript and done few small tasks with React Native
before, React Native is chosen as the cross-platform framework. Knowing
beforehand, that the application will only be in prototype version after my
release, it has to be taken into account who will continue the further
development and the tools they are using. Like previously mentioned, React
Native projects can be started by using either Expo, or React Native CLI. In the
long run, it is a lot less difficult to make sure from the start, that the app can be
developed on multiple operating systems than changing frameworks afterwards.

With these conditions Expo CLI is the fastest, easiest and most efficient way to
start development. Installing Expo CLI can be done by following the
documentation on their website (Expo, no date). CLI stands for Command Line
Interface, which means the installation and usage happens within devices
terminal. To install and run Expo CLI and to develop React Native projects, a
version of Node needs to be installed. After installing Node.js version 14 LTS or
later, can Expo be installed via terminal.

Developing mobile applications on Apple device allows developer to use Xcode
simulators. By installing Apple’s Xcode, different Apple device simulators
including nearly all iPhone, iPad and Watch models can be downloaded and
used in real time while developing. Android device simulators can be used with
Android Studio. With Expo CLI, simulators can be launched directly from
terminal after starting a development server. Expo CLI also provides a QR-

Turku University of Applied Sciences Thesis | Juuso Torikka
19

code, which can be scanned with physical mobile device with Expo Go-app
installed to view app directly on your own device.

Development process itself began by installing needed packages including
Node and Expo CLI. Creating a new project with Expo only takes a moment and
with simulator from Xcode, the application can be viewed within minutes. First
thing was to write the pre-designed UI into code. The application has three
different views with navigation bar at the bottom of the page where the desired
screen is selected. React Native has many components which can come very
useful when creating different visuals including navigation. React Native
components can be installed using npm, which was used when Expo was
installed, or with expo command in directory where project is located.

When a new React Native project is created, the only JavaScript file is the main
file called App.js. This file can be used to program the full application, but
dividing the code into multiple files helps a lot with debugging and general
reading. While the application can be programmed in a single main file, it is
often more sensible to combine multiple different files in the directory. By
consulting the pre-designed UI, it was clear that at least three different
JavaScript files were needed which contain all code used in each screen.
Screens, or views in other words are the home screen, statistics screen and
profile screen. Creating the navigation also needs quite a bit of code, which
means the navigation logic should also be in its own file. After researching the
ways of navigation, came react-navigation the top prospect. React Navigation
has many different ways of navigating in-app. The UI design of course needed
tab-based navigation and React Navigation provides that with bottom-tabs
library.

New JavaScript file for navigation logic is created and needed libraries are
imported. The three screens are also imported into the navigation file. The
screens are used as components when defining the navigation tab. The file only
contains a single function, which is exported and called in the App.js file. Now
the navigation bar is visible in all screens and the library enables the icons to be
in or out of focus when the corresponding screen is opened.

Turku University of Applied Sciences Thesis | Juuso Torikka
20

The user interface dimensions are not hard coded in the source code. This is to
make sure everything scales correctly in device of any size and resolution.
React Native contains a component dimensions that can be used to calculate
current device’s width and height. All parts besides small margins and font sizes
of the UI are defined using these calculations.

Figure 3. Device height definition.

Figure 4. Device width definition.

The color scheme .json file and base layout JavaScript file are also stored in
separate folder, which is imported as a component in all other files. This is done
to prevent re-coding the same thing multiple times in different locations. This
also makes it easier to make changes to the whole app if necessary.

Figure 5. Color scheme defined in separate file.

Home screen contains the main prototype functions. Inserting fatigue levels
after practice sessions and after waking up. Accessing these queries happen in
separate modal, which opens with a press of a button located inside home
screen. Modal is a component provided by React Native, which makes

Turku University of Applied Sciences Thesis | Juuso Torikka
21

displaying content on top of an enclosing view possible. Modals can be modified
with different opening and closing animations to make the app feel more fluid.

Figure 6. Defining the modal component.

Figure 7. Modal opening by setState.

Values are inserted with sliders and saved with press of a button that also
closes the modal and returns user back to home screen. With React Native
changing data must be stored in states. Every variable, whose value can be
changed by the user must be initialized in a state. After slider is set to any new
value, setState is called and the state is changed to current value of the slider.
State is a convenient way of temporarily storing changing data. If the data is
fixed, props will be used instead. State is also used to set the modal either
visible or invisible.

In this case saving data in a state isn’t quite enough, since the data needs to be
historically available as well as persistent and states reset to their initialized

Turku University of Applied Sciences Thesis | Juuso Torikka
22

value after the app is closed and re-opened. After the sliders are set to correct
values and the save button is pressed, the app inserts the data in on-device
SQLite database. If the database doesn’t exist already, the database is
initialized inside the home view and two tables are created. One for data
inserted after practice sessions and the other for daily fatigue data. Slider data
is inserted along with automatically incrementing identification value and current
date time, which comes from separate function that formats the date in correct
form.

Figure 8. Defining a new database.

Figure 9. SQLite table creation.

The data from both tables is queried inside the statistics screen and visualized
in many forms. To be able to use the data, it must be again stored in states
representing the correct fields. Required data and the amount of it is set into
multiple different states which are in this case either a single value as any data
type or many values as an array. States are always re-initialized before the
query to make sure they only contain required values.

Turku University of Applied Sciences Thesis | Juuso Torikka
23

Figure 10. Data query from the defined table.

Visualizing data with React Native is made possible by multiple different
community libraries. These libraries like svg-charts have the capability to
display basic statistics with simple graphs like bars and lines. This is quite
enough to efficiently make the data easily readable and available for the user.
Although these charts are relatively easy to produce and edit, it isn’t in my
experience that easy to make them aesthetically enjoyable like with Swift for
example. In this case, only bar and line charts are used, which are simplistic
and easily readable without too much effort. These charts display different
calculations from the data user has input during usage of the application. They
show for example historical sleep data and calculations from other user inputs.

Turku University of Applied Sciences Thesis | Juuso Torikka
24

4 Conclusion

The objective for this thesis was to create a protype version of a cross-platform
mobile application with TUAS Health Tech Lab, that is used to gather user
experience data from test users. The application was to be cross-platform,
simplistic and easy-to-use. To achieve thes objectives, I chose to use cross-
platform development framework called React Native. With React Native, all
these objectives are achievable and future features can be easily implemented
into the existing prototype version.

Prototype version was finished within the given timeframe while still applying all
required features. While the content on of the application changed slightly
during the development process, the finalized version included everything
necessary and the contractor was happy with the results.

More time could have been spent on the planning part of this project, but
despite the time restrictions the choices made during that period were good and
effective.

If the timeframe for this project would have been longer, I would have invested
more time in considering the frameworks. Since I had no previous experience
with C#, I ruled Xamarin out almost instantly, but in hindsight it would have been
extremely beneficial and interesting to try it out, or atleast compare the two
frameworks against each other.

The choice of using on-device storage in the prototype version was mandatory
to get the prototype finished in time, but I wouldn’t use that feature in new
projects for it not being very scalable option compared to cloud servers. In this
case though it was an excellent decision and sped up the process of
development massively.

The data visualizations were in my opinion sufficient but I think there is room for
improvement on the styling. React Native has vast amounts of community made
libraries for visualizations and one of these could be a better choice.

Turku University of Applied Sciences Thesis | Juuso Torikka
25

During the development process my skills imporved immensely over time.
Beginning of the process tutorials were a must and nearly everything had to be
checked before implementing into the application. Nearing the end it was clearly
noticeable, that these tutorials were not as much needed as they previously
were and the development itself went along quite a bit faster and more
efficiently.

With the prototype version everything is open with further development of the
application. Chosen technologies support mobile platforms as well as web
applications if one for it is needed at some point. If any feature in the future is
not available with React Native Expo app, it can be ejected into Native
application and these features become available.

With the time that was available, I think the results were good and up to
standards, but some features of the application could have been executed with
more finesse. All in all I am happy with the results I could manage in the given
time and believe the prototype version can be a valuable asset in further
development.

Turku University of Applied Sciences Thesis | Juuso Torikka
26

References

Akveo (2021) How does React Native Work? Available at:

             https://www.akveo.com/blog/how-does-react-native-work

             (Accesed: 23 April 2022)

Apple (2021) Software Licence Agreement For macOS Monterey Available at:

             https://www.apple.com/legal/sla/docs/macOSMonterey.pdf

             Under J. Other Use Restrictions

             (Accessed: 14 April 2022)

Expo (no date) Expo CLI Available at:

             https://docs.expo.dev/workflow/expo-cli/

             (Accessed: 19 April 2022)

Flutter Documentation (2022) Available at:

             https://flutter.dev/

             (Accessed: 14 April 2022)

Ionic Documentation (2021) Available at:

             https://ionicframework.com/docs

             (Accessed: 30 April 2022)

mDevelopers (2021) What is Native Mobile App Development? Available at:

             https://mdevelopers.com/blog/what-is-a-native-mobile-app-
             development-

             (Accessed: 20 April 2022)

Turku University of Applied Sciences Thesis | Juuso Torikka
27

Node.js Documentation (2021) Available at:

             https://nodejs.org/en/

             (Accessed: 14 April 2022)

Patel, R (2021) Native Vs Hybrid Vs Cross-Platform App Development

             Available at: https://aglowiditsolutions.com/blog/native-vs-hybrid-vs-
             cross-platform/

             (Accessed: 20 April 2022)

React Documentation (2022) Available at:

             https://reactjs.org/

             (Accessed: 14 April 2022)

React Native Documentation (2022) Available at:

             https://reactnative.dev/

             (Accessed: 14 April 2022)

Robards, T (2019) React: Understanding State & Lifecycle Available at:

             https://itnext.io/react-understanding-state-lifecycle-d45df5d2cf3f

             (Accessed: 28 April 2022)

Shah, K (2021) React Native vs Ionic: The Battle of Two Cross-Platform App
Development

             Available at:

             https://www.thirdrocktechkno.com/blog/react-native-vs-ionic-the-
             battle-of-two-cross-platform-app-development/

             (Accessed: 30 April 2022)

Statcounter (2022) Mobile Operating System Market Share Worldwide

Turku University of Applied Sciences Thesis | Juuso Torikka
28

             Available at: https://gs.statcounter.com/os-market-
             share/mobile/worldwide

             (Accessed: 14 April 2022)

Statista (2021) Cross-platform mobile frameworks used by software developers
worldwide from 2019 to 2021

             Available at: statista.com/statistics/869224/worldwide-software-
             developer-working-hours/

             (Accessed: 23 April 2022)

Tsurbeliov, M (2021) How does React Native work? Available at:

             https://www.akveo.com/blog/how-does-react-native-work

             (Accessed: 23 April 2022)

Xamarin Documentation (2022) Available at:

             https://docs.microsoft.com/fi-fi/xamarin/get-started/what-is-xamarin

             (Accessed: 30 April 2022)

Xamarin.Forms (2022) Available At:

             https://dotnet.microsoft.com/en-us/apps/xamarin/xamarin-forms

             (Accessed: 30 April 2022)

.NET Documentation (2022) Available at:

             https://docs.microsoft.com/fi-fi/dotnet/?WT.mc_id=dotnet-35129-
             website

             (Accessed: 30 April 2022)

Turku University of Applied Sciences Thesis | Juuso Torikka
You can also read