Blog

Understanding Retain Cycles in Swift: How to Avoid Memory Leaks 1024 1024 w@gner

Understanding Retain Cycles in Swift: How to Avoid Memory Leaks

In Swift, memory management is automatic thanks to Automatic Reference Counting (ARC). However, one of the most common pitfalls that developers face is the retain cycle (also known as a reference cycle), which can lead to memory leaks. In this post, we’ll explore what a retain cycle is, how it happens, and the best practices to avoid it in Swift.

What is a Retain Cycle?
A retain cycle occurs when two or more objects hold strong references to each other, preventing them from being deallocated. In Swift, ARC keeps track of the number of strong references each object has. When an object’s reference count drops to zero, it is deallocated. However, if two objects reference each other strongly, ARC can never reduce their reference count to zero, creating a memory leak.

Example of a Retain Cycle
Let’s look at a simple example to demonstrate how a retain cycle can occur:

class Person {
var name: String
var car: Car?
init(name: String) {
    self.name = name
}

deinit {
    print("\(name) is being deinitialized")
    }
}

class Car {
var model: String
var owner: Person?
init(model: String) {
    self.model = model
}

deinit {
    print("\(model) is being deinitialized")
    }
}

var john: Person? = Person(name: "John")
var tesla: Car? = Car(model: "Tesla Model S")

john?.car = tesla
tesla?.owner = john

// At this point, both john and tesla reference each other strongly, causing a retain cycle.
john = nil
tesla = nil
In this case, even though we set both john and tesla to nil, they are not deallocated. The Person instance holds a strong reference to the Car instance, and the Car instance holds a strong reference back to the Person. This circular reference creates a retain cycle, preventing ARC from cleaning up the memory.

How to Break Retain Cycles
To prevent retain cycles, Swift provides the weak and unowned reference types. These are used when one object should not increase the reference count of another.

Using weak References
A weak reference does not increase the reference count of the object it points to. This is commonly used when there’s the possibility that the reference might become nil at some point.

Here’s how you can fix the retain cycle in the above example by making the owner property in Car a weak reference:

class Car {
var model: String
weak var owner: Person? // Prevents a strong reference cycle
init(model: String) {
    self.model = model
}

deinit {
    print("\(model) is being deinitialized")
    }
}

Now, the reference count of the Person instance is not increased when it is assigned to the owner property of the Car. Therefore, when both john and tesla are set to nil, they are correctly deallocated, and no memory leak occurs.

Using unowned References
The unowned reference is similar to weak, but with one important difference: an unowned reference is never nil. It assumes that the referenced object will always be in memory as long as the unowned reference exists. If the object does get deallocated and the unowned reference tries to access it, the app will crash. unowned is used in cases where one object depends on another and the dependency is strong, but you want to avoid retain cycles.

Here’s an example of using unowned:

class Person {
var name: String
var car: Car?
init(name: String) {
    self.name = name
}

deinit {
    print("\(name) is being deinitialized")
    }
}

class Car {
var model: String
unowned var owner: Person // Assumes owner will always be valid (not nil)
init(model: String, owner: Person) {
    self.model = model
    self.owner = owner
}

deinit {
    print("\(model) is being deinitialized")
    }
}

var john: Person? = Person(name: "John")
var tesla: Car? = Car(model: "Tesla Model S", owner: john!)

john = nil // Both Person and Car will be deallocated without memory leaks.
In this case, because the owner reference is marked as unowned, it avoids the retain cycle and doesn’t allow nil. This should be used cautiously because trying to access an unowned reference after the object it refers to has been deallocated will result in a crash.

When to Use weak vs unowned

  • Use weak when the referenced object can be set to nil during its lifetime (like in delegate patterns).

  • Use unowned when the referenced object will always exist for at least as long as the object holding the reference. For example, in parent-child relationships where the child should not outlive the parent.

Conclusion
Retain cycles are a subtle but dangerous issue in Swift that can lead to memory leaks and decreased app performance. By understanding when and how retain cycles occur, and by using weak and unowned references where appropriate, you can avoid these pitfalls and ensure your app’s memory usage is efficient.

