Skip to content

KotyaVan/Flash-JS-VK-API-Bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Flash-JS-VK-API-Bridge

Flash-JS-VK-API-Bridge - посредник для Flash приложений, встроенных в iFrame. Использование данного посредника дает возможность обращаться к методам API соц. сети Вконтакте из AS3.

Пример приложения, использующий этот посредник==> https://vk.com/app6213458

Плюсы работы через данного посредника:

  • Работа приложений в Google Chrome. Google Chrome блокирует работу предоставленного соц. сетью Flash SDK на основе LocalConnection'a
  • Возможность добавить HTML контент к приложению и другие плюшки. Так же, например, можно добавить виджеты.

Принцип работы посредника

Краткое описание: Принцип работы посредника построен на вызове функции JS из Flash'a и наоборот. Это достигается за счёт методов класса ExternalInterface. В свою очередь, JS взаимодействуют с JavaScript SDK, которую предоставляет социальная сеть. В html страницу объект-flash встраивается по средствам swfObject.

Подключение во Flash

Подключите к вашему проекту необходимые классы:

//as code
import ExternalFlash.APIConnection;
import ExternalFlash.events.CustomEvent;

Если Вам так же необходимо создания кнопок, со стилем социальной сети, не забудьте подключить данный класс:

//as code
import ExternalFlash.ui.VKButton

Создайте экземпляр класса APIConnection, проверьте готов ли посредник к работе. В случае если посредник еще не готов, подпишитесь на событие CustomEvent.ON_EI_INIT_END. Начинайте работать с посредником только после того, как он будет готов к работе. В противном случае, он может работать не корректно.
Пример создания экземпляра, с проверкой на инициализацию:

//as code
//Создаем экземпляр класса APIConnection
_VK = new APIConnection();

//Перед тем, как делать запросы, добавлять слушатели и т.д. Необходимо обязательно убедится, что посредник уже инициализировался.
//Иначе, посредник будет работать некорректно. Информация о инициализации может быть трех типов:
if(_VK.eiConnectStatus == "WORKING"){
  //Посредник инциализировался, все работает. Только теперь можем работать с API
  //Тут можно вызывать функцию, которая начнет работать с методами API
} else if(_VK.eiConnectStatus == "NOT_WORK"){
  //Посредник не работает по какой либо причине.Это окончательный статус, он не изменится. Причина непоказывается, но если вы захотите сделать ее вывод, Вы можете посмотреть в классе ExtIntClass список причин, и выводить их оттуда
} else if(_VK.eiConnectStatus == "CONNECTION"){
  //Посредник еще не загрузился. В этом случае надо поставить слушатель на экз. класса и слушать событие CustomEvent.ON_EI_INIT_END
  //Событие приходит вместе с параметром connectState. Может быть WORKING - значить посредник инициализировался. NOT_WORK - посредник не будет работать.
  _VK.addEventListener(CustomEvent.ON_EI_INIT_END, function (event:CustomEvent){
      if(event.params.connectState == "WORKING"){
        //Посредник инциализировался, все работает. Только теперь можем работать с API
        //Тут можно вызывать функцию, которая начнет работать с методами API
      }else{
        //Посредник не работает
      }
      _VK.removeEventListener(CustomEvent.ON_EI_INIT_END, arguments.callee);
  })
}

Статус соединения _VK.eiConnectStatus может быть трех типов:

  • WORKING - посредник работает. Можно работать с API.
  • NOT_WORK - посредник не работает. В рамках данной библиотеки, вывод причин, по которой посредник не работает, не предусмотрен. Но при желании, вы можете организовать вывод этих причин самостоятельно. Все причины, по котором посредник может не работать, находятся в классе ExtIntClass.
    Возможные причины: не работает ExternalInterface в данном контейнере(браузере), ошибка добавления функции через ExternalInterface, не работает JavaScript SDK и др.
  • CONNECTION - на данный момент продолжается подключение. Не известно, будет ли работать посредник, поэтому нужно поставить слушатель на событие CustomEvent.ON_EI_INIT_END.

Параметры события CustomEvent.ON_EI_INIT_END:

  • WORKING - посредник успешно инициализировался и уже работает. Можно работать с API.
  • NOT_WORK - при инициализации посредника произошла ошибка. Он работать не будет.

Это событие может произойти только один раз - при инициализации. Поэтому слушать его, кроме как в этом случае, не надо.

Данные, полученные при запуске приложения, передаются во flash через flashVars. Получить их можно также, как при использовании Flash SDK.

//as code
var _flashVars: Object = stage.loaderInfo.parameters as Object;

Эти параметры будут доступны сразу после запуска приложения. Чтобы ими воспользоваться, необязательно дожидаться инициалии посредника.

Переход с Flash SDK

Все названия методов, которые использовались в предоставляемом соц. сетью Flash SDK, такие же, как используются в данном посреднике. Таким образом, при переходе с Flash SDK, работы с экземпляром класса данного посредника, будет происходить так же.
Что необходимо учесть при переходе:

  • Необходимо проверять инициализацию посредника. Работать с API - только после инициализации посредника.
  • Незабыть импортировать пакеты данного посредника, и при необходимости, удалить старые.
  • Если приложение использовало не актуальную версию API, например 3.0, нужно изменить эту версию в JavaScript SDK. Указание версии производится в файле vkapi.js.
//js code
}, '5.68'); //string 9

Вероятно, это решит проблему не корректной работы приложения, и не будет необходимости, изменять в нем названия/аргументы методов API.

Еще пару слов...

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

About

Flash <--> JS мост, позволяющий Flash работать с VK API, будущим встроенным в iFrame

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published