2013-04-18 4 views
5

내 앱에 맞춤 로깅을 구현해야합니다.iOS 앱의 AppStore 설치 감지

이렇게하려면 앱 스토어에서 현재 버전의 앱이 설치되어 있거나 xcode에서 실행 중이거나 TestFlight 버전인지 확인해야합니다.

설치 소스에 따라 앱에 약간 다른 점이 있습니까?

개발 환경에서 다른 것을 갖고 싶지 않습니다.

답변

11

당신은이 응용 프로그램 번들에서 embedded.mobileprovision 파일에서 읽어 방법의 일부를 얻을 수 있습니다 :

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

을 그 존재하지 않는 경우, 당신은 앱 스토어 구축에 있습니다. 이 존재하는 경우

, 당신은 디버그 및 임시 프로비저닝 프로파일 사이에 약간의 차이를 파악하고, 그 당신이에 구축을 결정하는 볼 필요가있다.

엑스 코드가 자동으로 응용 프로그램을 설정하기 때문에 릴리스에서 설정되지 않은 디버그 구성의 "DEBUG"플래그 (AdHoc 빌드에 기본적으로 사용됨)를 사용하면 앱 스토어 빌드에서 로깅을 사용하지 않도록 설정하고 DEBUG 매크로 플래그를 기반으로 로깅 수준을 결정하는 것이 더 나을 수 있습니다 .

+1

멋지다. 내가 앱을 출시하기 전에 테스트 해 볼 수있는 방법을 찾을 수 있다고 생각하니? 예를 들어 릴리즈시 작동하는지 확인하기 위해 _Release Scheme_으로 빌드하고 실행하십시오. – bago

+0

컴파일, 릴리스 또는 임시 프로그램에 포함 된 모든 응용 프로그램에는 항상 embedded.mobileprovision이 포함됩니다. 이 파일이 누락 된 것은 최종 App Store 빌드 일뿐입니다. 장치에서 앱 스토어 앱을 다운로드하고 애플리케이션 번들을 탐색하여 존재하지 않는지 확인할 수 있습니다.이 기술을 사용하지 않았 음을 유의하십시오. HockeyApp은이 점을 발견 한 데 대한 충분한 평가를받습니다. 나는 그것에 대해 알았다.) –

+0

좋은 팁 :) +1 Tks – TonyMkenu

0

매크로를 정의하는 빌드 구성을 사용하여 testflight 용으로 빌드 한 것을 알 수 있습니다.

예를 들어, 우리는 디버그 매크로 USE_TESTFLIGHT을 설정 빌드를 가지고 있고, 우리의 코드에서 우리가 할 :

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

당신은 설정 다른 매크로는 컴파일하는 방법에 따라 새로운 빌드 CONFIGS를 만들 수/응용 프로그램을 배포 ifdef를 사용하여 ifdef를 사용하여 다른 작업을 수행 할 수 있습니다.

+0

이것이 작동하는 동안 다른 빌드 구성이 "개발 환경에서 다른 것을 갖고 싶지 않습니다"라는 조건을 충족하지 못합니다. –

+0

동의. 이 제안은 개발 요구 사항에 유용하지만 질문에 답하지 않습니다. –