Make sure to be mindful of reference types in your code and regularly check for memory leaks, especially in cases involving closures and delegation patterns. With the right precautions, retain cycles can be effectively managed, keeping your apps running smoothly and efficiently.

Creating a Login Screen: UIKit vs. SwiftUI 1024 1024 w@gner

Creating a Login Screen: UIKit vs. SwiftUI

App development is made possible through a series of resources and tools used by developers. One of them is Flutter, an accessible option for various types of companies. Keep reading to learn more.
When developing iOS applications, one of the most common tasks is creating a login screen. This screen typically includes text fields for entering a username and password, labels for guiding the user, a button for submitting the information, a logo at the top, and a background image to enhance the design. Let's explore how to create this screen using two different frameworks: UIKit and SwiftUI.

UIKit Approach

UIKit has been the primary framework for building iOS applications for many years. It provides a more traditional approach where you manage the view hierarchy, constraints, and user interactions using UIViewController and related classes.
Here's a basic implementation of a login screen using UIKit programmatically:

import UIKit
class LoginViewController: UIViewController {
private let logoImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "logo"))
imageView.contentMode = .scaleAspectFit
return imageView
}()
private let usernameTextField: UITextField = {
let textField = UITextField()
textField.placeholder = "Username"
textField.borderStyle = .roundedRect
return textField
}()
private let passwordTextField: UITextField = {
let textField = UITextField()
textField.placeholder = "Password"
textField.borderStyle = .roundedRect
textField.isSecureTextEntry = true
return textField
}()
private let loginButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("Login", for: .normal)
button.addTarget(self, action: #selector(loginButtonTapped), for: .touchUpInside)
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)
setupLayout()
}
private func setupLayout() {
view.addSubview(logoImageView)
view.addSubview(usernameTextField)
view.addSubview(passwordTextField)
view.addSubview(loginButton)
logoImageView.translatesAutoresizingMaskIntoConstraints = false
usernameTextField.translatesAutoresizingMaskIntoConstraints = false
passwordTextField.translatesAutoresizingMaskIntoConstraints = false
loginButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
logoImageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
logoImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
logoImageView.widthAnchor.constraint(equalToConstant: 150),
logoImageView.heightAnchor.constraint(equalToConstant: 150),
usernameTextField.topAnchor.constraint(equalTo: logoImageView.bottomAnchor, constant: 40),
usernameTextField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
usernameTextField.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
passwordTextField.topAnchor.constraint(equalTo: usernameTextField.bottomAnchor, constant: 20),
passwordTextField.leadingAnchor.constraint(equalTo: usernameTextField.leadingAnchor),
passwordTextField.trailingAnchor.constraint(equalTo: usernameTextField.trailingAnchor),
loginButton.topAnchor.constraint(equalTo: passwordTextField.bottomAnchor, constant: 30),
loginButton.centerXAnchor.constraint(equalTo: view.centerXAnchor)
])
}
@objc private func loginButtonTapped() {
// Handle login action
}
}

Alternatively, you can use Interface Builder (IB) with .storyboard or .xib files to build this UI. The result will be similar in functionality but with a more visual design approach.

Pros of UIKit

  • Mature & Stable: UIKit has been around for a long time, with extensive documentation and community support.
  • Customizability: Offers a high degree of control over the UI components and layout.
  • Visual Tools: Using .storyboard or .xib, you can visually design your UI, which can be faster and more intuitive for some developers.

Cons of UIKit

  • Verbose Syntax: Even with .storyboard or .xib, you often need to write boilerplate code to manage view controllers, handle state, and update the UI.
  • Imperative UI: Requires you to manually update the UI based on state changes, leading to more boilerplate code.

SwiftUI Approach

SwiftUI represents a modern approach to building UIs with a declarative syntax. You describe the UI and its state, and SwiftUI takes care of the rest.
Here’s how you might create the same login screen using SwiftUI:

