You can do all of this without external tools. Take a screenshot An easy way. For taking a screenshot, I usually launch an app in the Simulator and press ⌘ - command + s or File New Screen Shot. The screenshot will be saved to your Desktop. Xcrun is a tool Apple provided to run any tool inside Xcode from the command line. Apr 12, 2020 Native iOS apps can be developed only on Mac. You can write code even in Windows or Linux, but you can’t build and sign it there. Non-native platforms, like Flutter or React Native, won’t make iOS builds without Mac either. Storyboards can be edited only in Xcode, so development without Xcode means development without Storyboards. With the release of Xcode 11.4, Apple has given us the ability to test push notifications in the simulator. Before this, testing push notifications required using a physical device and a lot of extra work. In this post, we are going to go over a few of the ways you can test push notifications on your simulator without ever having to involve an actual device, starting with the simplest path.
Testing push notifications in the iOS simulator make it a lot easier to add support for remote notifications. You often need to iterate a lot to verify that your code is working as expected.
Up until Xcode 11.4, we had to work with 3rd party applications like NWPusher and an actual device to test features like Rich Notifications. Although that worked quite well, it’s always nicer to iterate fast on the iOS simulator. Xcode 11.4 makes this possible with a newly added simctl
command. Let’s dive in!
- I don’t do much iOS development, but I do use the iOS Simulator for testing web applications. (Which, by the way, is slow and not ideal, but it’s the only way I’ve found to catch certain quirks specific to Safari on iOS.) Launching the Simulator, though, always requires opening Xcode and going to Developer Tools.
- Run your app with expo-cli and press i from the command line or Run on iOS simulator from the browser-based DevTools UI. You may get a warning about needing to accept the Xcode license. Run the command that it suggests. Open your app again, success! If no, please seek help on StackOverflow, Google, or the Expo-CLI section of the forums.
Enable permission to use push notifications
Before we start diving into the testing of remote push notifications it’s important to make sure you’ve got the right permissions for receiving notifications on the iOS simulator.
Otherwise, you could end up debugging to figure out why the notification is not showing up only realizing it’s caused due to missing permissions.
Sending a push notification to the iOS simulator from the terminal
The easiest way of testing simple push notifications is by making use of Poes. It’s a simple command-line tool that adds a wrapper around the new simctl push
command.
You can install Poes using Mint:
After which you can easily send a notification as follows:
This takes away the hassle of creating a payload JSON file yourself and allows you to iterate fast while testing push notifications in your app.
Poes makes use of the new xcrun simctl push
command and adds a small wrapper around it to generate the JSON payload based on input parameters. To fully understand what this means, I’ll explain to you how you could be testing push notifications without Poes.
Testing push notifications using the Xcode command-line tools
The Xcode command-line tools allow you to work with the simulator from the terminal. You can launch simulators, trigger universal links, and more. One of those commands allows you to send a push notification to the iOS simulator:
The command requires you to pass in a few arguments:
- <device>
Simply set this to booted to use the open simulator. You can also use a device identifier which you could get with thexcrun simctl list devices | grep Booted
command. - <bundle identifier>
Set this to the bundle identifier of the app you’re testing push notifications for. - <json file>
This should point to a JSON file on disk containing the push notification details. You could also use stdin to provide the JSON content.
An example of execution could look as follows:
In this example, we’re using the following JSON saved to a payload.json
file:
You can read more about the possibilities and the structure of a payload JSON on the official Apple documentation page Creating the Remote Notification Payload.
Testing push notifications using an APNS file
Another option for testing push notifications on the iOS simulator is by dragging an APNS file into the iOS simulator.
This APNS file looks almost the same as the JSON payload file but adds a Simulator Target Bundle
key describing the bundle identifier to use:
Sharing APNS files in your repository
Committing APNS files to your repository makes it easy for you and your colleagues to test common push notifications for your app. You can save a configuration for each type of notification. For example, we decided to save a configuration for the Collect by WeTransfer app to send a push notification containing an image:
Every time we need to test this specific push notification we can simply drag the APNS file into the simulator. Note that we’re making use of Rich Notifications here of which the details are explained in the Rich notifications on iOS explained in Swift blog post.
Note: it seems that the above mutable-content testing is currently not working in Xcode 11.4, likely due to a bug which, hopefully, gets fixed in a future Xcode update.
Conclusion
Testing push notifications on the iOS simulator have now become a simple thing to do. There are three different ways of triggering a remote push notification:
- Using the Poes command-line tool to easily generate the JSON payload
- Referencing a local JSON payload file
- Dragging an APNS file into the simulator
Ios Simulator Without Xcode Free
Poes can be really easy for quick testing while an APNS file added to your repository could make it easy to iterate on common push notifications for your app.
If you like to improve your workflow, even more, check out the workflow category page. Feel free to contact me or tweet to me on Twitter if you have any additional tips or feedback.
Thanks!
Important:The information in this document is deprecated in Xcode 9. For Xcode 9 and later, see Simulator Help by choosing Help > Simulator Help in Simulator.
Simulator app, available within Xcode, presents the iPhone, iPad, or Apple Watch user interface in a window on your Mac computer. You interact with Simulator by using the keyboard and the mouse to emulate taps, device rotation, and other user actions.
The chapter presents the basics of using Simulator. You can perform these steps using your own iOS app or, if you do not have an app to use, with the HelloWorld sample code. For more detailed information on interacting with Simulator and using it to test and debug your apps, refer to the later chapters in this guide.
Access Simulator from Xcode
There are two different ways to access Simulator through Xcode. The first way is to run your app in Simulator, and the second way is to launch Simulator without running an app.
Running Your iOS App
When testing an app in Simulator, it is easiest to launch and run your app in Simulator directly from your Xcode project. To run your app in Simulator, choose an iOS simulator—for example, iPhone 6 Plus, iPad Air, or iPhone 6 + Apple Watch - 38mm—from the Xcode scheme pop-up menu, and click Run. Xcode builds your project and then launches the most recent version of your app running in Simulator on your Mac screen, as shown in Figure 1-1.
Note: If you are testing an app with a deployment target of iPad, you can test only on a simulated iPad. If you are testing an app with a deployment target of iPhone or universal, you can test on either a simulated iPhone or a simulated iPad.
Running Your watchOS App
To run your WatckKit app, choose a combination of an iOS device and watchOS device from the Xcode scheme pop-up menu. For example, to run the watch app in a 38mm watch paired with an iPhone 6, choose 'iPhone 6 + Apple Watch - 38mm' from the scheme pop-up menu.
Running the WatchKit target launches two simulators, one for the iOS device and one for the watchOS device. Figure 1-2 shows an iPhone 6 and a 42mm watch running in two different simulators.
Running Your tvOS App
To run your tvOS App, choose a tvOS device from the Xcode scheme pop-up menu. Running the tvOS target launches the most recent version of your app in a simulated new Apple TV device, as shown in Figure 1-3.
Launching Simulator Without Running an App
At times, you may want to launch Simulator without running an app. This approach is helpful if you want to test how your app launches from the Home screen of a device or if you want to test a web app in Safari on a simulated iOS device.
To launch a Simulator without running an app
Launch Xcode.
Do one of the following:
Choose Xcode > Open Developer Tool > Simulator.
Control-click the Xcode icon in the Dock, and from the shortcut menu, choose Open Developer Tool > Simulator.
To launch a watchOS Simulator without running an app
Launch Xcode.
Do one of the following:
Choose Xcode > Open Developer Tool > Simulator (watchOS).
Control-click the Xcode icon in the Dock, and from the shortcut menu, choose Open Developer Tool > Simulator (watchOS).
Simulator opens and displays the Home screen of whichever simulated device was last used.
View the Installed Apps
From the Home screen, you have access to all of the apps that are installed in the simulation environment. There are two ways to access the Home screen in Simulator from your app:
Press Command-Shift-H.
Choose Hardware > Home.
Use the installed apps to test your app’s interaction with them. For example, if you are testing a game, you can use Simulator to ensure that the game is using Game Center correctly.
iOS Device Home Screen
Much like the Home screen on an iOS device, the simulator’s iOS Home screen has multiple pages. After clicking the Home button (or accessing the Home screen through the Hardware menu), you arrive at the second page of the Home screen. To get to the first page, where all of the preinstalled apps are found, swipe to the first Home screen by dragging to the right on the simulator screen.
On the Home screen, you see that all of the apps that have been preloaded into Simulator. See iOS Device Home Screen.
The apps that you see on the Home screen are specific to the iOS device simulation environment. Because Passbook and the Health app are available only for the iPhone, these apps don’t appear if you are simulating a legacy device or an unsupported device type.
watchOS Device Home Screen
The Home screen for a simulated watchOS device behaves the same as it would on an actual device. You can click and drag to simulate the finger dragging around the screen and launch an app by clicking on it. Figure 1-4 shows the home screen of a 42mm watch with a developer app, the Lister sample code.
Use Safari to Test Web Apps
From the Home screen, you can access Safari within Simulator. Use Safari to test your iOS web apps directly on your Mac.
From the Home screen, click Safari.
In the address field in Safari, type the URL of your web app and press the Return key.
If your Mac is connected to the Internet, it displays the mobile version of the URL you specified. For example, type apple.com
into the address field and press Return. Safari displays the Apple website. See Figure 1-6.
Use Maps to Simulate Location Awareness
Simulator provides tools to assist you in debugging your apps. One of the many features you can debug in Simulator is location awareness within your app. Set a location by choosing Debug > Location > location of choice. The menu has items to simulate a static location or following a route.
A simulated watchOS device with the location set to None checks the paired iPhone device for the location.
You can specify your own location, which can be seen in the Maps app.
From the Home screen, click Maps.
Choose Debug > Location > Custom Location.
In the window that appears, type the number
40.75
in the latitude field and the number-73.75
in the longitude field.Click OK.
Click the Current Location button in the bottom-left corner of the simulated device screen.
After completing this task, notice that the blue dot representing your location is in New York, NY, near the Long Island Expressway, as shown in Figure 1-7.
Change the Simulated Device and OS Version
Simulator provides the ability to simulate many different combinations of device type and OS version. A device type is a model of iPhone, iPad, or Apple TV. Some iPhone devices can also have a paired Apple Watch. Each device-OS combination has its own simulation environment with its own settings and apps. Simulator provides simulators for common device-iOS, device-watchOS-iOS device, and device-tvOS combinations. You can also add simulators for a specific combination you want to test. However, not all device type and OS version combinations are available.
Note: To test apps for the iPad mini, use a simulated iPad with the same pixel resolution as the iPad mini.
You can switch between different device-OS combinations. Switching closes the window for the existing device and then opens a new window with the selected device. The existing device goes through a normal OS shutdown sequence, though the timeout might be longer than the one on a real device. The new device goes through a normal OS startup sequence.
To change the simulated device
Choose a Hardware > Device > device of choice.
Simulator closes the active device window and opens a new window with the selected device.
If the device type and OS version combination you want to use is not in the Device submenu, create a simulator for it.
To add a simulator
Choose Hardware > Device > Manage Devices.
Xcode opens the Devices window.
At the bottom of the left column, click the Add button (+).
In the dialog that appears, enter a name in the Simulator Name text field and choose the device from the Device Type pop-up menu.
Choose the OS version from the iOS Version pop-up menu.
Alternatively, if the iOS version you want to use isn’t in the iOS Version pop-up menu, choose “Download more simulators” and follow the steps to download a simulator.
Click Create.
If the OS version you want to use is not installed, download it and follow the steps to add a simulator again.
To download a simulator
In Xcode, choose Xcode > Preferences.
In the Preferences window, click Downloads.
In Components, find the legacy simulator version you want to add, and click the Install button.
You can also delete and rename simulators in the Devices window.
To delete a simulator
In Simulator, choose Hardware > Device > Manage Devices, or in Xcode, choose Window > Devices.
Xcode opens the Devices window.
In the left column, select the simulator.
At the bottom of the left column, click the Action button (the gear next to the Add button).
Choose Delete from the Action menu.
In the dialog that appears, click Delete.
To rename a simulator, choose Rename from the Action menu and enter a new name.
For how to manage real devices that appear in the Devices window, read Devices Window Help.
Alter the Settings of the Simulated Device
You can alter the settings within Simulator to help test your app.
On a simulated device, use the Settings app. To open the Settings app, go to the Home screen and click or on tvOS, choose Settings. In Figure 1-8 you see the Settings app as it appears when launched in the iOS simulation environment.
The Simulator settings differ from the settings found on a hardware device. Simulator is designed for testing your apps, whereas a hardware device is designed for use. Because Simulator is designed for testing apps, its settings are naturally focused on testing, too. For example, in a simulated iOS device the Accessibility menu provides the ability to turn on the Accessibility Inspector, and the Accessibility menu on a device allows you to turn on and off different accessibility features.
Through the settings, you can test both accessibility and localization of your app. See Testing and Debugging in iOS Simulator for information on how to manipulate your settings for the various types of testing you are interested in.
Remember: Changes made in the Settings app of simulated device affect only the simulation environment that is currently running.
Rotate iOS Devices
You can use Simulator to manipulate the simulated device much as you do a physical device.
To rotate your simulated device, choose Hardware > Rotate Left. When you rotate your simulated device, Settings rotates (see Figure 1-9), just as it would on a hardware device.
Ios Simulator Without Xcode Free
Test in Simulator and on a Device
Simulator is designed to assist you in designing, rapidly prototyping, and testing your app, but it should never serve as your sole platform for testing. One reason is that not all apps are available in the simulator. For example, the Camera app is available only on hardware devices and cannot be replicated in the simulator.
In addition, not all bugs and performance problems can be caught through testing in Simulator alone. You’ll learn more about performance differences in Testing and Debugging in iOS Simulator. You can also find more information on testing your app on a device in Launching Your App on Devices in App Distribution Guide.
Quit Simulator
Simulator continues running until you quit it. Quitting Xcode will not close Simulator because they are separate applications. Similarly quitting simulator will not close Xcode.
To quit Simulator, choose Simulator > Quit Simulator. The device is shut down, terminating any running apps.
Note: Both Simulator and watchOS Simulator can be open at the same time.
Copyright © 2018 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2018-02-15