2013-04-18 2 views
5

Мне нужно реализовать пользовательское ведение журнала в моем приложении.Обнаружение AppStore установки приложения iOS

Для этого мне нужно определить, установлена ​​ли текущая версия приложения из магазина приложений или выполняется из xcode или является версией TestFlight.

В зависимости от источника установки есть что-то другое в приложении.

Я не хочу иметь что-то другое в среде разработки.

ответ

11

Вы можете получить часть пути туда чтения в файле embedded.mobileprovision из пакета приложения:

NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]; 

Если не существует, вы в магазин приложений сборки.

Если она существует, то необходимо выяснить некоторые различия между вашей отладкой и нерегламентированными профилями резервов, и искать, что определить, какие строить вы в.

Поскольку XCode автоматически устанавливает приложения с Флаг «DEBUG» в конфигурации Debug, который не установлен в Release (который используется по умолчанию для сборки AdHoc), вам может быть лучше отключить ведение журнала в сборке магазина приложения и определить уровень ведения журнала на основе флага макроса DEBUG ,

+1

Это выглядит великолепно, как вы думаете, я могу найти способ проверить его до того, как я выпущу приложение? например, строить и запускать с помощью программы _Release Scheme_, чтобы убедиться, что она работает над выпуском. – bago

+0

Все приложения, которые вы компилируете, выпускаете или создаете ad-hoc, всегда будут включать встроенное.mobileprovision. Это только окончательная сборка App Store, в которой отсутствует этот файл. Вы можете убедиться, что этого не существует, загрузив приложение приложения магазина с вашего устройства и исследуя пакет приложений ... Обратите внимание, что я не придумал эту технику, HockeyApp получает полный кредит для поиска этого (или, по крайней мере, там, где Об этом я узнал). –

+0

Nice tip :) +1 Tks – TonyMkenu

0

Вы можете использовать конфигурации компоновки, которые определяют макрос, чтобы вы знали, что вы создали для testflight.

Например, у нас есть отладки сборок установлены макрос USE_TESTFLIGHT, и в нашем коде мы делаем:

#ifdef USE_TESTFLIGHT 
//do something test-flight specific 
[TestFlight takeOff:kTestFlightAppToken]; 
#endif 

Вы можете создать новые сборки конфигу, что установить различные макросы в зависимости от того, как вы компилируете/распределяя приложение , и использовать ifdef для выполнения различных задач на их основе.

+0

Хотя это работает, разные конфигурации сборки не соответствуют «Я не хочу иметь что-то другое в среде разработки». –

+0

Согласовано. Это предложение, хотя и полезно для некоторых потребностей развития, не отвечает на заданный вопрос. –

Смежные вопросы