import SwiftUI
struct LoginView: View {
@State private var username: String = ""
@State private var password: String = ""
var body: some View {
ZStack {
Image("background")
.resizable()
.edgesIgnoringSafeArea(.all)
VStack(spacing: 20) {
Image("logo")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 150, height: 150)
TextField("Username", text: $username)
.padding()
.background(Color.white)
.cornerRadius(10)
.padding(.horizontal, 20)
SecureField("Password", text: $password)
.padding()
.background(Color.white)
.cornerRadius(10)
.padding(.horizontal, 20)
Button(action: {
// Handle login action
}) {
Text("Login")
.frame(maxWidth: .infinity)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
.padding(.horizontal, 20)
.padding(.top, 20)
}
}
}
}
struct LoginView_Previews: PreviewProvider {
static var previews: some View {
LoginView()
}
}

Pros of SwiftUI

  • Declarative Syntax: The UI code is more concise and easier to read. You describe what the UI should look like, and SwiftUI handles the rest.
  • Real-Time Previews: SwiftUI provides live previews in Xcode, making it easier to visualize changes.
  • State-Driven: SwiftUI’s state management integrates seamlessly with the UI, reducing the need for boilerplate code.

Cons of SwiftUI

  • Learning Curve: While easier to read, SwiftUI requires learning new concepts like declarative syntax, and it’s different from UIKit.
  • Limited Backward Compatibility: SwiftUI is only available from iOS 13 onwards, limiting its use in apps targeting older versions.

The Advantage of SwiftUI Even with Interface Builder

If you're used to using .storyboard or .xib files in UIKit, you might appreciate the visual design tools they offer. However, SwiftUI provides similar advantages without the need for a separate visual editor:

  • SwiftUI’s Canvas: Offers real-time previews as you code, which can be even more powerful than Interface Builder’s visual tools.
  • Declarative Code: Reduces the need for switching between code and interface files, making the development process smoother.
  • Unified Approach: Everything is in one place, meaning you don’t need to manage separate .storyboard or .xib files. This leads to fewer merge conflicts and simpler version control.

In essence, SwiftUI combines the ease of design you might enjoy with Interface Builder while offering the flexibility and power of a fully code-driven UI.

Conclusion

Both UIKit and SwiftUI have their strengths and weaknesses. UIKit is mature, stable, and offers extensive customization options, particularly if you prefer visual tools like .storyboard or .xib. On the other hand, SwiftUI brings a fresh, modern approach with a more concise and declarative syntax, offering similar visual feedback with its canvas previews.
Choosing Between UIKit and SwiftUI depends on your project requirements:

  • For newer projects or those targeting iOS 13 and above, SwiftUI offers faster development with a modern approach.
  • For projects requiring deep customization, backward compatibility, or integration with existing UIKit code, UIKit with or without Interface Builder may be more practical.

Regardless of which you choose, both are powerful tools that will help you create beautiful and functional UIs for your iOS apps. Happy coding! 🎨📱

Exploring Apple Intelligence: Integrating AI Tools into Your Swift Applications 1024 1024 w@gner

Exploring Apple Intelligence: Integrating AI Tools into Your Swift Applications

Exploring Apple Intelligence: Integrating AI Tools into Your Swift Applications

With the constant evolution of technology, Apple continues to expand its capabilities in the field of Artificial Intelligence (AI). The latest release is Apple Intelligence, a powerful and optimized platform for developers looking to elevate their apps by integrating intelligent and personalized features. In this post, we will explore how Apple Intelligence can be used in your Swift projects.

What is Apple Intelligence?

Apple Intelligence is Apple's latest offering that combines AI with machine learning (ML) to provide highly personalized and powerful solutions for both developers and users. In iOS 18, Apple Intelligence expands even further, bringing new features and capabilities to apps.

