Your cheat sheet to delivering a robust and crash-free app

You’re working happily on your app and all is well, then suddenly – POOF! – it crashes. Aaargh!!

Apparently ‘Crashes decrease with new session the very next day by almost 8x’ (Cue sad violin).

It happens to the best of us.

Stability issues can derail the success of even the best apps. Buggy apps can drive your users away, uninstallations aside, they have the potential to wreck your reputation when users leave one too many distasteful reviews.

Something to bear in mind is that it’s not only about crashes. Users face errors that are not necessarily a crash, so tracking user-facing errors such as error messages and API response times is also important. There are several types of crashes an app can experience- either it can be ANR errors or crashes related to API integrations.

Bug fixing doesn’t need to be hard. You’re likely to worsen the situation if you freak out and start changing things at random, hoping the bug will magically go away.

Instead, you need to take a methodical approach and learn how to reason your way through a crash and maintain app stability.

You can’t fix what you can’t find

a man looking for something

The first order of business is to find out where exactly in your code the crash occurred: in which file and on which line.

You do have control over some of the errors and can find them. You can let the user know of the problem via building a communication channel when a user loses their WiFi connection while file transfer is in the process.

When errors are from unexpected app behaviour, your mobile app testing kit will need app monitoring and tracking tools to detect the behaviour that leads to app crashes. There are tools that are not only for mobile apps but also for OTT and Unity as well. In addition, no matter what tool you use, it’s normally an SDK that reports you about the crash alerts.

Even if you are able to collect all this data, it’s difficult to figure out which crashes to troubleshoot and fix first. And this issue follows our next approach to a stable app.

Follow Eisenhower’s Urgent/Important Principle

It’s important to prioritize and sift the problems most users are facing first.

As it’s common that teams tend to tackle bugs on a first come first served basis. Especially if the report comes from a loud voice or a key stakeholder.

This principle comes handy in such a situation which is more like a Rule of Thumb. This principle can tell you to quickly identify the activities that have an outcome that leads to us achieving our goals (Important), and activities that demands immediate attention (Urgent) that you should focus on, and the ones you should ignore.

Basically there are a couple of crashes or bugs that might be causing complaints, solve those first and iterate your priorities accordingly – you will see your crash rate and complaints decrease dramatically.

Practice better Exception Handling

An exception happens when something goes wrong. Tried to open a file but it doesn’t exist? You’ve got an exception. Attempted to call a method on an object but the variable was null? Boom! Exception.

And here comes Exception handling which is an error-handling mechanism. When something goes wrong, an exception is thrown. The exception causes your application to crash, if you do nothing.

For example: Developers often find themselves in a situation like- Is there a way to avoid an EXC_BAD_ACCESS from crashing an app, and handle an exception gracefully?

To handle the exception that was thrown, you need to catch it. You can do this by using an exception-handling block i.e. by using ‘try block and catch block’.

Proper Memory Management

GIF of chrome as pacman

One of the biggest causes behind app crashes is the lack of memory because not all users possess powerful smartphones and high-end tablets. Whereas, people write code as though only their apps exist.

Taking the similar example from above: You can also get EXC_BAD_ACCESS (while attempting to access nonexistent memory) because of the usable memory already being assigned to other processes. The unavailability of enough memory will prompt your app to shut down.

How to go on about this?

  • Do your best to avoid using too much memory and use caching whenever possible.
  • Find where your app holds the biggest data structures or uses the most amount of data and see if everything is absolutely necessary.
  • You can profile your app to see if there is any memory leak.
  • If there is no way to save memory, then prioritize what data/ features to dispense and keep, to save memory when it is already low.

These kinds of crashes become very rare with just a little defense and care in programming, and using “treat warnings as errors”.

While improving app usability, knowing how to deal with dysfunctional apps can be of great help. If you want assistance in development and testing of mobile applications, you can chat with us here.

Forging Automation Testing Framework for an E-Commerce mobile platform

The client was looking for help to test critical functionalities of its mobile application for which they found a solution in Galaxy’s automation testing.

Our client is a trusted peer-to-peer rental marketplace for buying, selling, and renting almost anything. Our client’s dream is to offer a platform where all goods from cufflinks to computers can be borrowed within minutes. Why? Because we all own something that could be of value to someone else.

And with so many users constantly engaging with their mobile app daily, they needed to be certain that the UI runs smoothly on every device and platform without frustrating the users – which could be achieved through a comprehensive well-written automation testing.

Challenge

The client follows agile methodology in its software development process. This allows them to detect bugs earlier in the cycle, which results in speedy bug fixes. While testing early in the software development life cycle, there are certain tests that need to be repeated.

Such cases, when handled manually, were taking a lot of time and effort. Here, they felt the need to implement test automation that can overcome various challenges and help them improve the quality of the product in less time.

