2014-05-14 4 views
0

프로덕션으로 갈 때 아무것도 변경하지 않으므로 디버깅 중이거나 프로덕션 환경에서 애플이 제공하는이 방법 (https://developer.apple.com/library/mac/qa/qa1361/_index.html)을 사용하여 변경 사항을 모두 확인합니다프로그래밍 방식으로 plist 편집

을 (실제 광고로 전환, 생산 URL 등을 사용) I가에 대해 다음 PLIST 도시 비행선

AirshipConfig.plist 나는 찬이 도시 비행선 지금

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>analyticsEnabled</key> 
    <false/> 
    <key>inProduction</key> 
    <false/> 
    <key>developmentAppKey</key> 
    <string>SOMESTRINGHERE</string> 
    <key>developmentAppSecret</key> 
    <string>SOMESTRINGHERE</string> 
    <key>productionAppKey</key> 
    <string>SOMESTRINGHERE</string> 
    <key>productionAppSecret</key> 
    <string>SOMESTRINGHERE</string> 
</dict> 
</plist> 

GE의 inProduction 나는 내가하면 다음과 PLIST를 변경하기 위해 노력하고있어 내 응용 프로그램 위임에 따라서

디버깅있을 때 나는 앱 스토어에 놓을 때 truefalse. 내가했듯이 나는 여전히 작동하고 있음을 볼 수 PLIST의 내용을 얻으려고하지만 난 내 NSLog

if([Def AmIBeingDebugged]){ 
    //Development set to false 
    NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"AirshipConfig" ofType:@"plist"]; 
    NSLog(@"%@", [NSArray arrayWithContentsOfFile:plistPath]); 
}else{ 
    //Production set to true 
} 

올바른 PLIST 값을 설정하는 방법에 어떤 도움으로 (널)가 계속 주시면 감사하겠습니다 벽에 부딪쳤을 때 파일을 다시 쓸 수 있도록 내용이 필요할 것 같아서 왜 항상 (null)인지 알 수 없습니다.

+1

plist는 사전이 아니라 배열입니다. – rmaddy

+3

BTW - plist 파일에 다시 쓸 수 없습니다. 앱 번들은 읽기 전용입니다. – rmaddy

+2

앱 번들에있는 문서는 변경할 수 없습니다. 저장하고 변경하려는 값은 NSUserDefaults에보다 적절하게 저장 될 수 있습니다. 당신은 쉽게 NSUserDefaults에서 BOOL을 변경할 수 있습니다. numberWithBool을 사용하여 NSNumber에 값을 포함 시키십시오 : –

답변

2

먼저 엑스 코드 빌드 구성의 모든 AirshipConfig.plist의 별도의 복사본을 생성하고 형식 AirshipConfig_$(CONFIGURATION).plist (그래서 예를 들어, AirshipConfig_Debug.plistAirshipConfig_Release.plist)에서 그 이름을 지정합니다. 그런 다음 원하는 내용으로 내용을 업데이트하십시오 (예 : inProduction을 적절한 값으로 설정하십시오).

그런 다음 Xcode에서 응용 프로그램 대상에 대한 새로운 "스크립트 실행"작성 단계를 작성하고 "Urban Airship 구성 파일을 다음으로 복사하십시오. 묶음". 스크립트의 내용으로이 추가 :

cp "${SRCROOT}/MyProjectName/AirshipConfig_${CONFIGURATION}.plist" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipConfig.plist" 

이 외부 라이브러리가 기대하는 파일 이름 (AirshipConfig.plist)와 앱 번들에 올바른 빌드 구성에 대한 설정 파일을 복사합니다. 위 예제에서 설정 파일의 소스 경로가 올바른지 확인하십시오.

+0

매우 영리한 대답, 받아 들여서 투표하십시오. 좋은! – user577732

+0

그냥 작은 업데이트, 당신이 $ (SRCROOT) $ (SRCROOT)해야 $ (CONFIGURATION) $ {CONFIGURATION} 있어야 스크립트를 두 가지 오타가 있습니다. – user577732

관련 문제