仅在 DEBUG 配置中将 info.plist 中启用的 iTunes 文件共享设置为 YES
Posted
技术标签:
【中文标题】仅在 DEBUG 配置中将 info.plist 中启用的 iTunes 文件共享设置为 YES【英文标题】:Set iTunes File Sharing enabled in info.plist to YES only in DEBUG configuration 【发布时间】:2016-01-18 15:59:06 【问题描述】:在 Xcode 中,我可以根据我的应用程序的配置(调试与发布)将 "Application supports iTunes file sharing"
/ UIFileSharingEnabled
setting 设置为 YES
/NO
吗?
我已经看到关于使用用户定义的构建设置来设置字符串 plist 项的字符串值的讨论(例如 $(MY_DEFINED_SETTING),但是你可以用这个布尔设置来做到这一点吗?这不完全一样,但是只要在构建应用程序的发布版本时自动删除它就可以了。但是如果我尝试在该字段中输入YES
或NO
之外的任何内容,则默认为NO
。
我知道根据配置可以拥有一个文件的两个不同版本,但如果不拥有基本相同文件的两个副本会更简单。但是,如果这是最好的解决方案,那么任何有关实施该解决方案的提示将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:虽然 Xcode 中的默认 plist 查看器不允许我在 UIFileSharingEnabled
的键值字段中输入字符串,因为它需要一个布尔值,但我确实设法让它通过查看让我输入我想要的任何值plist作为源代码,输入如下:
<key>UIFileSharingEnabled</key>
<string>$FILE_SHARING_ENABLED</string>
相对于<true/>
或<false/>
,plist 编辑器默认为第二行。
(其中FILE_SHARING_ENABLED
是我的user defined build setting 的名称,它设置为YES 表示调试,NO 表示发布)
注意,我还尝试设置用户定义的构建设置,在调试配置中它等于UIFileSharingEnabled
,并且在发布中设置了一些乱码值。然后我尝试使用它作为键,但它没有被替换为值,而是被视为字符串。
通过打印出 infoDictionary 的内容进行双重检查
NSLog(@"%@",[[NSBundle mainBundle] infoDictionary]);
还可以通过打开 iTunes 并在底部的手机应用程序页面上检查文件共享是否有效/无效。 (记得在调试和发布配置中进行测试)
【讨论】:
这似乎不适用于NSAllowsArbitraryLoads
:(
你在 NSApptTansportSecurity
字典里有那个吗?
是的,只要我写了<true/>
,它就可以工作,如果我把它改成<string>$MY_USER_DEFINED_SETTING</string>
,它会给我ATS错误。 This user 也有同样的问题。不过,我发现this solution 更简单、更安全。
我在使用方法上传时从 appstoreconnect 收到错误:ERROR ITMS-90039: "Type Mismatch. The value for the Info.plist key UIFileSharingEnabled is not of the required type for that key...
似乎您现在无法使用自定义标志上传。以上是关于仅在 DEBUG 配置中将 info.plist 中启用的 iTunes 文件共享设置为 YES的主要内容,如果未能解决你的问题,请参考以下文章
UIUserInterfaceStyle 键在 Xcode 12 的 Info.plist 中不可用,如何从 Info.plist 禁用 Xcode 12 中的暗模式?
如何根据 TARGET_OS 更改 Info.plist 标志?
Xcode10升级问题:Multiple commands produce Info.plist
Firebase:Xcode 找不到配置文件:“GoogleService-Info.plist”
服务配置为“nil”。使用此方法前需要配置`Info.plist`或设置`defaultServiceConfiguration`