The main challenge for our client was to test major functionalities of their app on Android device. The goal was to complete test execution in a less amount of time. Due to the complexity of the application, it was difficult for them to zero in on the best automation framework for their app. They wanted to adopt an automated testing environment to ensure a highly reliable and secure system, and reduce the cost of future changes to their system. Seeking to adopt an efficient automated testing environment and reduce testing time, the client turned to Galaxy.

Solution

Our client came to us with the aim to develop a scaffolding that is laid to provide an execution environment for the automation test scripts. A framework that could increase test speed and efficiency, improve test accuracy, and minimize test maintenance costs while eliminating the scope for human error.

We needed to automate test cases for user portal of their core application. And for that we decided to solve their mobile test automation challenges and build the automation framework from scratch using open-source frameworks for their hybrid App.

Our testing team identified automation objectives and goals. This is determined through consultation between our client’s testing & development team and our testers. We then identified the test cases for automation based on different test case categories like difficulty to be tested manually, chances of human error, repetition, and data required for testing.

Login Test Scenarios:

  • Verify if a user will be able to login with a valid username and valid password.
  • Verify if the ‘Enter’ key of the keyboard is working correctly on the login page.
  • Verify homepage after login

Renting Flow Test Scenarios:

  • To click Search icon from the homepage and start searching for the product.
  • When user starts typing words in text box, it should suggest words that matches typed keyword.
  • To select date from date-picker/calendar for starting to end date of renting.
  • To validate that the application supports payment gateway transaction as required by the application.
  • Ensure that user can access the Checkout Page after adding a product to the cart.
  • To check the logout session and whether the link or button for logout accessible for all users.
  • To validate the rest of the test cases like scrolling, navigation, double taps, etc.

Having covered all the crucial scenarios and cases to ensure a smooth user experience, it was time to see how the tests pan out.

Testing the functionality

The client needed a team who can collaborate with them having the knowledge of web testing techniques and the e-commerce domain. We undergo discussion over special considerations of various aspects of project understanding such as business goals, current state of automation, and future roadmap.

To further ensure that the app was performing as expected, we did functional and smoke testing on major features, themes, and structure of the application i.e. from login to logout.

We created a testing framework using Java, Appium, Selenium, TestNG, and Maven. Such approach to select multiple open source tools and combine them with a custom framework helped us leverage a number of benefits:

  • To reduce the time to create and maintain scripts.
  • We used data-driven automated testing to separate test procedures from test data, allowing to cover more scenarios with a minimum amount of effort.
  • We used POM concept, and developed special features that could be reused by all scripts, such as to create automated reports with screenshots for failed case/step, common methods for AppiumDriver (click, wait, etc.).

Integrating testing in development cycle

We integrated the script with Jenkins in the client’s environment in windows machine using the batch command. We configured Jenkins in such a way that smoke tests were first executed for sign in, flow of renting a product (on the same day), verify homepage, and verify rental page. And after the successful completion, functional tests were executed for verifying a renting a product on different days.

Results

Our testing team worked with the client and successfully crafted a testing and development plan tailored to their release cycle and pace of customer demands. We helped the client automate the system installation, smoke testing, functional testing, and system deployment process as well.

How we helped the client to get the best out of their automation testing:

  • Selected test tools that leverage the best-of-breed approaches.
  • Completed test execution in a less amount of time.
  • Updated tests in accordance with changes in the UI and function of the application.
  • Ensured verification of test results generated by automation testing.
  • Ensured timely submission of test results to the client.
  • Ensured that the user’s search experience in the site is of the highest quality.

With effective automation testing, our client managed to reduce time-to-market and launched a bug-free product. In addition, integrating continuous testing in the CI/CD process helped shorten mobile app release cycle and ensured high customer satisfaction. And as we took care of repetitive tasks with less number of resources on-board, we thereby helped in maximizing Return on Investment for our client.

The ultimate best practices guide to a robust mobile application

No software is perfect, just like humans. But the pursuit of perfection is not futile.

If you look around the web you’ll find thousands, maybe millions of posts telling you how to code, improve performance & stability, scale, and secure your applications. What you might not find is a comprehensive guide that has all the aspects that are needed for a robust mobile application. 

In this blog you’ll get to learn about the best practices from design pattern and server setup to coding and security. 

Design

