我正在创建一个使用Apple推送通知和自定义声音(约15秒长度)的应用程序。如果我在使用手机时打开通知,声音会终止,但如果我从睡眠模式唤醒手机时打开通知,则声音会持续播放直到结束。如何避免不必要的推送声音播放?
答案 0 :(得分:2)
我知道现在已经很晚了,但事实证明苹果公司没有提供任何API来管理推送通知声音,所以你无法阻止它播放。我想建议你使用较短的推送通知声音。这也是有道理的,因为推送通知的意图是很快通知用户新事件,而不是长时间打扰他。
答案 1 :(得分:0)
从iOS 10开始,您可以通过调用从通知中心删除所有通知
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
音频停止播放,但是所有通知都从通知中心中删除。
或者,要仅停止特定通知的声音,可以使用:
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [String])
这将仅停止给定通知的音频,并将其从通知中心中删除。
要获取所有已传递通知的ID,请使用
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
let ids = notifications.map { $0.request.identifier }
}
当然,缺点是通知已从用户的通知中心中删除。