From Hello World to the App Store App: Tips for Beginners
The material may be useful for people who would like to develop in the field of mobile development on iOS.
Swift or Obj-C
Regarding what to learn from two languages, many copies are broken. I will not delve into the theory (since not a theorist). Swift Pros: simplicity, clarity, lack of scary square brackets everywhere. Advantages of Obj-C: used in most old projects of large companies, and since almost no one hires juniors, except for large companies, the chances of finding a job with knowledge of Obj-C are higher if you only know Swift. Cons Swift: if you use open source libraries, then it’s far from the fact that it will work out of the box. There was even a case that the FacebookLogin library was not compiled on one of the versions, until the developers avariciously fixed a bug. In short, Obj-C is an ocean of stability when, like Swift, it is a raging sea.
Design
Apple itself advises that design be given at least 50% of the total time spent on the project. This is a golden rule, though design must be understood in a broader sense than most people are accustomed to - not only as a layout, but also the structure of all processes in the application. In the conditions of fierce competition and large advertising budgets, it’s quite difficult to come up with an application with unique functionality, so design and user experience is our everything. I installed the first 10 applications with similar functionality on my phone and analyzed a large number of parameters, from onboarding and process descriptions to downloading speed and binary file weight (which is very important, since applications weighing up to 150 can be downloaded without Wi-Fi megabyte). This analysis gave me an idea of how the project should be,
The design of existing applications can and should be rethought, because many Russian Golden Age writers rethought Europeans, as for example, Tolstoy did with Hugo. At the same time, borrowing a “sugar” design from Dribbble or Behance is not the best solution — there are many good artists there, but design is more about analytics and utilitarianism than about beauty and pretentiousness.
Ideally, it is good to have a layout before starting the development of the code, but in practice these are two parallel processes, and therefore it is very good when the developer himself knows how to work in Sketch (or Affinity Designer, it’s not so convenient, but you can also work).
Architecture
When a project is created not for themselves, but for the company, then architecture becomes one of the few vents in which you can take a creative approach within the narrow framework of the technical task. I analyzed more than 100 vacancies at Headhunter and came to the conclusion that large projects are more and more inclined towards VIPER with various variations. Digital agencies like to come up with something of their own. But if your project is small and you are working on it alone, you should not be afraid of the banal Model-View-Controller, unless you add a separate router if the application is network-based. Even if the Controller becomes massive - it is not so bad if everything is fine with the logic and naming of functions and variables. On the other hand, there is an opinion that the number of classes directly affects the download speed of the application.
Sending to the App Store
As for sending directly to the App Store, you need to keep in mind:
- You need to spend $ 99 on the Apple Developer Program when at least the beta version of the application is ready. Prior to this, there is no great need for this.
- You need to be careful with in-app purchases. The StoreKit framework itself is quite cunning, and if you want to save time and nerves, you can use SwiftyStoreKit - it makes life a lot easier. When sending the application for verification, you need to attach a screenshot of the place where you can make a purchase and add a description. If you do it wrong, there is a chance that the binary will be rejected.
- Screenshots for all screens can be taken through the shareware App LaunchPad service , however, there may be problems with the iPhone X, so it is advisable to take screenshots for it separately.
- The term for checking applications now is usually two days, on weekends everything is much slower.
- If the project has many localizations, then you can use Fastlane - this will speed up the deployment of the application several times.