-
Notifications
You must be signed in to change notification settings - Fork 0
/
assignment-4-report.tex
151 lines (97 loc) · 7.2 KB
/
assignment-4-report.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
\documentclass[11pt,twoside,a4paper]{report}
\usepackage{appendix}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{pdfpages}
% set the default, standard, geometry
\geometry{left=25mm, right=25mm, top=25mm, bottom=25mm}
\setlength{\parskip}{\baselineskip}
\clubpenalty10000
\hyphenpenalty10000
\widowpenalty10000
\begin{document}
\title{ID2216 Developing Mobile Applications\\Assignment 4 Report}
\author{Rafael Aldana ([email protected])\\Vincent Delitz ([email protected])\\Ruth Eriksson ([email protected])}
\date{\today}
\maketitle
\tableofcontents
\thispagestyle{empty}
%\listoffigures
%\listoftables
\renewcommand{\chaptername}{Assignment}
\setcounter{chapter}{3}
\chapter{App web service}
\label{assignment:app-web-service}
\section{Overview}
After we received first feedback from testers for our initial draft of the Android app, we aimed to make it more useful and handy by integrating some web services. We decided to use therefore the Google Maps API, Facebook API, and SQLite relational database management system.
\begin{itemize}
\item The Facebook API was used in order to let users register with their Facebook account in our app, so that they do not need an extra account for our app. Furthermore, the Facebook API enables us to integrate in the future more and better customized services for the user.
\item In order to display the location of the pick-up place in a more convenient way, we made use of Google Maps API, so that the user can see where on the map the pick-up place is located.
\item To store our data in a manageable and clear manner, we aimed to use SQLite which is a database API optimized for Android applications.
\end{itemize}
\section{Development}
The great benefit from the Facebook API login functionality is that users are generally already logged into their Facebook account on their smartphones. Thus, a single button click in our application is sufficient to authenticate the user and give him access to the new offer screen. This reduces the effort for the user significantly and furthermore, he will stay logged in for the future, unless he does not explicitly log out.
To develop this feature, we had to register ourselves at the Facebook developer page first and our app then. Therefore, we needed to create a dedicated app hash key that is used by Facebook to identify our application. Then, if the user logs himself in to the app, we will receive an access token with which we can retrieve information from the user's profile, such as the name, email address, or profile picture in a JSON object. We made use of this information and displayed it in the navigation drawer menu in our MainActivity.
For the display of the pick-up place of SL cards, we made use of the Google Maps API. Luckily, Android Studio offers the possibility to create a Google Maps activity right away by default. That is why we only needed to adapt this activity according to our needs and moreover, register our application at the Google developers web page.
For both Facebook and Google APIs, there is a web dashboard that gives you the possibility to track the usage of the application (see the appendices for screenshots of the websites).
Since the users usually only gives us the alphabetical name of a location and not the exact coordinates, we had to use the class Geocoder which computes you the coordinates for a location. This data is then sent to the Google Maps API in order to display the location correctly on the map.
Regarding the database management system, we aimed to implement SQLite. We started implementing the creation of tables and insertion of new rows after the input data from the NewOfferActivity. Although the implementation was not fully tested, the written code was compiled and built without errors, so we assume that the input data from the NewOfferActivity was correctly saved at a local level on the phone.
\section{Feedback}
After integrating our Android application with the described APIs, we asked again some users for their opinion about the improved functionality. All in all, they really liked the improvements and found it quite handy. Nevertheless, they still gave us some valuable points to implement in the future, such as:
\begin{itemize}
\item Maybe you could use as the main activity the overview screen, so that I can start scrolling and searching for SL cards from the very beginning.
\item It is definetely useful to see if a SL card is already sold, or if you can still buy it.
\item Besides the Facebook login option, you could implement a Google login option as well.
\item Implement country/region setting instead of date format. Then, date format and currency are bound to each other by such setting.
\item Maybe the app should stay out from economic transactions at all, even from the publication or suggestion of the price for the SL card.
\item To secure the purchase, the app could deliver some kind of digital certified receipt so that in the unlikely event that the seller reports the card from being stolen or lost, the buyer can claim that action.
\end{itemize}
\section{Outlook}
Through using the various APIs we highly increased the usability of our application for the end user. Nevertheless, there are still some open points to tackle, such as the feedback and improvements in the GUI to make our application even more convenient to use.
\section{Further development}
With regard to the database management system, we started researching alternatives for SQLite. For further development, we would definitely go for Firebase instead.
Firebase is a mobile and web application platform with tools and infrastructure made up of complementary features that can be mixed and matched to fit different needs, for instance, realtime database.
This platform provides a realtime database and backend as a service. The service provides an API that allows application data to be synchronized across clients and stored on Firebase's cloud. Client libraries that enable integration with Android, among other operating systems and programming languages, are provided.
\begin{appendices}
\chapter{Figures}
\label{appendix}
\thispagestyle{empty}
\newpage
\begin{figure}
\centering
\includegraphics[width=1\textwidth]{jpg/facebook-developers.jpg}
\caption{Facebook developers dashboard website}
\label{figure:start-view}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=1\textwidth]{jpg/google-developers.jpg}
\caption{Google developers dashboard website}
\label{figure:navigation-drawer-in-start-view}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{jpg/facebook1.jpg}
\caption{Login view with Facebook login button}
\label{figure:navigation-drawer-in-start-view}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{jpg/facebook2.jpg}
\caption{Integrated facebook login view}
\label{figure:search-view}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{jpg/facebook3.jpg}
\caption{Pulled Facebook data and profile picture in the navigation drawer}
\label{figure:specify-search-view}
\end{figure}
\begin{figure}
\centering
\fcolorbox{black}{black}{\includegraphics[width=0.4\textwidth]{jpg/google.jpg}}
\caption{Integrated Google Maps for the pick-up place}
\label{figure:overview}
\end{figure}
\end{appendices}
\end{document}