我试图创建一个简单的演示,单击一个按钮,然后显示自定义通知以及自定义声音。
发生的行为:
声音文件“ alert.caf”已添加到Assets.xcassets。
这是我的课程(访问权限已在应用启动回调中处理):
import UIKit
import UserNotifications
class HomeViewController: UIViewController, UNUserNotificationCenterDelegate {
@IBOutlet weak var btnNotification: UIButton!
@IBAction func triggerNotification(_ sender: Any) {
/* let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil) */
execNotification()
}
override func viewDidLoad() {
super.viewDidLoad()
UNUserNotificationCenter.current().delegate = self
}
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler:
@escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert,.sound])
}
private func execNotification() {
let notificationContent = UNMutableNotificationContent()
notificationContent.title = "UNUserNotification Sample"
notificationContent.body = "Sample test msg"
notificationContent.badge = 0
notificationContent.sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: "alert.caf"))
notificationContent.categoryIdentifier = "GENERAL"
let notificationTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.2, repeats: false)
let notificationRequest = UNNotificationRequest(identifier: "general", content: notificationContent, trigger: notificationTrigger)
// Add Request to User Notification Center
UNUserNotificationCenter.current().add(notificationRequest) { (error) in
if let error = error {
print("Unable to Add Notification Request (\(error), \(error.localizedDescription))")
}
}
}
}
注意:我检查了所有可能导致警报无法播放的设置,但实际上没有任何理由。应用程序设置正确,没有启用“请勿打扰”模式。
我使用Xcode 10.1
答案 0 :(得分:1)
一些提示:
答案 1 :(得分:1)
我也无法设置自定义声音,唯一不同的是我正在为 macOS 开发应用程序。
我的设置: macOS 大苏尔 11.4 Xcode 12.5
解决办法: 自定义声音只能通过将“wav”文件添加到项目中(“caf”不起作用)然后重新启动 mac 来播放。
考虑到 iOS 和 mac 平台之间的相似性,我建议将“wav”文件添加到项目中并重启 iPhone。