The application is able to identify when the smartphone is directed upward. To find success in understanding where the sky is, we have studied several ideas and got on with the simplest and the most elegant one: we detect the angle of slope with the horizontal plane and place the tag in a fixed distance away from the screen. If the angle indicates that the smartphone is facing the ground, we kindly ask users to look at the sky through the camera.
At the start we had an issue with ARCore: it was limited to render only the surrounding objects—not the distant ones. We had to use mathematics to get around the problem, and we were handsomely rewarded: the computed solution was good enough even to improve the quality and the fixity of the tags in the sky.

Olga Konoreva
Android Developer

Finding a self-explanatory way of placing tags was another challenge of this project. We have created a preview mode: one can take a device, turn the focus on the desirable part of the sky and walk back and forth observing the position of the tag in real time. Once it looks fine, just tap a screen to anchor the object!Before placing a tag, users can rotate and scale it right in the augmented reality. In addition, the device angle of slope affects the distance of tag placing. All of these things give a free hand to shape and anchor the tag reasonably close to the real landmarks.

Users can select a sticker, a GIF, or a text—tag of any type will look great in the sky. The application is connected with Giphy search engine that offers tons of animated files. If one needs only a text message, it can be created right in the application.Special 3D tags used by Yota and Yota partners can be observed via the application in different cities of Russia. Commonly these tags gently indicate the office locations to encourage people visiting shops and customer support centers.
We have also created a small Admin Panel to manage tags. As far as tags are stored independently (we use Firebase Firestore/Storage), Yota can add and remove special 3D tags easily without renewing the application.

Serik Beysenov
Solution Architect, Android Developer

Registered users can also observe the location of tags on the map: being clicked, pins provide detailed tag content. Using a map is handy to find a tag without travelling anywhere. Of course it is less fun, but it helps deliver tag messages.
In order to do this, we needed to solve another engineering problem: a problem of converting the augmented reality coordinates into geographical values. Average built-in device compass turned out to be something unstable, and we decided to add a calibration task for users! Moving the smartphone in a figure-eight pattern makes all sensors stable, and all the further conversions go fine.

Very often vivid tags and best wishes against the sky are worth sharing! Users can take screenshots and share them on any social media platform—even with friends who don't have Yota Sky application installed.
At the same time we understand that some user content can be offensive, and we allow reporting such tags. The user sending a report will never see the doubtful tag again; later this tag can be even hard deleted.

Yota Sky provides an opportunity to register via email, Google, Facebook, or VK. Firebase Auth that we used doesn't support the last method of authentication, and we had to create a separate server layer to let VK users log in easily. For Yota it was a very important project task due to the continuing popularity of VK in Russia.
We have also added the trial mode for not logged in users who are allowed to place tags invisible for the audience. However, all tags created in trial mode become visible once users become registered.
We have used Firebase as a backend because in the beginning the whole project was more like MVP than a fully-featured application. However, we have split both iOS and Android application versions into layers, and this approach will enable us to start using a custom backend server in no time at all in the nearest future.