React Native has recently gained a lot of traction. Those looking to commision an application development are attracted by the promise of reduced development costs and a single codebase for iOS and Android. My team has accumulated certain experience with React Native for last couple of years. I'd like to share some general tips on what do and what not to do if you develop with React Native in 2018.
If you have recently considered developing a mobile application, you have likely heard of React Native. Developers either love it or hate it. But here is a short guide for those are looking to make a business decision whether to use React Native or not bother.
Actually, I am going to save your time and jump right to my conclusion: the only good reason to use React Native is to save money in a short term.
Now, here is the long story...
In a digital era when smartphones have already become a significant part of our lives, it is quite hard to imagine a person who doesn’t use this device on a daily basis. They dominate almost every aspect of living: from regular social communications to health examinations and measures.
In 2015 Factorial Complexity team has released the set of iOS travelling applications for National Park Service aimed to help visitors get the most of their experience. After 2 years of active use, gathered feedback and the worldwide changes in design trends, the customer decided to go with the improved 2nd version of the app - Park Mobile. Thus, we had a new challenge coming on and would like to share the most interesting features of the application and provide you an insight of some of the useful technical solutions that were used during the development process.
Working with small dedicated teams that are easy to control is one of the most optimal solutions for your business if it is connected with the development of mobile applications. This, of course, could be an obvious and unreliable statement of a technical writer that is preparing a sponsored post, but we at Factorial Complexity have a considerable experience in this and everything that you are going to read below is written by the people who interact with these kind of teams on a daily basis.
A usual project team consists of iOS/Android/React Native/Web developers, usually one for each development field, sometimes, even more than one, that are working on project regularly 8 hours per day during a long period of time. Firstly, they create a product and then continue to support it. Designer and a tester can also take part in a project development process from time to time. Designer is usually most involved in the beginning of the project, because the actual development depends on his proposed solutions. Later his clarifications and additional improvements may be needed for the development team in case of implementation of some new features. As for a tester, he gets involved at the very beginning of requirements gathering process and later on, from time to time, to test the already developed features.
People we hire are our main strength and our weakness at the same time. Those who we entrust with the work that we are not capable to do ourselves can both please us with their results and let us down. By trial and error, we at Factorial Complexity invented our own recruitment criteria which we hope will help you not to fail and entrust efficiently the reliable employees with the most valuable thing that you have - a part of your business.
Fundamentally different approaches exist when it comes to hiring staff. For example, some companies may hire those developers who have the sufficient formal experience in software development (not less than 3 years of commercial experience, for example) or only those whose experience strictly corresponds to the required experience for the stated position (i.e., having experience in working with the specific frameworks results in a “yes”, absence of such experience means “no”) or, as an option, some companies may hire those developers who have a high level of soft skills.
Photon Unity Networking (PUN) is a Unity package for multiplayer games. It provides authentication options, matchmaking and fast, reliable in-game communication through Exit Games Photon backend.
In this tutorial we will use PUN for simple two player network game. Photon Unity Networking is available on Unity Assets Store. Download and import the package in Unity
While working on the user interface in their applications, mobile developers tend to make the same mistakes over and over again. If the development process is properly organized, these are normally fixed during the quality assurance phase. However, the mobile developers should normally avoid making them before the code is passed to QA engineers or even merged into the code base. To help our developers in Factorial Complexity I have compiled the list of the most common mistakes.
When it comes to developing a mobile application the first question one should be asking is “Which platform to support?”. These days the answer is obvious. iOS and Android heavily dominate the market with a combined share of more than 95% and growing.
It is commonly believed that a fixed-price model is the best way of cooperation which gives the client absolute clarity of the project budget and timeline, insure them against the team’s fails and cheating, and saves the costs. But is it really so and are not there any hidden rocks in fixed-price contracts for you as a client who seeks mobile app development? And what are the situations you when you should 100% use fixed-price cooperation?
I have recently shared my thoughts on the UI/UX mobile trends for 2017 and today I’d like to talk about the web design trends and what will be popular in the coming 2017 year. It is hard to give such predictions but we can say that for sure about the things which are taking a back seat to the trends gaining ground.
I was really excited when it turned out my new Android project was related to the video processing because the task was very interesting and I thought I knew some possible solutions. But in some time after starting the development, I realized Android OS did not (and does not) have instruments for that kind of manipulations. There was no simple solution and I had to solve the task and besides do it quickly. After lots of googling and reviewing possible options and existing similar apps and examples, I found only a few tools which seemed reasonable at that point. They were several libraries allowing some video manipulations but I did not know much about their functionality at that point.
More than 2,5 billion people on Earth have smartphones and use them heavily every day. We spend about 4 hours a day staring at the screen. Curious fact but each person has three favorite apps used most frequently. The leaders among them are Facebook, Youtube, WhatsApp, Instagram, Uber, Gmail and Pinterest and many more like Yelp, Snapchat, Candy Crush, Pandora, and others. You can see more ratings here.
So how to make sure your new app wins howling success and not a total wreckage? The answer is in sleek and custom User Experience. We have heard this from the digital evangelists for thousands of times but do we completely realize this?
We are happy to revive our blog with useful and fun information for our readers and to mark this wonderful event we decided to connect it with a present for everybody involved into mobile. This is a free UI Kit for a music app and you can do whatever you want with it: download and save on your computer in order to use in some time, have a look at it and get inspiration for your own apps or rework them partially or completely and create your next great app based on this UI kit!
Yes, there is opportunity to combine this languages in the same project. It’s great. Apple provides a tutorial how to do this magic. You can find here. But in spite of it I would like to share my experience on real examples, because it’s not as simple as it sounds.
Today I want to share with you one of my pieces of code that has proved to be quite useful. Sometimes what you need is not something brilliant or especially sophisticated, but something steady and dependable, doing all that annoying work for you. Well that’s
I did not think that I would be ever so happy to learn that a certain cocoa API got deprecated. But let's hand it to
UIActionSheet - they were always different and not "good different". I could not have said it better than Matt:
“From its very inception, UIAlertView has been laden with vulgar concessions, sacrificing formality and correctness for the whims of an eager developer audience”.
Unfortunately, there’s no official way provided by Apple for this purpose. Let’s look at two methods for solve this problem.
Apple provides a way to specify application specific language, by updating the “AppleLanguages” key in
NSUserDefaults. For example:
Few days ago Apple released long-awaited SDK for Apple Watch. Device itself is scheduled to be released early next year (spring most likely). However, Apple as usually granted registered developers an early access to set of libraries and tools for developing application. It is embedded into Xcode 6.2 Beta and called WatchKit. I have put together a quick overview of SDK, describing what developers can and cannot do with Apple Watch.
Surprisingly for some, we can actually do a lot. Although WatchKit framework reference looks scarce, developers can actually create applications for the Apple Watch. However, they do not actually run on the device. If you watched Apple's presentation closely you had noticed that Apple Watch requires an iOS device to work with. I assume it can work as a watch even on there own. But in order to get most interesting features out of Apple Watch people are required to have an iPhone in their pocket. This is the device to actually run the code. Apple Watch acts merely as a display and input device.
In iOS 7, Apple introduced AirDrop, a way of sharing files and links between nearby devices using a combination of Bluetooth and Wi-Fi.
If you’re sharing images, or simple web links, you’ll get the simple behavior with
UIActivityViewController, but if you want to share custom data into your native application you have to do a little more work. I'd like to tell exactly how to do this.
You need to register the document types that your application can open with iOS. To do this you need to add a document type to your app’s Info.plist for each document type that your app can open. Additionally if any of the document types are not known by iOS, you will need to provide an Uniform Type Identifier (UTI) for that document type.
In iOS 7 Apple introduced new approach to status bar. It is now rendered above the navigation bar, effectively looking as a part of it. It required some efforts to adapt older applications to this new approach. If developer follows Apple suggestions and guidelines that's not really hard thing to figure out and adapt.
There is, however, an obscure and undocumented issue that might cause some headache. It happens when for some reason application needs to hide and show status bar on certain view controller. Drawer-styled side menu is a good example of the case when developer might need to do this.
If you want to create cross-platform solutions quickly, in particular 2D or simple 3D games, I think you should pay your attention to
Marmalade SDK is a cross-platform solution that allows us to write the source code for a game or an application once in C++ and then deploy it to a number of different platforms, including iOS, Android, BlackBerry, Windows Phone, etc.
What you need for this? You will need Microsoft
Visual Studio 2008/2010/2012, if you are using windows platform, or the latest
Xcode for Mac users, and a licensed copy of the
After purchasing a licence and downloading the SDK (you can do it here, you should install the SDK on your Mac or PC. Then just run
Marmalade Hub, in this application you can create project, see the examples or documentation, setup project configurations, deploy the builds, etc.
I just love
UIPageControl, don’t you? It’s simple and intuitive, it does not get any more "native" than this since apple used it in SpringBoard for ages. UIPageControl is the perfect choice when you have a fullscreen
pagingEnabled and you want to encourage your users to “swipe to see more”.
DAPageControlView gives your users the exact same experience they get from
UIPageControl and something more. While
UIPageControl is a winner for static data,
DAPageControlView might be a better choice for the case when you fetch your data from a server in chunks and/or do not know the total number of items.
If you are looking for web images caching solution for your iOS application project, we strongly recommend SDWebImage. It is simple, easy to use, stable and well documented. And impressive list of users speaks for itself.
SDWebImage provides both memory and disk cache with automatic cache expiration and clean up. Although, it might be tempting to roll out custom solution, reiventing the wheel just doesn't worth it in this case. Library addresses quite a lot of small but important issues, which you probably will never really resolve, while creating some quick solution on your own.
Our artist Oleksiy Beztsinnyy shares the process of creating art for Pirates VS Ninjas. Pirates VS Ninjas is a two players strategy game for iOS and Android. It took around 6 weeks to complete all the graphics. In total there are 14 unique unit types. Each has at least 3 types of animations. Oleksiy also created icon, logo and all the menu screens.
Among the first things I have created logo and main menu screen. Got some references and started picking colors and fonts. Also created some sketches of how things would look.
Apportable allows developer to port their iOS application to Android easily with a very little alterations to the source code. Basically it cross-compiles Objective C or C++ code to Android NDK library. Also it includes libraries for emulating significant amount of iOS SDK APIs. Although Apportable supports UIKit to certain extent, it is intended for OpenGL applications only.
Recently, we have ported our old game title Dragons Rage to Android by means of Apportable platform. This took around 4 days total, which is pretty cool. Apportable is free if you are fine with supporting Android 4.0+ only, don't need support for expansion files and don't need or fine with implementing some useful modules like Facebook SDK, Flurry or Google Analytics yourself.
Today I want to share the sprite generator utility we extensively in our game development projects. It is pretty simple, doesn't have much options, only generates cocos2d compatible spritesheets and only works on Mac OS X. But still we find it extremely useful. Source code is available on github and can be easily tweaked to anyone's needs.