Designing is the most crucial stage in an applications development life cycle. Conversions rely heavily on designs and how they’re implemented. Here are some of the best practices that can make your app a usability treat.

  • Create efficient onboarding: The goal of onboarding is to show the value of your app to the user by demonstrating how they can achieve what they want in a quick and efficient way. If the user is having trouble within the first few screens, they’ll likely drop off without hesitation.
  • Improve usability: Help your users by telling them which icons can be selected, tapped, or swiped. Ensure that you remain consistent with gestures throughout the app to optimize usability, e.g., if swiping up deletes an item, make sure that the same is true for all screens within the app. 
  • Prioritize actions: For each screen, there should be a primary action. This results in an easy-to-learn interface. You can show prioritization with contrasting colors, different fonts, or buttons.
  • Construct a navigation that’s easy and apparent: But, how do I do this? Here are a few points that we follow during our development :
    • Don’t hide it — the more obvious it is, the better. Never make a user hunt for it.
    • Deliver consistent navigation throughout the app. If you hide it on internal pages, you’ll only add confusion.
    • Indicate to users where they are by highlighting their location. This can be a problem for apps as users become “lost” and may abandon the task.
    • Utilize a standard navigation platform. For iOS, “Tab Bar” is a good option, while Android works well with “Navigation Drawer.” Stick to simple — it will help you more than spending time on clever.

Scalability

An app that isn’t designed and developed to seamlessly handle continuous growth will eventually end up being a failure. Hence here are some scalability best practices that ensure your app holds up as your business grows.

  • Choose the right architecture that way the app can grow organically with increasing traffic to the user base. Based on your needs you can go for MVVM, MVP or MVC pattern. 
  • When it comes to the server side, it must use “Auto Scaling” so that the server can perform well when the user base grows.
  • Try going stateless: Keep APIs stateless. In each request, the client should provide all the information which would be required to fulfill that request. This might not be possible in all cases. Sometimes, we might have to query our database and other services. But try to follow as much as possible.

Security

We know that security is key to putting web/app users’ minds at ease as well as your own! There are six essential security elements that will protect users’ information. If one of these six elements is omitted, then the information is at risk.

  • Availability refers to how you’re able to access information or resources in a particular location as well as in the right format. When a system isn’t functioning properly, information and data availability is compromised and it will affect the users.
  • Utility isn’t always considered as a pillar in information security, but let’s say that you encrypt one copy of some important information and then the encryption key is accidentally deleted. The information would be available — it just wouldn’t be accessible or usable.
  • Integrity references methods of guaranteeing that the data is real, accurate, and protected from any changes from an unauthorized user.
  • Authenticity aka “authentication” makes certain that the user’s identity is validated.
  • Confidentiality allows authorized users to access sensitive and protected information. Sensitive information and data needs to be disclosed to only authorized users.
  • Nonrepudiation is a method of ensuring that message transmissions between parties have a digital signature and/or encryption. A data hash will help you acquire proof of authentic data and data origination. 

Cloud and DevOps

Now that almost every app is on cloud with user bases exceeding millions on an average, it is business-critical to have a proper cloud infrastructure and DevOps in place. Here are some practices related to the same. 

  • Create isolated environment with the help of VPC (virtual private cloud) and define subnet on GCP (Google Cloud Platform)            .
  • Using IAM(Identity and Access management) services is handy to provide role-based access to any external users.
  • For database services, we recommend using cloud SQL.
  • For some of our clients, we have used Kubernetes engine for container based hosting.
  • Use Continuous Integration (CI) and continuous Delivery/Deployment (CD) to make deployment strategy automatic.
  • Using GCP Firewall for server security.
  • Configure server environment with auto scaling.
  • For email servicing, being experienced in configuring G-Suite will help.   
  • Use multi-region, load balancer on GCP to route the traffic region wise.

Testing and Optimization

Testing is crucial for a successful project as it enables developers to reveal performance gaps at early stages preventing any development overheads. Based on the identified performance gaps the app can optimized for quality and stability.

  • Apply profiling tools for monitoring: Use tools like X-code profiler and Android profiler. With the help of profiling tools, you can detect the crashes and, thereby, get an alternate code against the same instantly.
  • Test the app on multiple devices in order to make sure it performs well on most popular devices.
  • Prepare for varying network speeds: A mobile user would mostly be using the app on the go, so make sure the app works well in case of switching from WIFI to mobile data or vice versa. 
  • Optimize queries:
  • By optimizing queries, you can control output at the first end, which helps to prevent use of looping, reduce the number of statements, and the excessive use of other controls on the code end. This results in optimal performance for your site.
  • Optimizing will create database normalization rules.

Monitoring and Maintenance

Contemporary applications are accessed from different platforms like phones, tablets and desktops. These platforms come with different operating systems, software/hardware platforms, security setups and other limitations. Therefore, continuous application performance monitoring is an essential part for smooth operations.

  • Load testing: Check performance of the site with speed test tools, such as GTmetrix, pagespeedtest.org, etc., and implement its suggestions
  • Use crash reporting: We recommend integrating a crash reporting tool, such as Fabric Crashlytics
  • Make use of short statements — fragmentation of a big function to reduce the same code across multiple places
  • Maintain error logs: This helps keep you organized
  • Write rules to send email notification to developers/responsible person in case of any issue/error occurs.

Combining the above best practices will help you deliver a site/app above the rest

