4

Apple 在UILocalNotification类引用中指定音频文件必须来自应用程序包。但是,一些聪明的极客通过使用以下方法找到了解决此限制的方法:

// this works by going up the bundle dir, then pointing to the Documents dir
localNotif.soundName = @"../Documents/blabla.caf";

这个解决方法在 iOS 5 中运行良好,但是在 iOS 6 中出现了问题。为了尝试提出新的解决方法,我创建了一个别名(符号链接) ,称为blabla.caf指向../Documents/blabla.caf,并将其放入应用程序中捆。这是我被卡住了。

现在,我得到了一个PBXCp error,Xcode 无法完成应用程序部署到设备,因为显然

错误:/Users/stuff/moreStuff/appName/../Documents/blabla.caf:没有这样的文件或目录


我的问题:

  1. 我可以以某种方式在Documents目录中添加一个虚拟文件(0 KB)来关闭 Xcode 吗?
  2. 我可以以某种方式强制 Xcode 覆盖此错误并继续部署应用程序吗
4

2 回答 2

7

尽管从包到文档目录的符号链接在 iOS 7.1 中有效,但如果您要将应用程序放入 AppStore,则此解决方法将变得无用。自 2014 年 3 月起,带有此类符号链接的应用程序将无法通过审核。

在我将捆绑包中带有此类链接的应用程序上传到 iTunes 连接后,我会Invalid binary立即收到一个状态。使用来自 iTunes Store 的以下邮件:

亲爱的开发者,

我们发现您最近交付的“X”存在一个或多个问题。要处理您的交付,必须更正以下问题:

无效的符号链接 - 您的包包含符号链接“外部/文档”,它解析为不存在或位于包之外的位置“外部/../../文档”。

...

问候,

应用商店团队

于 2014-03-19T10:29:06.530 回答
2

如果您将符号链接../../Documents/blabla.caf放置在文件夹内,然后将该文件夹添加到项目中(确保您在导入时设置了“创建文件夹引用...”而不是“创建组...”),那么 Xcode 不会尝试在构建过程中解析链接。

我已经验证了链接本身在应用程序中工作正常,但我不确定 UILocalNotification 是否会folder/blabla.caf在其 soundName 属性中接受。

于 2013-08-06T15:59:58.083 回答