The key features that Apple Intelligence will offer in iOS 18 include:

  1. Core ML 4: The latest version of Core ML brings significant performance improvements to machine learning models and supports dynamic models, allowing apps to adapt models on the device in real time. Now, you can train and update models directly on the user's device without needing a cloud connection, making apps smarter and more responsive.

  2. Vision Pro and AR Enhancements: iOS 18 includes deeper integration between AI and Augmented Reality (AR). Using the Vision and RealityKit frameworks, developers can create advanced visual experiences such as 3D object tracking, gesture recognition, and real-time contextual interactions, enhancing the quality and personalization of AR experiences.

  3. Natural Language 3.0: The new version of the Natural Language framework allows for even more accurate and faster text analysis. With support for new languages and better accuracy in detecting sentiment, intent, and named entities, Natural Language 3.0 enables apps to better understand the context and emotion behind user messages, along with improved speech recognition and real-time transcription support.

  4. Dynamic Personalization with On-Device Learning: In iOS 18, Apple Intelligence includes advanced on-device learning capabilities, allowing apps to personalize their features based on user behavior and preferences over time. This improves privacy since personal data does not need to be sent to external servers, keeping the information on the user's device.

  5. Siri Enhanced with Contextual Intelligence: Siri in iOS 18 will be even more powerful, with improvements in context awareness. This allows developers to integrate more natural and personalized voice commands into their apps, along with new intelligent shortcuts based on user interactions and usage patterns.

  6. Advanced Anomaly Detection: iOS 18 introduces machine learning-based anomaly detection for apps that monitor large volumes of data. This technology can be used in health, security, and finance apps, allowing them to detect unusual or unexpected patterns that can trigger automatic alerts.

  7. Emotion and Sentiment Recognition in Images: Using the Vision and Core ML frameworks, developers can now integrate advanced emotion recognition in images and videos. This opens up possibilities for apps that analyze facial expressions and human emotions, such as in wellness or entertainment apps.

  8. Privacy and Security Powered by AI: Apple continues its commitment to privacy by enabling AI models to perform complex tasks directly on the device. This means that sensitive data, such as text or image analyses, never needs to leave the device, helping protect user privacy while still offering intelligent insights.


How to Integrate Apple Intelligence in Swift Apps

If you’re developing in Swift, integrating Apple Intelligence can be a relatively straightforward process thanks to frameworks like Core ML. Below, we'll walk through how you can start using AI in your app.

1. Incorporating Pre-Trained Models (Core ML)

Core ML is the primary framework for incorporating machine learning models into Apple apps. With it, you can use pre-trained models or train your own.

Here’s an example of using an image classification model in Swift:

Example 1

This example demonstrates how to load a pre-trained image classification model and use it to make real-time predictions, integrating with the Vision framework for image analysis.

2. Text Analysis with the Natural Language Framework

The Natural Language framework offers efficient text processing capabilities. You can, for instance, analyze sentiments, identify named entities, or classify the language of the text.

Here’s an example of sentiment analysis in Swift:

Example 2

Here, the Natural Language framework is used to classify the sentiment of the provided text. Depending on the content, the app can dynamically react, providing feedback to the user.

Using Siri and Smart Shortcuts

Apple Intelligence is also deeply integrated with Siri, allowing your apps to offer personalized voice commands and smart shortcuts. Using the Intents framework in Swift, you can create shortcuts that make it easier for users to interact with your app via voice commands.

Conclusion

Apple Intelligence is a powerful tool for any developer looking to implement advanced AI functionalities into their apps. By developing in Swift, you can take full advantage of this platform’s capabilities, from image analysis to text comprehension, creating smarter, more personalized, and responsive experiences.

Now is the perfect time to explore what Apple Intelligence can do for you and your users! ✨🚀


Learn more.
https://www.apple.com/apple-intelligence/
https://developer.apple.com/apple-intelligence/

Growth of the mobile market 1024 1024 assiswagner

Growth of the mobile market

The growth of the mobile market is no surprise to anyone, as it is fully perceptible that people are increasingly connected to smartphones to carry out their activities.

Today, mobile resources are no longer limited to just phone calls and text messages, but rather carrying all work, study, family, and friends' information in the palm of your hand, which has become indispensable, especially in pandemic times.

During the pandemic, the e-commerce sector grew by 75%. Unable to leave their homes, people began to buy, sell, study, and work online. This is also known as the "new normal." It is impossible to talk about market growth without mentioning statistics. Here are the main ones.