If the above seems like it’s overwhelming to handle or even for your team to handle alone, reach out to us and we’d be happy to help you in all things related to optimizing your site or app.

Galaxy Weblinks has a dedicated team of designers and developers that are well-versed in creating efficient websites and mobile apps, so reach out to us a

5G is not just an extension of 4G technology

Commercial 5G network is going live. Big carriers like Verizon, AT&T, Qualcomm, and SKT are building out their 5G networks. But, it’s going to take them some time before they can make it a new standard and available for most people.

The world is going to need high-speed connectivity and 5G will offer it with higher spectrum use and data rates, where 4G falls short. 5G will offer opportunities in various uses cases like self-driving cars, cloud gaming, instant movie streaming, and more.

5G is not there yet. Why should I bother?

When 4G emerged, it improved speed and the user experience on devices. But, when it wasn’t reliable, we still leaned on 3G. Similar to 4G, 5G is on its way. Although that means 5G won’t replace 4G overnight, it does mean that you need to prepare for when it does.

Although Apple and Google haven’t adopted 5G yet, according to The National Interest, around 1.5 billion mobile users (40% of current global activity) will be using 5G wireless networks by 2024.

Such clear insight into the bright future of 5G will impact the app development process. Developers that launch and prepare new and existing apps with 5G possibilities in mind are going to be ahead of the curve and reap the rewards once 5G becomes widespread.

Let’s first dive into the 5G landscape to understand how it’s defining the future of connectivity.

What difference will 5G make over 4G?

Picture of building with stair case direction on it

Speed is the biggest noticeable difference. 5G promises device speeds around 10 times faster than 4G.

Whereas, latency of 10-20 ms less than 4G will make delays virtually impossible to perceive — and in the best cases to around 1 ms of delay.

That means, with 5G, things will be a lot faster. Consumers won’t have to deal with the frustration of high-quality videos buffering or the disruptions when sharing videos from crowded places. This is a great advantage for creating 4K/8K video streaming and AR/VR applications.

In a test environment (UK’s 5G Innovation Centre), 5G has reached around 1Tbps, which is roughly 65,000 times faster than a typical 4G connection.

But, it doesn’t mean 4G is done. Many of us rely on 3G when 4G is unavailable and that’s exactly what will happen when 5G is on end user’s devices. As a matter of fact, many speed tests performed in Chicago lately have proved this in a way that while even walking halfway down the block/node, it’d start bouncing back and forth between 4G and 5G.

Here is the reason why…

Faster speeds of 5G come at the cost of shorter range

5G uses millimeter waves and here is the catch — the higher the frequency of any wave, the shorter the wavelength. The other reason why 5G doesn’t travel well is that it can’t make it through solid objects like buildings, trees, or walls.

There are some solutions out there, however. One could use carrier-specific signal boosters or hotspots. In order for 5G to have larger coverage, there would need to be many more, which is another reason why 5G has a little way to go before it reaches mainstream adoption.

But, it’s not only about speed

4G’s popularity boils down to higher speeds for data and video streaming. But, 5G will also enable any device that has a chip in it to be connected to the network all the time. Whether that’s a car, television, refrigerator, tablet, smartphone — you name it. So, it will be much more advanced than 4G ever was, which is why it isn’t simply an extension of 4G.

This also comes with other app development advantages:

  • Location Accuracy 5G will ship with much better precision capabilities because of its shorter wavelengths and higher radio frequencies than those used by 4G. This is a great advantage for developers creating high-precision, GPS-enabled mobile apps.
  • Increased Connection Density 5G supports the connectivity of up to 98,000 devices more in the same space as compared to 4G. This will prove extremely useful for IoT mobile app developers.

How will 5G impact app development?

Picture of a tablet with AR

Mobile users will consume 3 hours’ worth more video content weekly — of which one hour will be on AR/VR glasses in a 5G future. This belongs to the predictions of massive change in future usage of 5G.

With such game-changing opportunities, the mobile app development will experience major changes. Some include:

  • Apps related to 3D gaming and immersive augmented reality will get a great boost
  • Less dependency on the processing power of the hardware of mobile devices
  • Some good UX practices such as loaders will slowly become irrelevant with 5G
  • VR experiences will be smoother and the frustrating buffering and lag will be a thing of the past

What’s Next?

5G will serve enterprises, consumers, and take IoT to the next level, instead of personal communication only. But real, widespread adoption is still a few years away. In the grand scheme of a business, though, that isn’t an abundance of time when it comes to developing and implementing fully functional, top-of-the-line mobile apps.

Developers all over the world have started working on applications, existing and new, that’ll be able to utilize the full potential of 5G. These preemptive plans aim to release an app at the right time when 5G becomes mainstream, which gives their app a huge advantage over others. If you want your app to be ahead of the curve, you can count on us to create one for you.

If you want to do more than just understanding near-term consumer benefits of 5G, contact us to make sure that your applications will stand out above the rest.

