我正在使用iOS内容拦截器,但我想让用户选择要阻止的列表(广告,曲目,成人网站等)。我发现应用扩展程序和包含应用程序的捆绑包是分开的,无法访问彼此的文件,因此需要共享容器。我创建了一个应用程序组,但似乎我在那里写的并没有实际写入。我试图做的是从包中读取.json文件,然后将其写入内容阻止程序扩展可以访问的sharedJson.json文件。
func writeJsonToSharedJson(arrayOfStrings:[String]) -> Bool {
let composedString = arrayOfStrings.joined(separator: "\n")
let sharedJsonPath = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.alexspear.BlockerTestGroup")?.appendingPathComponent("sharedJson.json")
//let sharedJsonPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("sharedJson.json")
do {
try composedString.write(to: sharedJsonPath!, atomically: true, encoding: .utf8)
}
catch {
print("Could not write to sharedJson.json\n")
return false
}
return verifyJsonWrite()
}
结果是通过verifyJsonWrite()函数,没有任何东西。假设您可以在应用程序组容器中创建文件,我是否错误?我也尝试过使用FileManager的createFile函数,结果相同。