ASPECTS OF CREATING INPOST MOBILE APP · libraries like Dagger (dependency injection) RxJava...
Transcript of ASPECTS OF CREATING INPOST MOBILE APP · libraries like Dagger (dependency injection) RxJava...
Business and technical
ASPECTS OF CREATING INPOST MOBILE APP
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
100%9:41 AM 100%9:41 AM
Śledzenie przesyłek
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
TABLE OF CONTENTS
Intro
Design
Business needs and goals
Tests
Timeline
Current version
Team
Ratings
Technologies
Model of collaboration
Testimonials
Innovations
Customer’s reviews
Challenges and solutions
INTRO
InPost is one of the biggest, most appreciated and acknowledged courier companies in Poland.
InPost offers innovative services, including Parcel Lockers. They are parcel
collecting spots available 24/7 that don’t require employees to operate them.
The goal of collaboration between iteo and InPost was to develop a mobile
application that will allow the users to handle their parcels. In the future, the
project is intended to grow by adding new functionalities and constant updates.
One of the main business goals was to accelerate the process of package
pickup, especially during holiday seasons, when the number of orders and the
demand for lockers is much higher.
This way, InPost would not only make their clients’ lives easier, but they would
also increase the number of deliveries. Remote locker opening can reduce the
lines in front of Parcel Lockers and also it leaves out the verification process
(from the perspective of the user, of course) which requires entering or scanning
a barcode.
BUSINESS NEEDS AND GOALS
Another important goal was to completely give up text messages with parcel
pickup codes. This solution was highly ineffective cost-wise (InPost was sending
tens of millions text messages monthly!) and also was risky in terms of potential
frauds.
There was also a high demand from Inpost’s clients for a solution easing the
process of collecting multiple parcels. For them, InPost and iteo prepared a
completely new feature - MultiLocker.
Good preparation before the beginning of the project was particularly crucial,
because the iteo team knew exactly what they needed to do. They also
suggested specific ways to develop certain functionalities but at the same time,
they were open for counseling from iteo regarding changes and updates.
The Client came to iteo with a clear plan -
they wanted a flawless mobile app for their services.
The brief included many functions:
Remote Parcel Locker opening
Parcel tracking
Order history
InPost spots map
News display
Multilocker
Thanks to the efficient cooperation between iteo developers, designers and
InPost team, the application for both Android and iOS gave InPost Clients a way
to significantly speed up the process of parcel pickup. This way they made their
service even more convenient to use.
The beginning of
collaboration and work
on version 1Version 1 release Version 2.6
Multilocker
Version 2.0
Remote opening
The beginning
of work on version 2
Version 2.3
Collect another parcel
JUNE
2018
APRIL
2019
JULY
2019
NOVEMBER
2019
FEBRUARY
2020
MAY
2020
TIMELINE
TEAMThe teams cooperated from the beginning towards the common
goal of development and growth of the app.
2 testers
5 developers - 3 for Android and 2 for iOS
1 UX designer
1 product designer - depending on the actual
project requirements
Mobile team leader- supporting Product owner and Project manager
2 developers - 1 for Android and one for iOS
1 Tester
Product owner - introducing this role to
the project (from version 2.0) helped immensely
with work systematization and structurization
Project manager / SCRUM master
Backend developer i backend architect - supporting our development team
TECHNOLOGIES
The project included the development of two native mobile applications for Android and iOS devices. The backend part was coded in Java.
For Android, the app was written using Kotlin Framework. It included
libraries like Dagger (dependency injection)
RxJava (creating asynchronous apps), Retrofit (for easier
communication with !PI), Firebase (receiving push notifications and
collecting analytical data) and many more.
For iOS, the app was written with Swi# Framework. The most
important libraries were, for example, Swi"Lint (partial
automatization of code review), Realm (easy to use databases),
Firebase, Lottie (graphic animations), Hero (animations between
views) and many more.
Collaboration with the client was led according to Agile and SCRUM methodology.
We began with our original work tool which is Product Workshops. Also, we o!en
met up with the Client to create and clarify the concept of the product and its
functionalities. During the project, sprints are held every 2 weeks.
MODEL OF COLLABORATION
Every other week we organize meetings - once remotely, other times at the
Client’s headquarters. During these meetings, iteo and InPost teams plan next
steps, discuss the demo and perform retrospection.
9:41 AM9:41 AM
Otwórz skrytk
Kończymy na dzi
W związku z Twoją reklamacj
skrzynkę została wysłana wiadomo
Postępuj proszę, zgodnie z instrukcjami
w niej zawartymi.
Gotowe!
Otwórz ponownie
100%9:41 AM 100%9:41 AM
Otwórz skrytkę
Twoja przesyłka czeka na
Ciebie tuż obok!
Gotowy?
Remote Parcel Locker opening
This functionality is definitely something innovative when it comes to the
logistics industry. Implementation was anticipated from the beginning of our
collaboration, and it was shared with the users with the app’s version 2 release.
Remote locker opening fulfills the business goal directly because it allows the
users to quickly collect their packages which means that InPost can deliver even
more of them.
The Client wished that the process of parcel collecting was as similar as possible
in the mobile application and on the Parcel Locker. The goal was to simplify the
process for people who already knew it from Parcel Lockers. For this exact
reason, the arrangement of buttons is quite similar but some elements had to
be cut off due to smartphone screens being much smaller than computer
screens in Parcel Lockers.
The process of remote parcel collecting is strictly designed to not interrupt the
Client’s system. That’s very important because some of the solutions we
considered could overload the InPost system with too many requests per
second.
Remote Parcel Locker's opening functionality was highly praised by InPost
clients. They are the leader of logistic services in Poland and their engagement
in introducing better and more innovative solutions is appreciated by the users.
Also, their attentiveness to client satisfaction is undeniable.
INNOVATIONS
The main goal of developing MultiLocker functionality was to optimize the
process of picking up the parcels from lockers. This way, the provider would gain
more free lockers for other clients that ordered something using InPost services.
Usually, when the lockers were overstuffed with packages, the courier would
have to park in front of the Parcel Locker for a couple of hours and hand them
over to the customers. With MultiLocker, the effectiveness of the whole system
grows, as the delivery person can put a couple of packages ordered by one
person in a single locker.
The main outcome was optimizing the process of receiving packages without a
need to expand current machines or build new ones. Parcel size is the main
factor when it comes to deciding whether multiple packages can be put in one
locker or not.
At the end of April 2020, InPost was testing the MultiLocker functionality in
several hundreds of their Parcel Lockers. In the second half of May, all lockers
gained access to this option.
Project assumptions were as follows:
Putting one receiver’s parcels in one locker
Helping the courier to place packages in the locker in the most optimal way,
considering their shapes and sizes
Adjusting the notification center to support new feature - for multiple parcels,
the app would display the number instead of the sender name
Showing single notifications in the app
Multilocker
CHALLENGES AND SOLUTIONS
TIME FOR EACH STEP DURING SESSION
Challenges and solutions
When the Client wants to collect the package remotely and picks the right
option on their phone, the app sends a request with the parcel number, pickup
code and device location to the system. If the verification is successful, the
session opens up, and if not - the session is rejected.
It is worth mentioning that user verification also includes checking the current
device location to be sure that there was no use of a tool to impose false
localization.
Opening the session allows us to take the next steps. For the user, the session
opens when they click the button for a remote locker opening. Thanks to this
precaution we can be sure that no one will open the locker by accident.
At this stage of development, the biggest challenge was to decide
how long each step of the locker opening process will be valid for.
That means the time for session opening and each step separately.
The client wanted to use the solution described below which was
pretty tough to code but the requirement was understandable
because of the complexity of the process.
Challenge Solution
In this case, the universal fix was to calculate the time for each step
in milliseconds instead of using time frames (for example - until
full hour). This way the app receives times and verifies them, then it
converts them to the local time and can pass them between classes
that are responsible for locker opening. If we used a solution that
would pass the amount of time spent between classes, we would
have to check how much time we were on one screen, subtract it
and then pass the actual time.
So for example, if the time is 1:30:00 and we will add 30 seconds - we
pass 1:30:30, the system checks the current time and verifies if this
concrete step didn’t exceed the time we provided.
What’s interesting is that if the locker opening request is confirmed
by the app, the next actions are taken by the Parcel Locker. Each
machine has its own computer that is connected to the InPost
system. At this moment, the Parcel Locker takes care of each step
and sends data to the system.
Now the solution looks this way: the time spent on the screen is added to the current hour.
AVOIDING CLIENT’S SYSTEM OVERLOAD
Challenges and solutions
In the beginning, remote Parcel Locker opening was based on
sending requests to ask the !PI about the status of the locker. That
would happen every second so the system would make sure that
the locker door is open. But this solution was highly problematic,
especially during so-called “peak” moments, for example during
holidays, when the demand for package delivery grows rapidly.
This could cause an overload of InPost systems. Too many requests
per second could cause errors or even stop the service completely.
For example, if there are 1000 Parcel Lockers and each of them has
a line of 10 people, the server would receive 10 000 requests per
second.
The next suggestion from the iteo developers' team was to base
this process on push notification. A#er sending the request by the
client, they would have to wait for push notification. This solution
wouldn’t be viable because it would require a lot of development.
Possible statues are open, fail or timeout. The whole process is very quick but it
required to extend HTTP timeouts. For the whole application, the default time is
10 seconds. In this case, there is a separate !PI configuration so the timeout for
one request can take 30 seconds. This solution was the easiest to implement so
the system overload can be avoided.
Finally, we decided to use a solution, where the request would be blocked by InPost until the locker’s status changes.
Spróbuj ponownie
100%9:41 AM 100%9:41 AM
Otwórz skrytkę
Przykro mi, ale musisz zacząć od nowa!
Upsss...
Przesyłka wyjęta
100%9:41 AM 100%9:41 AM
Otwórz skrytkę
Twoja przesyłka czeka na Ciebie.
Skrytka otwarta!
3 kolumna, 4 rząd
Kieruj się w prawą stronę od ekranu.
CLOSING THE LOCKER DOORChallenges and solutions
A!er opening the locker, the user gets a push notification that tells
them about the open door. The same screen has the button that
says “Parcel taken out” so we can inform the system about finished
action (packages were taken out from the locker and the doors are
locked). If the user clicks this button, the app sends a request to
InPost’s #PI with a message that the doors are locked. But what if
the door won’t be locked? Or, what’s worse, the Client can’t close
them because they are damaged?
The fix is quite simple. A!er clicking the “Parcel taken out” button, it
shows the screen with the “Doors closed” announcement. It doesn’t
send an #PI request and the app goes straight to the summary.
Thanks to that, the user won’t be blocked on one screen, which can
be useful when the door is damaged and they can’t close it. Also, it
matters when it comes to complaints - the app summarizes the
process and gives the user to send a complaint, for example when
the package has defects. Then, the Parcel Locker system draws a
random locker for putting the package inside - and it’s not the
same one that it was delivered to.
Challenges Solutions
LOCALIZATION
Challenges and solutions
It might seem that remote Parcel Locker opening works from any
place in the world, but it’s not true. This functionality was supposed
to simplify and fasten the process of package pickup by reducing
the lines in front of the lockers, especially during peak demand for
InPost services. This solution won’t allow the user to open the locker
from their home when their significant other is passing by the Parcel
Locker and wants to pick up their package.
That’s why the user’s devices need to be at the right distance from
the Parcel Locker. There are a couple of possibilities to localize the
phone but not all of them are so effective to be used with this
functionality. We wanted to avoid the situation where the app says
that the client is not actually near the locker.
The first tested solution was to drag the last known phone location.
This method wasn’t efficient though. A$er checking the logs it
appeared that the localization could be determined using data
from a couple of minutes earlier which was interpreted by the
system as being too far from the Parcel Locker. The app wouldn’t
agree to open the locker remotely.
The request for the current device location was turned on in the app. There are
3 modes of localization in Android:
First trials were using the second mode because that is the usual
implementation for this type of apps - that doesn’t have navigation
requirements and doesn’t need very detailed data. Unfortunately, tests done by
InPost showed that this mode is not enough because it localizes the device
within 100 meters or more. In this case, it is required to be closer than 100 meters
so we decided to use the third mode.
Low accuracy - saves the battery life but it is accurate within 10 kilometers
which is definitely not enough.
The balanced mode that optimizes the battery life and is accurate within
100 meters.
High accuracy that requires special settings
Spróbuj ponownie
Przykro mi, ale musisz zacząć od nowa!
Upsss...
Przesyłka wyjęta
100%9:41 AM 100%9:41 AM
Otwórz skrytkę
Twoja przesyłka czeka na Ciebie.
Skrytka otwarta!
3 kolumna, 4 rząd
Kieruj się w prawą stronę od ekranu.
This mode might require special settings in the device system if the
localization accuracy is changed. In this case, the system will send
information (Exception) to the app which will fix the issue (Intent).
Using this information (technical launch of Intent) will open system
dialogue which will allow it to automatically change the localization
accuracy.
It is worth remembering that the highest accuracy depends on GPS
signals which mean it doesn’t work inside buildings. Close to them,
the localization process can take a lot of time. So this solution
doesn’t work 100% of the time but it definitely helps to minimize
most of the problems with the device location. The next updates
are planned to optimize this function.
DESIGNDesigning application began with Product Workshops. The assumption was that
they would last one day, but the client asked to extend them for another day in
order to refine the functionality. The application prototype was prepared on the
basis of the scope determined during the workshop. It was assessed internally
by the InPost team. The result of these activities was the creation of MVP
(Minimum Viable Product) that included basic and most important
functionalities.
A"er creating a second prototype (based on MVP), iteo team designed UX to
track shipments and other side components of the application - only those that
represented business value for InPost were implemented. In the second version,
the structure of the application remained unchanged, but it was redesigned
according to the company's brand book, including color consistency and the
use of new fonts.
A brand hero called Mat was also designed. It is a character that looks like a
parcel, but its main purpose is to communicate with the user.
Currently, cooperation in this area consists of ad hoc consultations and
engaging UX or product designers only when necessary.
TESTSThe whole quality assurance process includes both, manual and automated
testing.
The manual testing procedure was based on testing scenarios and test cases
that were performed continuously during the so!ware development process.
Only for MultiLocker there were 7 test plans with 129 scenarios and 1254 created.
They are based on user stories delivered by the Product Owner and team
interviews.
For remote operening functions there were manual field tests at the Parcel
Lockers performed onsite.
Manual tests are done by the iteo Q# team on multiple, most common Android
and iOS devices. We verify the product on physical smartphones and on
emulators, taking various operating system versions and brandings into
consideration. We regularly test new features and perform regression tests
each time an updated version is released.
Adding new solutions e.g. MultiLocker has a direct influence on all other
functions, so a!er any significant change there's a need to run thorough tests
throughout the whole application. Our main focus was put on tracking lists
verification, archives, parcel details, notification center, push notifications and
remote locker opening.
InPost was responsible for %PI testing, performance and stress testing and
acceptance testing.
CURRENT VERSION
The result is a simple, intuitive and modern mobile application for
Android and iOS. It allows customers to track shipments, open
Parcel Lockers remotely without queuing and entering verification
codes, as well as to keep up to date with the latest news or
technical breaks.
The first version of the application was created from the very
beginning - both on the development and design side. The second
version received additional functionalities and redesign.
The currently available version of the application is numbered 2.6.0
The application is constantly improved and developed for new
features.
At the moment, the application is directed only to the Polish market,
however, the Client does not exclude expansion to foreign markets
and adapting the application for its services in other countries.
InPost mobile app perfectly fits the need for contactless device
operation and limiting people-to-people contacts, which are
dictated by the difficult global situation caused by the coronavirus
pandemic.
No 1 Best Appsin Google Play
2+ mln app downloads
No 1 Shoppingcategory in AppStore
1+ mln app downloads
InPost application won main prize at Mobile Trends Awards (called
mobile Oscars) and became app of the year 2019. It was also
recognized in the ‘Service’ category, also as no 1.
Application has now over 3mln downloads with daily dynamic
increase due to huge demand for indirect goods delivery and
collection.
Both versions of the application for a long time remained first
places in polish Google and Apple stores.
With over 100,000 users using the application every day, almost
100% encounter no problems at all. App Store and Google Play
ratings are around 4.5 stars, which is a great result considering the
number of people using it every day.
RATINGS
MOBILE APPOF THE YEAR*
*Main award of Mobile Trends Awards
4 mlnDownloads from App Store
and Google Play
Izabela Karolczyk-Szafrańska,
Marketing Director of InPost
TESTIMONIALS
"Iteo has created with us the application to collect and
track InPost parcels deliveries. One of the main tasks of
iteo during our cooperation was to create the UX and UI
design of the application. Iteo has demonstrated the
User's understanding and is familiar with industry
standards, which has allowed to create transparent and
intuitive User paths. The provided design makes the
application memorable, while maintaining the simplicity
of solutions.
During the entire development process, we could count
on the full commitment and professionalism of all team
members, and their proactive attitude has allowed us to
implement many interesting solutions. We recommend
iteo as a competent partner who met our expectations
and conducted the project within the scope."
“Very cool. Notifications, shipment status, easy and intuitive operation. New useful features are added with every recent update. Very helpful application and so far in my opinion bugs-free. Indispensable for me as a person using InPost services. I would recommend it."
"An example of a perfect Android app. Everything works as it should, and the design of the application is stunning."
"Such apps should be the standard at courier companies."
CUSTOMER’S REVIEWS
"Simple interface, intuitive control, no problems, and above all with jamming touch panels on some" cabinets ", displaying a QR code, it is saviour. It's worth downloading because it's a good application."
"Application is the luxury we deserve! 4 packages collected in just over a minute!"
“Application - a revelation;) constantly updated shipment status, push up notifications when the package is already in the parcel locker. The shipment is much better tracked than the number received by e-mail. Great, keep it up! Have a nice day at InPost and everyone working there!!!”
DOWNLOADAND CHECK!
InPost App is available in
Google Play and App Store
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
100%9:41 AM 100%9:41 AM
Śledzenie przesyłek
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
235678654323567889762231NR PRZESYŁKI
W drodzeSTATUS
NADAWCA
pn. | 14.06.18 | 11:30CZEKA NA ODBIÓR DO
KOD ODBIORU
102957
Udostępnij kod odbioru przesyłki
by go powiększyćkliknij w kod QR
691 837 009NR TELEFONU
Nazwa kroku dłuższa14.06.18 | 11:30
Nazwa kroku najdłuższa14.06.18 | 11:30
Śledzenie przesyłki
Nazwa kroku dłuższa14.06.18 | 11:30
Paczka została umieszczona w POP
14.05.2019 12:00 więcej
KAT08AMIEJSCE ODBIORU
Pn-Pt | 7:00-15:30Sb-Nd | 8:00-22:00
OTWARTE
Nawiguj
Przy budynku PKP
Plac OMP50-061 Katowice
Wróć
Czy chcesz się wylogować?
Wylogowując się z aplikacji bezpowrotnie
utracisz swoje dane.
Czy jesteś pewien?
Tak
MOBILNA
APLIKACJA ROKU