Why it’s a bad idea to ignore older adults from your app demographics

Modern technology has two problems: Devices have too many integrated features and everything is smaller.

A good implementation of more-than-what’s-necessary features can give some users an all-in-one experience. While a bad implementation can make it a nightmare to use for an often ignored demographic which is older adults.

Who exactly are these older adults:
Older adults are users aged 50 years and above. The learning curve isn’t that smooth for this demographic as compared to millennials or Gen Z.

UI that has too much going on with it often confuses older adults and they tend to blame themselves for not being able to use technology rather than the design.

But, one can’t put their lives on hold just because of their age. It’s simply a question of need. If they can go to YouTube and learn how to make a cake then they can also learn how to get a cab with Uber.

Infact, generational stereotypes are getting out of the way while building app interfaces for this demographic. As this cohort is not so far behind when it comes to using Facebook, Uber, WhatsApp or YouTube.

Myth #1 Targeting old users deemed as being the last Internet frontier

Video of Snapchat dog filter

Attracting older adults as part of the user-base was considered to be a niche market. Maybe ageing adults aren’t the target of Silicon Valley’s latest service or dating apps but startups believe there is value in addressing the elderly’s needs.

San Francisco-based company Honor (custom home care for seniors) has recently closed a Series C round. It has raised a total of $115 million in funding in just four years.

Myth #2 Elderly do not want to use modern technology at all

It’s not like they don’t understand technology and associated benefits. They want to use the tech but it’s targeted towards and tailored for younger audience. Besides older people are the ones who face trouble getting in a car and driving to get groceries or medical supplies. They need these apps as much as any other group of people.

Martin Gerstell, 94, volunteered at the National Gallery in Washington last month, used the Uber app his granddaughter installed on his iPhone.

Why should older adults matter to designers?

Man on a DJ console

From getting into the swing of mobile phones and computers to watching monologues of the late night show on YouTube or owning a fitness tracker, for decades people aged 50+ have used digital technology in one way or another.

  • Almost 70% of old people all over the world today have some sort of internet exposure on a daily basis.
  • According to the census report, by 2030, about 20% of the U.S. will be old.

The number of older netizens using smartphones is significantly more than ever but contemporary digital products continue to ignore and fail this demographic.

As Don Norman observed, bad design abounds, in both digital and physical products. Current interaction designs often feature startling sounds, tiny targets, illegible text, and other features that make the online world unfriendly to older users.

Good design for older adults is often recognized as good design for everyone

It’s worth giving a thought that when you’re designing for maximum accessibility you’re automatically designing something that is engaging and easier to use. Design guidelines below are consistent with the principles of Universal Design in most of the big enterprises.

  • Distinguish the primary buttons from their surrounding UI elements by proper pairing of color, contrast, layering, shadow and highlights.
  • A simple navigation is essential to allow users to easily and quickly get from point A to point B. Flexible patterns like grids, minimizing sublevel, keeping menus in a single function, etc. are among today’s best navigation practices.
  • Button and text sizes should be kept scaled up. Like keeping icons labeled with bigger text whenever possible or preferring Sans serif typefaces for on-screen readability.

Feeling bogged down while designing an ideal interface for this ‘optimistic’ crowd? Start a project with us for creating an inclusive experience that’s unique and accessible at the same time.

iOS 13 design | What’s changed and what remains?

Ever wondered why Apple allows only selected employees in its Industrial Design Studio?

Surprisingly, it’s a part of their design concept and not a security concern.

Apple isolates their industrial design team to allow them to indulge in deep work. It lets them make cutting edge design decisions without having to worry about the practical and limiting aspects of its implementation.

Such creative isolation is one of the reasons behind Apple’s incredible products. Products that are amazing to look at and are effortless to interact with.

Apple then unveils these ingenious products in their annual events. This year’s launch events also followed through with new iPhone 11 series donning a double and a triple camera setup, Apple TV+, Apple Arcade, a dedicated OS for iPad, multi-core ultra-spec Macs for professionals, and UI upgrades for the new generation of Apple devices.

But it was the design announcements that caught our ‘viewport’.

iOS 13 has been in the developer’s beta since the announcement at WWDC 2019. Here are a few notable UI/UX designs from the beta that made it to the end users.

New Default Modal Presentation style

Screenshot of iOS UI
Image source: Applypixels.com

It’s been almost two years since iOS interface ditched capacitive buttons for swipes and gestures. The new ecosystem relies on card style modal sheets which lets the user dismiss or present recent screens with swipes only. Modal presentation style is now default due to which view controllers appear as a form sheet overlaid one over another and not in full screens.

This card-like appearance allows users to dismiss screens interactively with a downward swipe. And the layered design provides users a sense of context about where they are in the application.

Modals are really convenient but they’re not fit for the apps that has scrolling, pinching, or swiping as their fundamental interaction. Photo editing and reading apps for example.

