it-swarm.com.de

Programmgesteuert erkennen, ob die App auf einem Gerät oder Simulator ausgeführt wird

Ich würde gerne wissen, ob meine App zur Laufzeit auf einem Gerät oder Simulator ausgeführt wird. Gibt es eine Möglichkeit, dies zu erkennen?

Grund ist, Bluetooth-API mit dem Simulator zu testen: http://volcore.limbicsoft.com/2009/09/iphone-os-31-gamekit-pt-1-woooohooo.html

53
eugene
#if TARGET_OS_SIMULATOR

//Simulator

#else

// Device

#endif

Bitte beziehen Sie sich auch auf diese vorherige SO - Frage Welche # Definitionen werden von Xcode beim Kompilieren für das iPhone eingerichtet

111
visakh7

Ich habe ein Makro erstellt, in dem Sie angeben können, welche Aktionen Sie in Klammern ausführen möchten. Diese Aktionen werden nur ausgeführt, wenn das Gerät simuliert wird.

#define SIM(x) if ([[[UIDevice currentDevice].model lowercaseString] rangeOfString:@"simulator"].location != NSNotFound){x;}

Dies wird wie folgt verwendet:

SIM(NSLog(@"This will only be logged if the device is simulated"));
17

Prüfen Sie, ob Simulator

#if TARGET_IPHONE_SIMULATOR
// Simulator
#endif

Überprüfen Sie, ob Gerät

#if !(TARGET_IPHONE_SIMULATOR)
// Device
#endif

Auf beide prüfen

#if TARGET_IPHONE_SIMULATOR
// Simulator
#else
// Device
#endif

Bitte beachten Sie, dass Sie ifdef nicht am TARGET_IPHONE_SIMULATOR verwenden sollten, da er immer als 1 oder 0 definiert ist.

5
hfossli

TARGET_IPHONE_SIMULATOR ist auf dem Gerät definiert (aber als falsch definiert). und wie folgt definiert 

#if TARGET_IPHONE_SIMULATOR
NSString * const DeviceMode = @"Simulator";
#else
NSString * const DeviceMode = @"Device";
#endif

Verwenden Sie einfach DeviceMode, um zwischen Gerät und Simulator zu wissen 

5
Jhaliya

Ab XCode 9.3 und schneller

#if targetEnvironment(simulator)
//Simulator
#else
//Real device
#endif

Hilft Ihnen beim Codieren gegen gerätetypspezifische.

2
theapache64

Sie können das Makro TARGET_IPHONE_SIMULATOR preprozessor verwenden, um zwischen Geräte- und Simulatorzielen zu unterscheiden.

2
Julio Gorgé

Verwenden Sie den folgenden Code:

#if targetEnvironment(simulator)
   // iOS Simulator
#else
   // Device
#endif

Funktioniert für Swift 4 und Xcode 9.4.1

0
Haroldo Gondim