在我开始制作时我永远不会记得改变任何东西所以我只是使用apple提供的这种方法(https://developer.apple.com/library/mac/qa/qa1361/_index.html)来检测我是在调试还是在生产中因此所有的更改都是为了我(切换到真实的广告,使用生产网址等)
我有以下关于Urban Airship的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>
现在,对于Urban Airship,当我发布到应用程序商店时,我必须将inProduction
更改为true
,当我正在调试时,我必须将false
更改为
所以在我的app委托中,我试图用以下if更改plist。我仍然试图让plist的内容看到它正在工作,但我一直得到(null)作为我的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)因为我认为我需要内容所以我可以重写文件。
答案 0 :(得分:2)
首先为所有Xcode构建配置创建AirshipConfig.plist
的单独副本,并以AirshipConfig_$(CONFIGURATION).plist
格式命名(例如AirshipConfig_Debug.plist
和AirshipConfig_Release.plist
)。然后将其内容更新为您想要的内容(例如,将inProduction
设置为适当的值。)
然后在Xcode中为您的应用程序目标创建一个新的“运行脚本”构建阶段,并将其命名为“Copy Urban Airship config file to bundle”。将其添加为脚本的内容:
cp "${SRCROOT}/MyProjectName/AirshipConfig_${CONFIGURATION}.plist" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipConfig.plist"
这会将正确构建配置的配置文件复制到您的应用包中,并使用外部库所需的文件名(AirshipConfig.plist
)。 在上面的示例中,只需确保配置文件的源路径正确。