遇到的 XC 8 中的两个小坑

今天可能时运不济,一次碰到了两个小坑,趁着现在 pod repo update 的时候记一下。

Background Fetch

今天在一开始在写和 Background Fetch 相关的代码。把 performFetchWithCompletionHandler 写好,然后其他的配置做好之后,连上手机准备测试。因为一般 Background Fetch 发生都需要时间,而且这个调用的时间间隔是系统定的,即使设定了 setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum) 可能也要蛮久一段时间系统才会调用。所以一般都会点 Xcode -> Debug -> Simulate Background Fetch 让 Background Fetch 能立即执行来方便调试。

所以我当然也是要点的。
结果我期待的结果并没有和以前一样发生,程序居然奔溃退出了,就像这样。

Markdown preferences pane

我开始以为是自己代码有问题,于是调试了一会儿,最后发现即使我在方法里什么都不做调用的时候还是会奔溃。有点懵。然后我在模拟器上试了一发,结果发现并没有任何问题!调用是成功的!

Google 了一发,在 Apple Developer Forums 里看到了一篇贴 ( https://forums.developer.apple.com/thread/51361 ),也有人在 Xcode 8 上遇到了一样的情况:

Markdown preferences pane

然而最后是怎么解决的呢?当然不是等20分钟让他自然发生调用。你会发现在真机上点击后的奔溃是 Xcode 自己断开的,然后你再轻轻的点一下继续执行按钮,它就把我的 Background Fetch 执行好了。

Markdown preferences pane

Fun.

UNNotificationSound

还有就是关于 UNNotificationSound 的问题。

我在尝试用 iOS 10 新的 UserNotification 来创建通知,一个本地通知,其他的一切都没有问题,然而自定义的提醒通知的声音就是无法播放。并且以前创建通知写法的代码是没有问题可以播放的。

Markdown preferences pane

从苹果的文档 ( https://developer.apple.com/reference/usernotifications/unnotificationsound ) 看到 UNNotificationSound 支持由 Linear PCM / MA4 (IMA/ADPCM)/ µLaw / aLaw 封装成的 aiff, wav, caf 几种格式的文件。我也转换了几种格式都试了下想确定是不是格式的问题,而无论怎么测试,系统始终播放的是默认的三连音:哒哒哒。

然后我又遇到了一样处境的人(这次的人比较多),还是在 Apple Developer Forums 里的帖子( https://forums.developer.apple.com/thread/49512 )。

有人好像找到了暂时解决的方法:重启 iOS 设备,卸载 App ,然后重新安装,自定义的铃声就可以生效了。但是有人说这种方法在你使用 Xcode 再装 App 的时候又会失效了。

Markdown preferences pane

但是无论如何,我的自定义铃声一直没有播出来。
Magic.

???

天冷了,Macbook 的散热变好了。