Revised System-Wide Gestures

iOS 13 gestures

Selection gestures in custom text views:

Thanks to the new text editing gestures! There will be no need to shake the entire device to undo a text (only if someone even bothered to do that).

  • One can simply tap to select, pinch in and pinch out to copy-paste with three-fingers.
  • One can also undo-redo by swiping left and right with three fingers.

In addition to that, it will allow users to quickly manage their text editing on either of the devices i.e. iPhone or iPad, without using formatting shortcut bars.

Multiple selection gestures in tables and collection:

Apple has introduced a new way of quickly selecting contiguous batch of items in table and collection views. By simply dragging two fingers on a list or collection of items to draw a selection.

It’s important for easy and seamless user experience to add gestures when left with very little space on screen. It will immensely help designers overcome space-based challenges.

However in hindsight, so many gestures may leave users overwhelmed before they get used to it.

Dear Apple, it’d be great if you did something about…

Monochrome photo of Apple logo in a dim lit office

  • Incoming Phone Call UI
    It’s something that iPhone users want Apple to learn from Android. Why a full-screen app jump? It covers the whole screen, pushing back the application you are using. This call UI needs a refresh, and like android can show a banner up in the top that allows users to dismiss the call or let it ring in the background and be done with it.
  • Swiping App Switcher
    Since iPhone X Series’ redesign, users have been reporting the inability of swiping away all the apps in the app switcher in one go. Surprisingly, it’s still there in iOS 13. Apple is not fixing this problem because clearing recent apps in the App Switcher doesn’t improve battery life or device’s performance, as all the apps are in suspended state.However, removing all of the recent apps from the app switcher only has aesthetic value where the user wants to be able to scan the app switcher quickly for their most used apps. But taking away the option to swipe away the mess is a bad design choice. It’s up to the user if they prefer a clean and efficient experience or a cluttered one.
  • Camera App Settings
    There are tons of improvements in iOS13 camera and photos application, but it still doesn’t allow to change video recording resolution within camera app itself. For that, users are supposed to go all the way into Device’s Main Settings > Camera. Whereas the interaction is only worth a button and two taps in the app.

Similarly, there are few other features that are buried in the iPhone Settings that are meant to be in the app in the first place.

Wrapping up

Contrary to popular belief the design is not always about what a user wants. Most of the times it’s about utilization of the new tech-laden devices. It might mean some compromises here and there but at the end of the day it’s for the software stability.

Maybe Apple keeps things the way they were built, because they know better. But Apple, if you’re listening at least change the in-your-face call notifier screen.

Kotlin 1.3.50 | More than just a performance upgrade

Kotlin has emerged as both substitute and supplement to C++ and Java. In 2018, the language had over 96,000 repositories on GitHub and had already reached 1.5M+ users.

More than 50% of professional Android developers now use the language to develop their apps. Google claims that this figure will increase dramatically. Since in future Kotlin will be the first to receive new Jetpack features.

The new Kotlin 1.3.50 release kicks off with various tooling and quality improvements to develop applications much faster. Let’s take a look at the major improvements from this release.

Convert Java-Kotlin with fewer compilation errors

The one-click Java to Kotlin converter tool helps to convert an existing Java project, one file at a time. The converter is not meant to produce 100% error-free code, instead it’s built to reduce compilation errors.

The converted code might show nullability issues that require human intervention. Manual corrections fixes the code for the time being but it doesn’t foolproof the code from runtime errors that show up in the form of nullability mismatch.

The new improved version of Java-to-Kotlin converter (available in preview) tries to infer nullability more correctly based on the Java type usages in the code. And helps in making it easier than ever to convert code with fewer compilation errors. The generated Kotlin code is easier to manipulate too.

Improved Debugging

Bytecode has a lot of technical information and displaying all of that can make the code bulkier and unreadable. Kotlin ‘Variables’ view now highlights only the most relevant variables, which aids in easier debugging.

  • You can set a breakpoint inside lambda expression or at the end of the function as well.
  • Improved support for the “Evaluate expression” functionality in the debugger for many non-trivial language features. You can now modify variables via “Evaluate expression”.

New Intentions and Inspections in IntelliJ IDEA

This addition helps in learning how to write idiomatic Kotlin code, improve performance of IDE actions, and fix several known situations that were causing the UI to freeze.

  • IntelliJ IDEA now highlights deprecated imports from the completion list
  • You can convert normal properties to lazy properties and vice versa
  • You can automatically replace the primitive lateinit property with the by Delegates.notNull () syntax

Kotlin/JS now supports Dukat-Gradle integration

Dukat is a converter of TypeScript definition files to Kotlin declarations. By running the build task in Gradle, typesafe wrappers are automatically generated for npm dependencies and can be used from Kotlin.

