One of the key challenges you face as a developer is how to adjust your app’s user interface and optimization among varying display sizes and operating systems. The iOS simulator in Xcode makes the job easy, as you can effectively replicate any app environments right from your Mac.

Moreover, as the global market share for Apple’s iOS currently stands at nearly 18% as of May 2022, knowledge of how to use simulator apps is crucial for any iOS developer.  

This article will walk you through the benefits and use cases of the Xcode iOS simulator — a game-changer for the iOS app development industry and a must-have tool for iOS developers. So let’s explore how to boost your productivity with Xcode Simulator.  

In this post: 

  1. What Is Xcode?
  2. What Is the Xcode iOS Simulator?
  3. Real Devices vs. Simulators
  4. How to Set Up the iOS Simulator in Xcode
  5. Adjusting Simulator Size
  6. Setting a Location or Route
  7. Simulating a Memory Warning
  8. Slowing Animations
  9. Simulating Apple Pay
  10. Debugging View Frames
  11. Adding Photos or Videos
  12. Using Status Bar Features
  13. Simulating the Shake Gesture
  14. Taking a Screenshot
  15. Recording a Video
  16. Managing Privacy Permissions
  17. Need Professional Assistance?
  18. Summary

What Is Xcode?

Xcode is an integrated development environment (IDE) designed for Apple’s macOS. The IDE lets you use Command Line Tools (CLT), similar to a UNIX-style app development environment. 

In the simplest analogy, you can use Xcode similar to a pen and paper to design, write, and develop apps for the iOS system. Xcode brings together every tool and functionality you need for app development — a build system, text editor, and compiler. Writing, compiling, and debugging functionalities work seamlessly in the Xcode IDE. 

What Is the Xcode iOS Simulator?

The Xcode Simulator app is an integral part of the Xcode environment. Keeping definitions in mind, you may ask how Xcode Simulator can help in your app development.

Simply put, Simulator lets you mimic the user interface of a device for which you are developing an app. With the first stable version released in late 2003, Xcode Simulator helps you develop apps for the entire iOS ecosystem, including iOS, macOS, iPadOS, tvOS, and watchOS. 

You can use the iOS simulator to run apps directly from your macOS kernel and replicate the experience of your end-level users to a great extent. The convenience is so high that almost every app developer nowadays runs and tests apps on a simulator as part of a daily routine.

But does a simulator give you the same experience as running the app on a physical device? 

Real Devices vs. Simulators

Although a simulator goes a long way to replicate the user experience of a physical device, it has certain limitations. Here are a few differences to keep in mind: 

  • Computation and network. Real devices usually have lower processing power and hardware capabilities than Xcode Simulator because the simulator will have access to your Mac’s processor and memory management. 

Also, compared to your iPhone, you will get a more stable network on your MacBook. You may find it difficult to simulate your app’s behavior during real-life network fluctuations if you use a simulator. 

  • Display. The display size, resolution, and color settings of your MacBook will not be the same as your other physical devices, such as an iPhone or Apple Watch. As a result, your images and text may look blurry or over-sharpened. 

The iOS simulator in Xcode has specific tools to mitigate this effect as much as possible. We will check that out too in this article. 

  • Framework differences. Simulators may not support a few of the integrated functions native to a device’s framework. For example, you will not get the following frameworks to run in an iOS simulator:

  • MessageUI

  • ARKit

  • IOSurface

  • HomeKit

Xcode Simulator has included a complete list of differences and unsupported frameworks in its documentation and Help section. By navigating from the Simulator menu, you can check that out: Help > Simulator Help

  • Hardware limitations. Finally, you will have to deal with some hardware differences when opting for a simulator instead of a real device. The hardware differences are mostly related to the use of sensors and input systems. For instance, you will not get to use the following components in a simulator: 

  • Ambient light sensors that help adjust your device’s display brightness depending on the environment’s lighting 

  • Cameras

  • Bluetooth 

  • Accelerometers, gyroscopes, and similar motion sensors that detect your device’s motion and adjust the app’s behavior accordingly 

  • Proximity sensors 

  • Barometers and similar environmental sensors 

  • Audio input (You can, however, use Siri to input audio in a simulator on Mac by navigating to Hardware > Siri.) 

Knowing these differences and limitations will help you choose between a simulator and a physical device to try out your intended features. You can use a device to test a few features and a simulator for the supported ones.  

Having established the difference, let’s see how you can configure the iOS simulator in Xcode

How to Set Up the iOS Simulator in Xcode

To use the Xcode iOS simulator, you will first need to set up and configure it properly. Here is a step-by-step guide on how to do it. While Xcode 13 is the latest version, we have used Xcode 12 in this tutorial due to greater availability.  

  • Step 1. Open Xcode 12. However, you may choose any version of Xcode, as the basic process is similar. 

  • Step 2. Navigate to Window from the menu. 

  • Step 3. Select Devices and Simulators from the Xcode menu. It will open a list of supported devices and simulators in Xcode. 

Xcode menu

  • Step 4. Select the Simulator tab, which lets you add or remove special simulators. You can also choose the required OS version and device size, then pair the device with iWatch and the other relevant settings from the simulator option.  

Simulator tab

  • Step 5. Now, it’s time to run the simulator based on your built codes. Simply click the Run or Play button in the Xcode interface after choosing the intended simulator.  

 Run or Play button in the Xcode interface

  • Step 6. Xcode will then compile your app and validate the code for any errors. If the code has no errors, it will run the app on the selected iOS simulator.

