mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
持续响铃支持自定义铃声
This commit is contained in:
parent
779e2375f8
commit
99bb686be1
@ -178,22 +178,53 @@ class SoundFileStorage: SoundFileStorageProtocol {
|
|||||||
|
|
||||||
/// 将指定文件保存在 Library/Sound,如果存在则覆盖
|
/// 将指定文件保存在 Library/Sound,如果存在则覆盖
|
||||||
func saveSound(url: URL) {
|
func saveSound(url: URL) {
|
||||||
|
// 保存到Sounds文件夹
|
||||||
let soundsDirectoryUrl = getSoundsDirectory()
|
let soundsDirectoryUrl = getSoundsDirectory()
|
||||||
let soundUrl = soundsDirectoryUrl.appendingPathComponent(url.lastPathComponent)
|
let soundUrl = soundsDirectoryUrl.appendingPathComponent(url.lastPathComponent)
|
||||||
try? fileManager.copyItem(at: url, to: soundUrl)
|
try? fileManager.copyItem(at: url, to: soundUrl)
|
||||||
|
|
||||||
|
// 另外复制一份到共享目录
|
||||||
|
saveSoundToGroupDirectory(url: url)
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteSound(url: URL) {
|
func deleteSound(url: URL) {
|
||||||
|
// 删除sounds目录铃声文件
|
||||||
try? fileManager.removeItem(at: url)
|
try? fileManager.removeItem(at: url)
|
||||||
|
|
||||||
|
// 再删除共享目录中对应的铃声文件
|
||||||
|
if let groupSoundUrl = getSoundsGroupDirectory()?.appendingPathComponent(url.lastPathComponent) {
|
||||||
|
try? fileManager.removeItem(at: groupSoundUrl)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 获取 Library 目录下的 Sounds 文件夹
|
/// 获取 Library 目录下的 Sounds 文件夹
|
||||||
/// 如果不存在就创建
|
/// 如果不存在就创建
|
||||||
func getSoundsDirectory() -> URL {
|
private func getSoundsDirectory() -> URL {
|
||||||
let soundsDirectoryUrl = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first!.appending("/Sounds")
|
let soundsDirectoryUrl = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first!.appending("/Sounds")
|
||||||
if !fileManager.fileExists(atPath: soundsDirectoryUrl) {
|
if !fileManager.fileExists(atPath: soundsDirectoryUrl) {
|
||||||
try? fileManager.createDirectory(atPath: soundsDirectoryUrl, withIntermediateDirectories: true, attributes: nil)
|
try? fileManager.createDirectory(atPath: soundsDirectoryUrl, withIntermediateDirectories: true, attributes: nil)
|
||||||
}
|
}
|
||||||
return URL(fileURLWithPath: soundsDirectoryUrl)
|
return URL(fileURLWithPath: soundsDirectoryUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 保存到共享文件夹,供 NotificationServiceExtension 使用(例如持续响铃需要拿到这个文件)
|
||||||
|
private func saveSoundToGroupDirectory(url: URL) {
|
||||||
|
guard let groupUrl = getSoundsGroupDirectory() else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let soundUrl = groupUrl.appendingPathComponent(url.lastPathComponent)
|
||||||
|
try? fileManager.copyItem(at: url, to: soundUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 获取共享目录下的 Sounds 文件夹
|
||||||
|
/// 如果不存在就创建
|
||||||
|
private func getSoundsGroupDirectory() -> URL? {
|
||||||
|
if let directoryUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.bark")?.appendingPathComponent("Sounds") {
|
||||||
|
if !fileManager.fileExists(atPath: directoryUrl.absoluteString) {
|
||||||
|
try? fileManager.createDirectory(atPath: directoryUrl.absoluteString, withIntermediateDirectories: true, attributes: nil)
|
||||||
|
}
|
||||||
|
return directoryUrl
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -136,10 +136,10 @@ class CallProcessor: NotificationContentProcessor {
|
|||||||
|
|
||||||
func getSoundInCustomSoundsDirectory(soundName: String) -> String? {
|
func getSoundInCustomSoundsDirectory(soundName: String) -> String? {
|
||||||
// 扩展访问不到主APP中的铃声,需要先共享铃声文件,再实现自定义铃声响铃
|
// 扩展访问不到主APP中的铃声,需要先共享铃声文件,再实现自定义铃声响铃
|
||||||
guard let soundsDirectoryUrl = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first?.appending("/Sounds") else {
|
guard let soundsDirectoryUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.bark")?.appendingPathComponent("Sounds") else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
let path = soundsDirectoryUrl.appending("/\(soundName)")
|
let path = soundsDirectoryUrl.appendingPathComponent(soundName).absoluteString
|
||||||
if FileManager.default.fileExists(atPath: path) {
|
if FileManager.default.fileExists(atPath: path) {
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user