Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改推送通知声音文件,仅在iOS重新启动后有效_Ios_Iphone_Swift_Audio_Push Notification - Fatal编程技术网

更改推送通知声音文件,仅在iOS重新启动后有效

更改推送通知声音文件,仅在iOS重新启动后有效,ios,iphone,swift,audio,push-notification,Ios,Iphone,Swift,Audio,Push Notification,我在iOS应用程序访问Library/Sounds目录中的文件时遇到问题 我的iOS应用程序在主应用程序包中提供不同的声音文件。我编写了一些代码,将选定的文件复制到Library/Sounds目录中。它在该目录中始终具有相同的名称(foo.caf) 这样我就可以切换到不同的推送通知声音。如果我第一次这样做,一切正常。但是,如果我切换到其他应用程序,并收到推送通知,则不再有声音。此外,也不会播放默认声音。但奇怪的是,如果我重新启动iPhone并收到新的推送通知,我会收到新选择的声音 iOS是否有缓

我在iOS应用程序访问
Library/Sounds
目录中的文件时遇到问题

我的iOS应用程序在主应用程序包中提供不同的声音文件。我编写了一些代码,将选定的文件复制到
Library/Sounds
目录中。它在该目录中始终具有相同的名称(
foo.caf

这样我就可以切换到不同的推送通知声音。如果我第一次这样做,一切正常。但是,如果我切换到其他应用程序,并收到推送通知,则不再有声音。此外,也不会播放默认声音。但奇怪的是,如果我重新启动iPhone并收到新的推送通知,我会收到新选择的声音

iOS是否有缓存或其他我必须先重置的东西?或者这是一个iOS错误

编辑:

我已经写了一个小的演示项目来重现这个问题。可在以下网址找到:

源代码:

吉特回购:


自述文件:

我的想法是,操作系统会在启动时对可能的推送剪辑进行编目。终止/启动应用程序是否具有与操作系统重启相同的效果?此外,您实际上不必将文件复制到Library/Sounds以将其用作推送通知声音。但很明显,你这样做是为了处理声音的动态特性。但是,我很想知道您的包中是否有任何文件具有相同的名称(foo.caf),或者在复制到Sounds目录时是否只是重命名。这并不能解释声音的缺乏,但我可以看到它引起了一些奇怪的现象。你是对的,我正在处理不同的文件名。不,没有其他的foo.caf,杀掉/启动应用程序没有帮助。只有重新启动才能工作。奇怪的是,如果我复制回第一个.caf文件(包括重命名),推送声音会再次工作。。。这太令人困惑了。听起来iOS必须在安装(应用程序)或重新启动操作系统时对符合条件的音频文件进行编目。不完全确定为什么将文件复制回会起作用,但可能出于某种原因,它会查看文件的大小和名称。有什么原因不能将此决策服务器端推送,而只使用每个文件的唯一名称吗?是的,有一个问题,我使用解析作为推送服务,并将消息发送到不同的通道。我已更新了此问题,并添加了一个示例项目来重现此问题。