You can now comfortably use the JavaScript ecosystem libraries in Kotlin in a type-safe manner without the need to manually write wrappers for JS libraries.

Other Kotlin/JS updates

  • Incremental compilation for Kotlin/JS is now up to 30% faster compared to 1.3.41.
  • Support for running and building Kotlin/JS Gradle projects using the org.jetbrains.kotlin.js plugin on Windows.
  • As with other platforms, you can use Gradle tasks to build and run projects and resolve NPM dependencies needed for Gradle configuration.

Kotlin/Native updates

Earlier version names of Kotlin and Kotlin/Native differed from each other. This release uses version 1.3.50 for both Kotlin and Kotlin/Native binaries, reducing the complexity. As the standard library updates to support the kotlin.reflect.typeOf() function for Kotlin/Native types.

  • Kotlin Native now ships with an exhaustive set of platform libraries on macOS/iOS and embeds actual bitcode in produced frameworks.
  • Kotlin-platform-native is now replaced with Kotlin-multiplatform

Here’s a link to the change log if you’re curious about the other features that are packaged in the Kotlin 1.3.50.

Let us know how you feel about the multiplatform Gradle plugins and handling nullibility errors manually. And ping us here if you need Kotlin development assistance.

What are Google Play’s new mobile app requirements?

Google Play set out many criteria in their app guidelines that you need to follow. These changes may cause some issues as you try to stay up to date. In this post, we’ll tell you what changes you need to make in order to guarantee that your app is fully compatible with Google’s new requirements.

Google made changes to the behavior of the API to increase security and privacy. The bindService() implicit intents in Android 5.0 aren’t supported currently. There are also new changes in the Runtime permissions. Since every Android app runs in a reduced-access sandbox, so the app has to ask for permission when it wants to use materials or information outside that sandbox. Google Play asks that you state the need in the app manifest and then you have to approve each permission right before the actual runtime.

This permission change is for Android 6.0 and higher. You can still use the Android Support Library to make older versions of Android compatible. Google Play also updated the Android Support Library with the release of Android 9.0 (API level 28); the new version is called AndroidX and is part of Jetpack. The existing support library still exists with the AndroidX library, but it also includes Jetpack’s most recent components.

Google Maven holds onto all versions prior to API 27 and Google Play says that they’ll be packaged as “android.support.” But, all new development will take place on the AndroidX library, so Google Play recommends that you develop new projects here. If you have an existing project, they recommend that you migrate it over.

To further increase secure connections, Google Play has changed the user added CAs to not be trusted by default in the case of Android 7.0. They also require explicit user approval from apps to access the user account in Android 8.0.

For MetaData, Google now has a small MetaData on top of each APK so that each app release is officially verified by Google Play. They don’t allow apps with any deceptive, incorrect, or explicit metadata that isn’t pertinent to what the app is about. This entails every area of the app — the title, description, all images, and icons. They also don’t allow user testimonials in the app’s description any longer. Authentication is important for users to know that an app is legitimate, so they’re spending time to ensure that each app functions as advertised.

Here Are Google Play’s New Requirements for Texts & Images

Google Play store now allows 2–8 screenshots for each supported device, i.e., smartphones, tablets, Android T.V, Android Wear, etc. But, to publish your store listing, you have to upload at least two screenshots for each device type. It needs to either be a JPEG or 24-bit PNG (no alpha) with minimum dimensions of 320px and maximum dimensions of 3840px.

Screenshots aren’t the only images that need to be formatted. Google Play requires one splash screen for an iPhone display and one for an iPad display, both retina and non-retina displays. Whether you’re using a photo or video, dimensions should be 1024px by 500px. If you choose a video, make sure to use an individual video’s YouTube URL, not a YouTube playlist or channel URL. The video shouldn’t be longer than two minutes.

Google Play now requires icon images to fit into the new, standardized icon shape — the square with rounded corners known as a “squircle.” It needs to be hi-res, material icons used through Android M, and adaptive icons for Android O.

For your text:

Titles – Should be between 4 and 30 characters – But, the new limit was moved from 30 to 50 characters

Descriptions – The short description has an 80-character limit – The detailed description has a 4,000-character limit

Keywords – They’re required and the new version has a 500-character limit – Users can also fill in this field while updating the application version

Before Launching, Follow Google Play’s Checklist

Key Takeaways

  • Google Play changed API behavior
  • Android 5.0 implicit intents are no longer supported
  • Android 6.0 and higher has changes in Runtime permissions (app must request permission of a material, then approve permission before runtime)
  • Develop new projects on AndroidX library
  • There is now MetaData on top of each APK
  • There is new length requirements for, Titles (new 50-character limit), Descriptions (80-character limit), and Keywords (500-character limit)
  • There are new requirements for images
  • Icon must be the square with rounded edges — aka a “squircle”
  • Two screenshots per supported device type (smartphones, tablets, etc.)
  • One splash screen for iPhone and iPad screen displays
  • For videos, link to an individual video, not a playlist

