I have heard that iOS has support for content blockers, and that all blocking is done by a file called blockerList.json
that resides in the App Bundle. While I know that SFContentBlockerManager.reloadContentBlockerWithIdentifier()
will reload the data in blockerList.json
. However, I don't see any use in this; the blockerList.json
is part of the main bundle and can't be modified. Thus, is there any way that the blockerList.json
can be modified (or the extension can point to another file, be deleted and recreated, not use JSON, etc.)?
You don't have to use blockerList.json
from the bundle as your JSON source. There are a couple different things you can do to dynamically change the content blocker.
Yes i have done this by reading all blocking rules from mainbundle json file and created a json file(i.e. SharedJsonFile.json) in App Group identifier container. Then i wrote all rules to SharedJsonFile.json.
[[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_IDENTIFIER]
URLByAppendingPathComponent:@"SharedJsonFile.json"]
So whenever i want to make modifications and i update SharedJsonFile.json and then reload contentblocker.
To read the json i have used this URL path in extension's beginRequestWithExtensionContext
method -
NSURL *jsonPath = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_IDENTIFIER]
URLByAppendingPathComponent:@"SharedJsonFile.json"];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With