Я не верю, что для этого существует общедоступный документированный метод.
Взгляните на исходный код WebView, в частности на исходный файл «WebPluginDatabase.mm», чтобы понять, как оцениваются пути подключаемых модулей и какой приоритет отдается подключаемым модулям, найденным в разных местах. По умолчанию кажется, что путь поиска идет в следующем порядке:
- ~/Библиотека/Интернет-плагины
- /Библиотека/Интернет-плагины
- Папка плагинов App Bundle
Таким образом, по замыслу любой подключаемый модуль, который вы включаете в комплект своего приложения, по умолчанию будет заменен версией, найденной в папке пользовательской или системной библиотеки.
Если использование недокументированного SPI является вариантом, я вижу, что в WebView.mm есть метод, который по существу переопределяет список путей плагинов, вызывая соответствующую конфигурацию в синглтоне WebPluginDatabase:
- (void)_setAdditionalWebPlugInPaths:(NSArray *)newPaths
{
if (!_private->pluginDatabase)
_private->pluginDatabase = [[WebPluginDatabase alloc] init];
[_private->pluginDatabase setPlugInPaths:newPaths];
[_private->pluginDatabase refresh];
}
Что касается решений на основе SPI, в другом вопросе о переполнении стека есть ответ, в котором описывается переопределение частного метода WebView для предоставления определенного плагина на основе типа MIME:
Запретить Flash в Cocoa WebView
Это дает мне еще одну идею, которая может подойти для ваших целей. Поскольку вы отвечаете за весь процесс просмотра, вы можете рассмотреть возможность изменения всего HTML-кода, представленного в вашем браузере, сканирования и изменения любого контента, который обычно привязан к плагину Flash, и изменения его для вызова пользовательского типа MIME. или что-то еще, чтобы вместо этого загружался ваш «DitchenFlash»;)
person
danielpunkass
schedule
10.09.2011