📜 ⬆️ ⬇️

Creating an iOS application. Avoid dancing on the rake

I want to not only tell the story of how we created the mobile application, but also share the experience so that you do not repeat our mistakes, give recommendations to startups, developers and all those interested in developing iOS applications.



Idea


Inspired by the success of the simple Yo application and the family of its followers, we, with the advice of enterprising colleagues, thought about what can be done just as simple and interesting. Taking into account the fact that the fashion for politeness and attention to loved ones has not passed, and we continue to write “Good Morning” in letters, to display statuses in social. network, write sms with wishes, the idea of ​​our mobile application originated.

How does the morning begin? With people. This is how I start any day.

Functionality


Sketching a list of what the application should be able to do, making the first sketch of the screens, we agreed that this would be enough for a start, but everything changes when they come ... a detailed study of the concept and product development. The original design looked like this:
')


1) Authorization through social networks: Facebook, Twitter, Vk, OK and others;
2) Sending a notification by clicking on the name of a friend or group, the result - a user or a group member will immediately receive a “good morning” push notification;
3) Black list of users;
4) Sharing through social. network.

Design


When creating the interface, we tried to follow the recommendations of the iOS Human Interface Guidelines. The task was to make the interface as friendly and understandable as possible for users, so they went over a lot of color schemes, fonts and icons. Since, in our practice, we have repeatedly encountered the fact that, when interacting with the user, areas for tapas have not been worked out in interfaces, we decided to pay special attention to this issue.

To make the product better, and the work of the user with it is simple and understandable, we collected focus groups several times. The feedback received helped to understand what else should be improved, and what should be altered or removed altogether. Recommendation - do not neglect the involvement of focus groups.

The color scheme of the entire application was selected many times, and when the opinions of the team and focus groups on the coffee version and the juicy orange version were divided, they decided to give the user the choice themselves and implemented the theme settings.



We chose between 40 variants of icons, the final version was chosen by the marketing department according to the following parameters: simplicity, clarity, brightness, contrast.

Development


Due to the fact that resources that were free from commercial projects were used, and one of the developers went into the army, the code was rewritten and processed several times. Immediately I say - this is not convenient. The developer should be permanent and one is enough for such a simple application.

General

As a language for development, it was decided to use Objective-C. To manage plugin library dependencies, we used CocoaPods. Core Data - was used for local data storage, it allowed to view already received records and reduce the amount of consumed traffic. To implement the side menu, the MMDrawerController framework was used. It seemed to us quite comfortable and there were no problems with it in the development process.

To be able to analyze user actions in the application, we used Google Analytics. To simplify the process of testing and debugging, we recommend Jenkins CI (to ensure continuous integration) and Crashlytics (for collecting crash logs); it’s not difficult to deal with the work of services.

Choosing a solution for the server part

Parse was selected as the backend for the application. It allows you to use a database of 20Gb and 30 requests per second, as well as 1 million unique recipients for free, this solution is ideal for us to release MVP. When working with push-notifications, you need to understand that, unfortunately, there is not any guarantee of delivery of such a notification to the user. Also, before pouring into the market, you need to remember to add a release certificate to parse (of course, if you have not done it before).

Search solutions to authorize users

When choosing the authorization method, we had to consider the possibility of simply obtaining the user's phone number. Therefore, the proposed authorization at the beginning through social networks or login / password did not suit us. It was decided to make authorization using sms-code, it solved all our problems and requests. As a service for sending sms with a code, we chose smsc.ru, the service attracted both simple and understandable api, and reasonable rates, compared to the quality of services.

In our application, the user has 2 authorization attempts per day, so that company funds are not wasted. To ensure the operation of this condition, it was necessary to solve the problem of transferring the date on the device itself. For this we decided to use the time from the Internet. Since we did not manage to find a ready made sane solution, we implemented our NTP client and used ntp.org as a time synchronization server.

With the above implementation of the login in the application, one problem has arisen regarding usability. Often, users assign themselves nicknames, which make it difficult to determine exactly who sent the notification, and it’s not always convenient to verify the number with the phonebook.

As a temporary solution, we added to the user profile a username mapping in the application, with the name as it is recorded in the phone book.

Still, such an implementation is not very convenient, users need to make additional movements to see which of the 5 Ivanov on the list sent “Good morning”. We think how to solve this problem, we will be grateful for your suggestions and recommendations.

In our interface implementation and authorization logic, we did not consider it necessary to add a placeholder with an example to the input field. This led to questions from users in what format to enter the number, starting with 8 or +7, or not to specify the country code at all. Stepping on this rake, in the future we will pay more attention to this in order to simplify the process of user and application interaction.

Black list

It is important for applications that involve receiving messages / notifications from other users to provide protection from annoying messages or spam. There are fantasies here where to roam, and whether it is necessary to save notifications from users from the black list, whether to show them in statistics, and whether it is possible for such a user to send a message, and so on. Developing such applications do not forget to work through all these scenarios.

Sharing

For sharing the application in social networks, we decided to use the standard component UIActivityViewController and UIActivityItemProvider. This allowed to introduce functionality in minimal time. The component is easy to configure, it helped us use different text for different social networks.

When implementing sharing, we are faced with the problem of getting a link to the application in the market without refilling. To solve this problem, we used a server that returned us a link to our application.

We also encountered features of the FB operation, according to the rules of which the application cannot pre-fill the sharing fields, the user must do this himself.

Interesting moments

During the testing process, an interesting moment was noticed. If the device is connected to Wi-Fi, but without access to the Internet, all components that interact with the network will endlessly try to get data, while requests will not be interrupted by a connection timeout. In this scenario, all applications in the system will always wait for the data to be downloaded.
Also, pay attention to auto-replace the first lower case letter to upper case when entering data into the fields. (First Name, Last Name, Group)

Conclusion


In the process of developing the application, we got the experience; it was a rehearsal of the dance and more of a rake dance. Now, having this experience, we plan to create the same application for Android. I would like to wish the developers to learn not only from their mistakes, but also from others. We will be glad to any of your comments and suggestions. Thank!

Source: https://habr.com/ru/post/276063/


All Articles