Good Luck on Your Launch!

Galaxy Weblinks stays up to date on these developments so that our clients don’t have to do time-consuming, detailed research. That’s why our clients love partnering with us for mobile app development — we don’t leave them in the dark nor overload them with lengthy information. We provide overviews, outlines, and how-to guides so that clients can feel confident when updating their app.

Feel free to use our above checklist to keep yourself on track. If you have questions about this process, leave us a comment or contact us. If you have questions about other app topics, then browse our blog!

The flip side of Wellness apps

Contrary to popular belief wellness apps are not so wholesome after all.

Apart from the flaw in fundamental definition of wellness, it also brings along security and data privacy issues like other mainstream apps. The question may arise, is this digital equivalent of a wellness Guru really worth it?

There are over 160,000 wellness apps on the App Store. If you’re thinking of adding to that figure then let us break it down for you. Are wellness app really worth it?

Overdiagnose normal feelings

Mind.reading.device

An ensemble of gyroscope, pedometer, and HR monitor cannot tell how a person is feeling. These apps dive in not-so-accurate data curated from the app and the wearables to diagnose users of conditions they might not be having.

This case seems somewhat like Eliza the MIT bot from the 60s. Long before Google or Siri existed, Joseph Weizenbaum introduced the world to Eliza, a therapy bot. The bot was an NLP program which responded to people’s issues with a script prepared by psychologists but people who tested it believed that Eliza understood them.

Provides false sense of achievement

Animation of a hand feeding Sushi with social media branding on it

If you were to refer wellness related studies you’d find that most of the apps are not backed by evidence and other apps are just plain ineffective.

Dietary apps make the user feel as if they are losing weight but in reality, keeping track of the calories is of not much help. A research revealed that out of 2000 health apps, only 3-4 % of the apps gave scientifically proven results.

Sets unrealistic goals for users

people exercising in front of tv screens

In a competitive spirit users often attach their self worth with unrealistic goals defined for them by wellness apps. You should run a mile a day, you should eat less & drink more, you should walk in short strides, you should sleep less, et al.

Are these apps improving your lifestyle or telling you how to live? Is it really healthy to constantly question every little life choice you make?

Wellness apps claim that they have the goals uniquely tailored for each user. Are they really? A person who is fit but has asthma, can’t sprint 500 Meters the first week of training. Failing to do so, they’ll compare their health stats with other people. People with healthy set of lungs.

Encourages self-destructive behaviour

woman using her phone while running

Wellness apps are a dime a dozen and without any clinical approval, they’re just apps with lofty claims to make people’s lives better. To stand out from the crowd, some apps might even go as far to provide therapeutic interventions for the people who need real therapy.

According to American psychiatric association, there are documented cases of apps that recommend bipolar people to drink alcohol when manic.

Wrap up

Like other new and shiny things, the benefits of the wellness apps are balanced by some flaws. Flaws that may encourage bi-polar people to have a couple of lagers as a remedy.

Whether you’re using or building one of these apps, define your own wellness or your user’s wellness before diving in the development of one.

It’s surprisingly easy to get it wrong. Let us know what you think about wellness apps and if you want to talk about getting it right, then drop us a mail here.

All there’s to know about the new Swift UI 5.1 update

Apple in its annual WWDC made some game changing announcements like a new Mac Pro, an exclusive OS for iPad, iOS 13 release, new Apple tvOS and a Swift UI 5.1 update.

The Swift UI 5.1 update was overshadowed by these major product and software announcements. This new declarative UI goes a long way in making a developer’s life easy. That means you have a lot less code to deal with due to Swift 5.1 framework update.

What’s new in Swift UI 5.1?

Function builder

A custom attribute type, function builder is among the major features announced in the 5.1 update. This improve your code’s readability via ‘declarative UI’ approach. The need of a bunch of brackets gets eliminated, making your code less messy.

ABI stability

Now that Apple has improved ABI’s stability, swift code will directly work with a binary interface. This will reduce the application’s size. It will also result in easier code integration with newer language updates.

Opaque result type

Developers will surely like this one. Opaque types hide their internal details from the outside world and are only compatible when used explicitly. Also its data structure is not defined in an interface.

Other notable changes:

  • Drag and drop option will help in picking varied elements and drop them on any canvas
  • Rich notification
  • Live preview of the changes made in code
  • Dark mode support
  • Module stability enabling integration with future updates
  • Support of right to left languages like Arabic and Hebrew

Apple is on its toes. Fixing all the bugs and errors reported within the community. The Swift UI 5.1 update is an all-rounder package which improves on stability, interface, and security but still remains in Beta. Guess we’ll have to wait a little longer for a stable release.

What are your thoughts on this update and the future Swift UI? Get in a conversation with us here.