I\'d like to know whether my app is being run on device or simulator at run time. Is there a way to detect this?
Reason being to test bluetooth api with simulator:
Check if simulator
#if TARGET_IPHONE_SIMULATOR
// Simulator
#endif
Check if device
#if !(TARGET_IPHONE_SIMULATOR)
// Device
#endif
Check for both
#if TARGET_IPHONE_SIMULATOR
// Simulator
#else
// Device
#endif
Please note that you should not ifdef
on
TARGET_IPHONE_SIMULATOR
because it will always be defined to either 1
or 0
.
Use this below code:
#if targetEnvironment(simulator)
// iOS Simulator
#else
// Device
#endif
Works for Swift 4
and Xcode 9.4.1
#if targetEnvironment(simulator)
//Simulator
#else
//Real device
#endif
Helps you to code against device type specific.
#if TARGET_OS_SIMULATOR
//Simulator
#else
// Device
#endif
Pls refer this previous SO question also What #defines are set up by Xcode when compiling for iPhone
if anyone is looking for Unity
solution i did this, the only way i found how.
using System.Globalization;
public static bool IsArm() {
return CultureInfo.InvariantCulture.CompareInfo.IndexOf(SystemInfo.processorType, "ARM", CompareOptions.IgnoreCase) >= 0;
}
You can use the TARGET_IPHONE_SIMULATOR preprocessor macro to distinguish between device and simulator targets.