Growth and Size Statistics of Mobile Marketing

  • Smartphones represent 77.5% of the global mobile device market.
  • In 2021, Android remained the leading mobile operating system worldwide, with 71.93% of the market.
  • In 2019, PC and mobile usage became uniform. In 2016, mobile accounted for only 40% of daily usage time.
  • The growth in mobile usage is due to affordable mobile phones compared to more expensive laptop options.

Global Demand Statistics for Mobile Advertising

  • In 2019, mobile advertising spending totaled 189 billion dollars and is expected to surpass 240 billion dollars by 2022.
  • Although mobile advertising has shown rapid growth in recent years, it is expected that this growth will slow down by 10.4% by the end of 2022.
  • In 2020, the USA was the largest global mobile advertising market, resulting in 120.4 billion dollars.
  • By 2024, the US mobile advertising market is expected to reach 145.26 billion dollars.
  • The second-largest mobile advertising market was China, with a value of 72.2 billion dollars in 2020.

Smartphone App Usage Statistics

  • The most popular type of app is communication apps, followed by gaming and entertainment apps.
  • Word-of-mouth recommendations strongly influence users on which apps they should download.
  • Around 76% of people use the Internet browser the most across all mobile apps they own.
  • In 2020, 57% of Internet users in the US accessed Google Maps on their mobile phones.
  • YouTube was the most used mobile app in 2020, with 72.8% of Internet users.
  • The Disney+ app was the most profitable on the Apple store for iPhone in 2020, generating over 18.33 million dollars in revenue from iOS users.
  • Tinder was the second highest-grossing app in 2020, with 27.6 million dollars in revenue from users.
  • The video app TikTok was the second most downloaded app in 2020, resulting in about 3.2 million downloads.
  • The popularity of Android apps also gained traction. Coin Master was the most profitable Android app of 2020, earning 62.9 million dollars.
  • Following Coin Master was Candy Crush Saga, with 29.01 million dollars in revenue.
  • 16% of women say that Instagram is an app they could not live without.
  • On the other hand, 10% of men said they would be bothered if they didn't have YouTube.

Mobile Entertainment Statistics

  • In the last quarter of 2019, adults in the US spent an average of seven minutes per day watching videos through mobile apps, four minutes less than in the first quarter of 2019.
  • The average time spent watching TV was just under four hours, a 7% year-over-year decline.
  • Meanwhile, video consumption through a TV-connected device grew by 17% in 2019.
  • In 2020, 30.8% of people used Internet-connected TVs to stream videos, while 16.3% used mobile devices.
  • In September 2019, more than 163.76 million mobile users opened YouTube, making it the most popular music and video mobile app in the United States.
  • Netflix ranked second, with 45.66 million active mobile users per month.
  • Spotify reached 23.7% of mobile users in 2019.
  • In 2020, 31% of mobile users opened Spotify to listen to podcasts.
  • A slightly less popular app for listening to podcasts was Apple Podcasts, with a 22% share of listeners.
  • The most popular devices for listening to podcasts include smartphones, tablets, or other mobile devices.

Mobile Shopping Statistics

  • In 2020, e-commerce spending in the US reached 47.8 billion dollars, with 31% of retail spending made on mobile devices.
  • In 2019, mobile e-commerce spending reached 39 billion dollars just in the US.
  • Additionally, in 2019, 57% of people said they searched for a mobile retail app to see more information about a product or service.
  • Of the 57% of people who searched for products, 51% made a purchase on a mobile retail app.
  • However, only 28% of people used a mobile wallet to pay for their products, demonstrating hesitation in fully committing to mobile payment services.
  • Tablets had a conversion rate of 3.32% in 2020.
  • The most common reason people use mobile devices in stores is to compare prices of products offered by different retailers.
  • In 2020, the value of in-store mobile payments reached 503 billion dollars.
  • In 2019, 28% of Americans had used a mobile wallet.
  • Additionally, 51% stated they had never used a mobile wallet and were not interested in trying it.
  • The biggest reason for not wanting to try mobile wallets is security concerns and not knowing which stores accept them.

Conclusion

