Загрузка flash .swf с использованием интерфейса NPAPI

Я попытался написать программу с загрузкой файла SWF напрямую, и я собираюсь использовать NPAPI для реализации этой программы.

Но я не знаю, как это начать. Я имею в виду, как общаться между какао и NPAPI? А как построить архитектуру программы?

Я много раз искал в Google, по этой теме не так много полезной информации.

Я надеюсь, что кто-нибудь может мне помочь.

Любое предложение будет оценено по достоинству.


person Ryan Liang    schedule 16.02.2011    source источник
comment
Также стоит посмотреть этот вопрос о stackoverflow, посвященном той же проблеме..   -  person taxilian    schedule 17.02.2011
comment
Большое спасибо. Я собираюсь попробовать использовать FireBreath для создания подключаемого модуля Flash и загрузить подключаемый модуль на Mac, возможно, он работает.   -  person Ryan Liang    schedule 22.02.2011


Ответы (2)


Создание хоста NPAPI нетривиально; если вы действительно хотите сделать это самостоятельно с нуля, лучше всего будет посмотреть исходный код для Gecko, WebKit и / или Chromium и повторно использовать все, что вы можете оттуда (при условии, что исходная лицензия вашего приложения делает это возможным).

Помимо этого, лучшим источником является документация Mozilla NPAPI вместе со списком принял расширения NPAPI для более поздних изменений (поскольку вы упомянули Mac, вам необходимо прочитать и понять хотя бы Cocoa, Core Graphics, Core Animation и переговорные предложения). Просто имейте в виду, что многое из того, как работает NPAPI, де-факто является стандартом, основанным на том, что делают другие браузеры, поэтому одной документации будет недостаточно.

В комментарии вы упомянули, что не хотите использовать WebKit из-за «проблемы безопасности» - если вы знаете о проблеме безопасности в WebKit, почему бы не исправить ее вместо того, чтобы создать действительно сложную систему с нуля? Очень, очень маловероятно, что если вы создадите с нуля реализацию хоста NPAPI, вы в конечном итоге сделаете меньше ошибок безопасности, чем существует в зрелой реализации, которая была протестирована, отлажена и улучшена с течением времени. ряда лет.

person smorgan    schedule 16.02.2011
comment
На самом деле, я хочу реализовать эту программу с использованием WebKik (потому что в Интернете больше ресурсов), и я никогда не касался такого рода разработки. Но мой руководитель сказал мне, что использование WebKit снизит производительность и возникнет проблема с безопасностью, связанная с проблемой междоменного взаимодействия. Поэтому он попросил меня изучить и построить программу с использованием NPAPI. Точнее, мне нужно загрузить подключаемый модуль Flash и отправить запрос подключаемому модулю с просьбой загрузить SWF или управлять внутренним поведением SWF. Спасибо за помощь. - person Ryan Liang; 17.02.2011
comment
Тогда я надеюсь ради вас, что ваш проект имеет исходную лицензию, которая позволяет вам начать с существующей реализации браузера с открытым исходным кодом. Если нет, то ваша работа сводится к тому, чтобы в одиночку написать с нуля реализацию сложного API с недостаточными спецификациями, который полон тонких проблем, без каких-либо предварительных знаний и каким-то образом в конечном итоге приводит к чему-то, что лучше практически во всех пути, чем продукт лет работы команды WebKit. Как человек с большим опытом (вы увидите мое имя на некоторых из этих расширений NPAPI), я настоятельно рекомендую вам не идти по этому пути. - person smorgan; 17.02.2011

В частности, учитывая объем фона плагинов, который, похоже, у вас есть на данный момент, я настоятельно рекомендую вам использовать FireBreath. По крайней мере, это поможет вам разобраться в части плагинов. Остальное зависит от вас, и это будет непросто.

Следует знать, что разные браузеры в Mac OS X используют разные модели рисования и разные модели событий. Для моделей событий общее практическое правило состоит в том, что 32-битные браузеры поддерживают Carbon, а 64-битные - Cocoa, хотя некоторые 32-битные браузеры поддерживают Cocoa. В зависимости от 32/64 бит и браузера (и версии) вам может потребоваться рисовать с помощью QuickDraw, Cocoa, CoreAnimation или CoreGraphics.

дополнительную информацию об этом на вики FireBreath (главный веб-сайт).

person taxilian    schedule 16.02.2011
comment
Спасибо за совет! Но я не собираюсь делать плагин. Я хочу создать оконное приложение Mac с помощью только одной кнопки, просто нажмите кнопку, и приложение отобразит всплывающую SWF-анимацию. Я не пытаюсь использовать WebKit и Flash'in'App для реализации своей программы, потому что у Webkit есть проблемы с безопасностью, а Flash'in'App стоит больших денег. С тех пор я решил использовать NPAPI. Я оценил ваш совет, надеюсь, вы дадите мне больше предложений. Спасибо. - person Ryan Liang; 16.02.2011
comment
Хорошо; Я бы посмотрел на проект NPAPIHost в FireBreath, который является ядром хоста плагинов. Однако, как сказал сморган, то, что вы делаете, очень нетривиально. Вместо этого я бы посмотрел на использование WebKit; то, что вы пытаетесь сделать, непросто. Тем не менее, ссылки, которые я вам дал, по-прежнему полезны, потому что, если вы не знаете, как реализовать свои собственные, вы не сможете разместить чужие. Как сказал сморган, если вы знаете, что есть проблема с безопасностью, исправьте ее или, по крайней мере, сообщите об этом. - person taxilian; 16.02.2011
comment
Большое спасибо. Проблема безопасности связана с проблемой междоменного доступа. Я не знаю конкретных деталей, потому что эта тестовая программа была создана не мной, так что я просто это знаю. - person Ryan Liang; 17.02.2011