Now, we will take a more detailed look at configuring Xcode Simulator to make it perform better in replicating the app environment of an iOS device

Adjusting Simulator Size

The Windows menu of Xcode Simulator will let you choose different scaling options to adjust the size of the simulator for your selected iOS device. You will have four options to choose from, as shown below. 

  • Physical size. Select the physical size if you want the Simulator window to match your device’s actual display size. This can accurately show you how your app would appear in various screen sizes. 

  • Point accurate. This option will make the window appear the same sizes across various windows. Therefore, what you will see on a smaller iPhone display will remain the same when you see it on a larger Mac display.  

  • Pixel accurate. This mode will keep the total pixel count the same across all devices. Thus, the larger screen of your Mac may display a pixelated image compared to an iPhone display due to less pixel density. 

  • Fit screen. The “fit screen” function will make your Mac window match your iPhone’s display size. 

You may also use this shortcut to choose the screen size: ⌘ + 1-4

Setting a Location or Route

You will often need your iOS app to demonstrate a location-specific behavior. Do it easily with the Xcode iPhone simulator. You may either set a specific fixed location within Simulator or send locations and route-planning from your Mac to Simulator. 

Here are two more location-related options you can set. 

Present Location

You can use one of the following present locations from the Features menu: 

  • Apple 
  • City Bicycle Ride 
  • City Run
  • Freeway Drive

No Location

Alternatively, if your iOS app does not need any location specifications, you can instead choose the “no location” option. To set Xcode Simulator to no location, choose Simulator > Features > Location > None.

Set Xcode Simulator to no location

Simulating a Memory Warning

A memory warning helps you understand whether your app uses too much memory and might exceed the device’s capacity. You will find the option in the Debug menu. 

Once enabled, it will send low-memory warning notifications to your app. 

Slowing Animations

Slow animation testing is a crucial feature of Xcode Simulator that lets you carefully see whether an animation is playing correctly. You can find it from the Debug menu. After enabling it, you can see exactly how the elements move or change. 

Slow animation testing

You can easily identify any problems related to rendering, skipped frames, and performance issues. Clicking it again will return it to normal speed. A checkmark will indicate the animation speed.

Simulating Apple Pays

Apple Pay allows users to make payments on the go directly from their iOS and watchOS systems. You can test this functionality with Xcode Simulator to determine whether the payment flow works as intended.

First, present a payment sheet from your app, and then choose Authorize Apple Pay from the Hardware menu. 

Then, use the following command lines to retrieve payment details and data from the payment sheet and create an empty encrypted blob. 

paymentAuthorizationControllerWillAuthorizePayment,
and 
paymentAuthorizationControllerDidAuthorizePayment

Debugging View Frames

Frame debugging helps you find out whether the view of each frame is correctly aligned. You can customize your view using Xcode Simulator to replicate the view you will get for each app frame. 

Debugging View Frames

Follow this path to enable the feature: 

Xcode > Debug > Debug View > Show View Frame 

Adding Photos or Videos

Xcode Simulator for iOS lets you import photos, videos, and contacts to your device’s library. You can also import contacts in vCard format. 

To enable this, open Terminal and enter the following command lines

simctl addmedia [... ]
xcrun simctl addmedia booted ~/Desktop/test.png

Using Status Bar Features

There are two major status bar features you can test:

Toggle In-Call Status Bar

The in-call status bar helps you see how your app’s interface will look during a call. Access this feature from the Hardware menu. You can toggle it between a normal state or an in-call state, including when a FaceTime call is in progress. 

Change Bar Options

The “change bar” options let you ignore and override the typical status bar status. Usually, your app would display the battery and network statuses as full, which you can change using Simulator. 

Simulating the Shake Gesture

Do you need to shake your Mac to test the shake gesture feature physically? No! Thanks to Xcode Simulator, you can enable the shake feature from the Simulator menu and see what the users would experience when they try to provide feedback with a shake gesture. 

Taking a Screenshot

You may need your app screenshots for many purposes, including submitting it to the App Store or promoting it on social media. You can take a screenshot using the following command:

xcrun simctl io Demo screenshot screenshot.png --type="png"

It will take a screenshot of the current screen and save it as a .png file. You can also use Option + Cmd + S to take a screenshot, as well as the SaveScreen button.

Taking a Screenshot

SaveScreen button.

Recording a Video

Having a video of your app can be very useful in certain situations, especially if it shows how to use it. Use the following command lines to start recording in Xcode Simulator: 

xcrun simctl io Demo recordVideo Video.mov --codec="h264"

Once you are done, press Control+C to stop recording. 

Managing Privacy Permissions

You can use the simctl subcommands to manage and issue privacy permissions. You can modify the following permission parameters: 

  • Grant
  • Revoke
  • Reset 

Here’s how the command may look: 

simctl privacy []

So, if you are granting location permission, it would look something like the following command line: 

xcrun simctl privacy booted grant location com.example.app

Need Professional Assistance?

Geniusee develops products and services and provides consultancy and support for various clients and partners. The expert tech company has completed over 100 projects on time and within the budgets in various business domains. Geniusee’s versatile tech team is proficient in 64 actively used technologies. They also have dedicated teams to support your iOS app development needs. 

Summary

Xcode helps you avoid potential disruptions that may hamper your iOS app development experience. You can quickly get into the flow and experience what a typical user would see. Xcode enables app developers to test apps for the iOS ecosystem right from their Mac computers, free of cost.  

Need assistance with service and product development? Reach out to the Geniusee professionals.