The numbers don't lie, and they indicate how much the mobile market is in constant expansion. This means that people are increasingly connected to their devices, as they offer a lot of convenience and quick solutions to various issues, saving the precious time we have.

The expectation is that these numbers will increase even more in the coming years. Therefore, companies that aim for a grand future need to adapt to e-commerce, digital marketing, and app-based solutions.

Do you have a company and need to develop a custom app? We can help you! Contact us!

Everything you need to know about iOS 15 500 300 assiswagner

Everything you need to know about iOS 15

A global consumer desire, iPhones stand out due to their high level of quality compared to the competition. With increasingly complete versions and updates of the iOS system, each new release drives the public crazy with new features.

After all, what can still be improved in such a complete system?

In June 2021, Apple introduced the latest version of its operating system, iOS 15, which features:

  • New FaceTime call features;
  • Tools to reduce distractions;
  • A new notifications experience;
  • Additional privacy features;
  • Complete redesigns for Safari;
  • Weather and Maps;
  • And much more.

New Features in iOS 15

Among the main new features of iOS 15 are:

Staying Focused on Your Activities

To reduce distraction, a notification summary gathers notifications for delivery at an appropriate time and organizes notifications by priority.

Focus is a new feature that can filter notifications and apps based on what the user wants to focus on at a given time. When a user's focus is blocking incoming notifications, their status will be displayed in messages.

iOS suggests a focus for different occasions, such as work hours or sleep, using on-device intelligence, but users can also create a custom focus. When focus is set on one device, it automatically applies to other Apple devices.

Safari Navigation

Safari features a completely new design. The controls are now easier to reach with one hand and give more focus to the content of a web page.

There is a new compact tab bar that floats at the bottom of the screen so users can swipe between tabs and easily access them at any time across all devices. There is also a customizable homepage and web extensions for the first time.

The Maps app now offers a new 3D view in cities with significantly enhanced details, showing buildings, crosswalks, bike lanes, and more.

There is also a new city driving experience with enhanced public transit features such as pinned favorite lines, departure notifications, and walking routes.

Video Calls

iOS 15 brings voice isolation and spatial audio to FaceTime calls so voices sound as if they are coming from where the person is located on the screen.

FaceTime also supports Portrait mode and offers a new grid view to see more faces at once.

SharePlay is a new feature that allows users to share media together in sync during a FaceTime call. Users can also generate shareable links for a scheduled FaceTime call, which can also be opened on Android and Windows devices.

Searches and Location

Live Text is a new feature that uses on-device intelligence to recognize text in a photo that users can search, highlight, and copy.

Spotlight can now search photos by location, people, scenes, objects, and text, and also offers web image searches and richer results for actors, musicians, TV shows, and movies.

Privacy

iOS 15 also introduces new privacy measures, such as processing Siri requests directly on the iPhone, which has the added benefit of better response time, and Mail Privacy Protection to prevent senders from knowing if an email has been opened.

There is also a new privacy report feature that shows how often apps use the permissions granted to them.

Others

There are also dozens of tweaks and changes for other apps, such as user-created tags, mentions, and an activity view in the Notes app, Trends, Walking Steadiness, and a new sharing tab in the Health app.

How to Download and Install iOS 15

iOS 15 is compatible with the iPhone 6S and later, meaning it works on all devices that can run iOS 14. Currently, iOS 15 is available only as a developer preview beta version.

Registered developers can download the iOS 15 beta profile from the Apple Developer Center, and once the profile is installed, beta updates will be available over the air.

Throughout the iOS 15 testing period, which will last several months, Apple will refine the new features of the operating system and fix bugs before its release. Developers will also be able to use this beta testing period to support the new operating system and build new iOS 15 features into their apps.

Android 12 launched 500 300 assiswagner

Android 12 launched

The tech giant Google has announced Android 12, which is promoting an updated UI and many other new features. However, the update is expected to be ready only by the end of the year in its final version.

Some users can download the Android 12 beta now, including anyone with a Pixel 3 or later, as well as owners of the Xiaomi Mi 11, OnePlus 9, and some other similar models.

If you have another Android phone, you'll likely have to wait a bit longer, as Android 12 needs to be adapted to the phone before it can run, but the wait will be worth it!

