Как обнаружить приложение работает на симуляторе или устройстве - программирование
Подтвердить что ты не робот

Как обнаружить приложение работает на симуляторе или устройстве

Возможный дубликат:
Программно определить, выполняется ли приложение на устройстве или симуляторе

Как определить, работает ли мое приложение на Simulator или на устройстве с помощью кода.

4b9b3361

Ответ 1

Имейте в виду, что UIDevice предоставляет вам уже информацию о самом устройстве.

[[UIDevice currentDevice] model]

Вы также можете использовать следующее:

TARGET_IPHONE_SIMULATOR сообщает, что вы находитесь в симуляторе iPhone.

TARGET_OS_IPHONE сообщает, что вы работаете с iPhone вместо MacOS.

#if TARGET_IPHONE_SIMULATOR

    NSLog(@"Running in Simulator - no app store or giro");

#else

    NSLog(@"Running on the Device");

#endif

и когда ТОЛЬКО интересуется устройством

#if !(TARGET_IPHONE_SIMULATOR)

    NSLog(@"Running on device");

#endif

Ответ 2

Вы можете использовать эту константу

#if TARGET_OS_SIMULATOR
    NSLog(@"This is simulator mode....");
#else
    NSLog(@"This is device mode....");
#endif

Ответ 3

То же самое скомпилированное приложение не может работать как на Simulator, так и на iOS-устройстве, так как наборы инструкций CPU совершенно разные (x86 и ARM). (... если вы не строите какой-то очень странный супер-универсальный бинарный файл с использованием lipo)

Существует несколько способов определить, было ли приложение скомпилировано для x86 или нет. Один из них заключается в добавлении кода времени выполнения, который отличается в зависимости от одного из многих предопределенных макросов препроцессора компилятора. Вы можете получить список макросов препроцессора для компиляции x86, введя его в командной строке терминала:

gcc -arch i386 -dM -E - </dev/null | сортировать