2015-08-22 5 views
3

Я слышал, что у iOS есть поддержка блокировщиков контента, и что вся блокировка выполняется с помощью файла blockerList.json, который находится в приложении Bundle. Хотя я знаю, что SFContentBlockerManager.reloadContentBlockerWithIdentifier() перезагрузит данные в blockerList.json. Однако я не вижу в этом никакого смысла; blockerList.json является частью основного пакета и не может быть изменен. Таким образом, существует ли способ, которым может быть изменен blockerList.json (или расширение может указывать на другой файл, удаляться и воссоздаваться, а не использовать JSON и т. Д.)?Перезагрузка блокировщиков контента в iOS

ответ

5

Вам не обязательно использовать blockerList.json из комплекта в качестве источника JSON. Есть несколько разных вещей, которые вы можете сделать для динамического изменения блока содержимого.

  1. Вы можете иметь расширение загрузить новый файл в формате JSON с сервера и обновлять блокатор при запуске приложения
  2. Put расширения приложения и содержания блокатора в том же приложении группы, так что данные могут быть переданы между два, а затем выполните одно из следующих действий:
    • есть приложение создать/изменить файл JSON в общей папке группы, которая будет читаться расширением
    • есть данные приложения записи на совместно используемом по умолчанию группы пользователей и затем добавьте расширение для создания файла JSON для загрузки
+0

Не могли бы вы объяснить, как вызвать расширение блокатора из приложения? – liudanking

1

Да я сделал это, прочитав все правила блокировки от mainbundle файла JSON и создал файл JSon (т.е.. SharedJsonFile.json) в контейнере идентификатора группы приложений. Затем я написал все правила SharedJsonFile.json.

[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: YOUR_APP_GROUP_IDENTIFIER] URLByAppendingPathComponent: @ "SharedJsonFile.json"]

Поэтому, когда я хочу, чтобы внести изменения, и я обновить SharedJsonFile.json, а затем перезагрузить contentblocker. Чтобы прочитать JSON я использовал этот URL-путь в методе beginRequestWithExtensionContext внутреннего абонента -

NSURL * jsonPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: YOUR_APP_GROUP_IDENTIFIER] URLByAppendingPathComponent: @ "SharedJsonFile.json"];

Смежные вопросы