What's New in Android 12

Android 12 is the 2021 update to Google's Android operating system, based on Android 11 released in 2020. Google describes this update as the biggest design change in Android's history.

Updated UI

Google has announced a new Material Design language for Android 12, called Material You, which is a revamp of the entire UI across the operating system. The current beta brings more rounded buttons, more varied colors, smoother movements and animations, and much more.

The company calls this color extraction, where you can choose a wallpaper and the system will automatically apply the dominant, complementary, and best-looking colors to the rest of the UI, including the notification shade, lock screen, and volume controls.

Widgets have also been redesigned, looking much more rounded this time. Due to iOS 14 introducing widgets last year, it made sense for Android 12 to see a redesign in this area as well.

Privacy and Security

This year, Google has made it a point to ensure that privacy is at the heart of Android 12. The Android Private Compute Core is the engine behind Android 12's privacy features, ensuring that apps and the phone adhere to the privacy settings enabled by you.

The new privacy dashboard provides an overview of apps using the phone's location, camera, contacts, and more. A nice touch here is a simple overview in the form of a pie chart, showing what apps have accessed in the last 24 hours.

The notification center also has a quick toggle to disable all features of the phone that an app is using. For example, if Facebook is using the microphone while you're using another app, this part of the notification center will explicitly show that Facebook is using the microphone. Pressing this will disable its use in Facebook and other apps, if desired.

You can also choose to provide only an approximate location for some apps, like weather apps, which don't need to know exactly where you are.

And with features like Live Caption, Now Playing, and Smart Reply, all audio and language processing happens on your device, so the data isn't sent elsewhere.

There are also locked folders available in apps, allowing you to lock a specific folder with a fingerprint, and there's the ability to unlock a Chromebook using your phone. 

New Features

When pressed, the power button now launches Google Assistant, a much easier method to call up the service for a query when needed.

A new integrated remote control is now also standard in Android 12, so if you have a TV that runs on Android, or just a Chromecast, you can use your phone to watch your favorite shows.

Compatibility

Google has confirmed that it will prepare Android 12 to be more flexible with third-party app stores and installers like the Amazon App Store, APKUpdater, and Samsung Galaxy Apps.

As for smartphone models, Android 12 will likely be released on most models from the past two years. However, it is guaranteed to arrive on all modern Pixel devices, likely starting from the Pixel 3, as these models support the beta.

Flutter: Your go-to toolkit for app development 500 300 assiswagner

Flutter: Your go-to toolkit for app development

App development is made possible through a series of resources and tools used by developers. One of them is Flutter, an accessible option for various types of companies. Keep reading to learn more.

What is Flutter?

According to the official Flutter pages, Flutter is Google's portable UI toolkit for creating elegant mobile, web, and desktop apps, natively compiled from a single codebase.

Flutter works with existing code and is used freely and openly by developers and organizations worldwide. It was first acquired by Google in 2013 and has always worked with tech giants.

What programming languages does Flutter use?

Flutter uses the programming languages C++, C, Dart, and Skia Graphics Engine and has recently become a major player in mobile app production.

Current use of Flutter

Although Flutter is still getting established, mega organizations like Alibaba (one of the leading online B2B marketplaces) and Tencent (which holds the record for the largest Chinese online community) have already adopted the technology.

Google Ads functionality also uses Flutter, and Google itself is using the Flutter architecture to build its anticipated future operating system, Fuchsia.

Advantages and Disadvantages of Flutter

Advantages:

  • Faster app development timeline
  • Hot reload feature
  • Elegant user interfaces
  • Fantastic community support
  • Low-cost app development

Disadvantages:

  • Larger app size
  • Newer framework ecosystem
  • Relatively new job market
  • Code comparison in Flutter and Kotlin

Conclusion

For mobile app development, all frameworks and programming languages have their ups and downs. But for startups or companies looking to keep costs relatively low while building their MVP, Flutter is a great choice.

Need to develop an Android app?

Now that you know the programming resources and their characteristics, you are surely ready to develop your own.

Talk to us, we can help you with this challenge.