Ios Simulator Macos

Apple’s official tool to slow down the network connections on you Mac for testing purposes is Network Link Conditioner. Additional Tools for Xcode version. Additionally, iOS has similar function accessible from within Xcode and iOS 6 or later. Older versions of Xcode before version 4.3.2 embedded a copy of this tool. Sometimes the iOS simulator doesn't respond to commands to open. If it seems to be stuck on this prompt, you can open the iOS simulator manually (open -a Simulator) and then in the macOS toolbar choose Hardware → Device and select an iOS version and device that you'd like to open.

  1. Mac Os Simulator For Windows
  2. Ios Simulator Macbook
  3. Ios Simulator Mac Os
  4. Iphone Simulator Mac
  5. Ios Simulator Macos Catalina

When developing mobile apps, it's important to recognize your mobile users will likely have a much slower network connection than you use while developing. So, it's good to run your app in a simulated poort network condition.

When I was primarily developing Cordova based apps (Ionic Framework), this was easy to do in Chrome, as it comes with built-in throttling. Now, that I'm developing React Native apps, I had no idea how to do this.

Today, I discovered the 'Network Link Conditioner' Sytem Preferences pane. It lets you throttle your Mac's entire network connection which of course limits the network speed of any iOS simulators or Android emulators on the same machine.

You'll need to install the conditioner from the Apple Developer's website. Search for the verion of 'Additional Tools Xcode ???' that matches your version of Xcode. Once the download is complete, open the '.dmg' file and double tap the 'Hardware' folder.

Next, double tap the 'Network Link Conditioner Pref Pane' icon to install it.

Now, just adjust the settings to whatever limits you want to apply. When you're done, be sure to turn this off or you'll be hating life living in a 3G world (how did we survive???)! It sure would be nice if this tool showed up in the menu bar to remind you it's enabled.

Hat tip to Spencer Carli for introducing this tool in his excellent Production Ready React Native course.

Libraries and Frameworks

The SDK requires the following frameworks for a successful compilation:

PlatformConnectionBBDevice APIFramework
iOSBluetooth Classic, Bluetooth LE
  • libBBDevice-iOS-BT.a
  • CoreBluetooth.framework
  • ExternalAccessory.framework
  • SystemConfiguration.framework
  • Security.framework
  • BBDeviceSPoC.frameworkSPoC
  • CoreLocation.frameworkSPoC
iOSAudio, Bluetooth Classic, Bluetooth LE
  • libBBDevice-iOS-AudioAndBT.a
  • AudioToolbox.framework
  • CoreAudio.framework
  • MediaPlayer.framework
  • AVFoundation.framework
  • CoreBluetooth.framework
  • ExternalAccessory.framework
  • SystemConfiguration.framework
  • Security.framework
  • BBDeviceSPoC.frameworkSPoC
  • CoreLocation.frameworkSPoC
macOSBluetooth LE, USB
  • libBBDevice-macOS-BLEAndUSB.a
  • IOKit.framework
  • IOBluetooth.framework
  • Foundation.framework
  • SystemConfiguration.framework
Macos

BBDeviceSPoC.framework

To support Software-Based PIN Entry (SPoC), add the BBDeviceSPoC.framework under the project's Embedded Binaries section:

Simulator

Build Settings

The SDK contains C and C++ files, to let Xcode compiler recognize all the library files, your app need tomake a few change in the project's Build Settings:

Objective-C

Mac Os Simulator For Windows

Ios simulator macos catalina
  1. Set the C++ Standard Library to LLVM C++.
  2. Renaming the filename extension of the files that use the SDK from .m to .mm.

Swift

  1. Set the C++ Standard Library to LLVM C++.
  2. Create a file YourProjectName-Bridging-Header.h that imported all the required SDK .h files and set the Objective-C Bridging Header to $(SRCROOT)/YourProjectName/YourProjectName-Bridging-Header.h.
  3. Add -lstdc++ to Other Linker Flags.
Macos

Info.plist

Ios Simulator Macbook

The following key-value pairs are required in your app's Info.plist:

KeyValueDescription
NSMicrophoneUsageDescriptionWhen the system prompts the user to allow access, this string is displayed as part of the alert.Privacy - Microphone Usage Description.
NSBluetoothPeripheralUsageDescriptionWhen the system prompts the user to allow usage, the value that you provide for this key is displayed as part of the alert.Privacy - Bluetooth Peripheral Usage Description.
NSLocationWhenInUseUsageDescription and NSLocationAlwaysAndWhenInUseUsageDescriptionSPoC (If your app supports iOS 10 and earlier, the NSLocationAlwaysUsageDescription key is also required.)When the system prompts the user to allow access, this string is displayed as part of the alert panel.Privacy - Location Usage Description.
UIBackgroundModesaudio, bluetooth-central (Bluetooth LE), external-accessory (Bluetooth Classic)Required background modes.
UISupportedExternalAccessoryProtocolsMPOS-PCIcom.bbpos.bt.wisepad (Bluetooth Classic)Supported external accessory protocols.

UIBackgroundModes

For better user experience, the app can enable background modes to allow the Audio/Bluetooth to continue to work when the app goes into the background. This prevents interruption on the data when the phone Home button is hit accidentally.

For Audio communication, a red warning bar will appear when the app enters background mode while the audio is still in use. When the app enters background mode, the SDK will stop the audio after a certain period of time (normally within 10 seconds). If the SDK detected the device is still plugged, it will try to restore the volume to previous value and a system volume pop up may appear during the restore process. When the red warning bar disappeared and the transaction is not yet completed, the error AudioBackgroundTimeout will be triggered.

UISupportedExternalAccessoryProtocols

Before submitting your iOS app for distribution, Apple requires all iOS apps that communicate with Apple approved MFi devices via Bluetooth Classic be registered with Apple. This whitelist process can take 3-5 business days. To request whitelisting, submit your app information to BBPOS through https://developer.bbpos.com.

Ios Simulator Mac Os

iOS Simulator

Iphone Simulator Mac

The iOS simulator is designed to assist you in designing and testing your app. To run the app in simulator, include all the -simulator.a libraries in the SDK zip to the app's project folder. However, depending on the Mac hardware differences and the simulated iOS device/version differences, the audio communication may not perform the same as testing on a real device. Additionally, simulator doesn’t support the Bluetooth frameworks and should not use for SPoC.

Ios Simulator Macos Catalina

  1. Required for BBDeviceSPoC API. ↩

  2. Required for WisePad devices with Bluetooth Classic connection. ↩