我尝试制作一个Safari扩展来屏蔽广告。我想从应用程序生成blockerList.json
。为此,我从模型中生成JSON,然后将其保存到注册的应用程序组中。
以下是我的代码,用于将模型转换为JSON,然后将其保存到我的应用程序组中:
let groupName = "<MY_APP_GROUP>"
let documentsDirectory = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: groupName)
let blockListURL = documentsDirectory!.appendingPathComponent("blockerList.json")
let toBlockList = [
DomainBlockModel(
action: ActionModel(type: "block"),
trigger: TriggerModel(url_filter: ".*", if_domain: ["*google.com", "*youtube.com", "*facebook.com"])
)
]
do {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let jsonData = try encoder.encode(toBlockList)
try jsonData.write(to: blockListURL)
print(String(data: jsonData, encoding: .utf8)!)
} catch {
print(error)
print("Couldn't write content blocker JSON file")
}
print(blockListURL.absoluteString)
let fileExists = FileManager.default.fileExists(atPath: blockListURL.absoluteString)
print("File exists: \(fileExists.description)")
上面的代码产生以下日志输出:
[
{
"trigger" : {
"url-filter" : ".*",
"if-domain" : [
"*google.com",
"*youtube.com",
"*facebook.com"
]
},
"action" : {
"type" : "block"
}
}
]
file:///<app-group-path>/blockerList.json
File exists: false
应用本身和Safari扩展都具有相同的应用组,并已注册到权利文件中。
我对日志的解释是blockerList.json
没有保存到应用程序组(“文件存在:false”),但是为什么没有错误/异常?
有人可以帮助解决此类问题吗?还是有人遇到此类问题?
谢谢!