Как определить, находится ли WebGL на Facebook Canvas

Я в настоящее время сталкиваюсь с проблемой, где я использую плагин Facebook v.7.1.0 для Unity. Я распространяю через WebGL, но мое приложение должно работать как на Facebook, так и за пределами Facebook. При использовании FB.Init я получаю успешный обратный вызов, который я использовал для тестирования на холсте Facebook или нет при развертывании для WebPlayer.

Итак, мой вопрос: как мне определить, находится ли проигрыватель WebGL на холсте Facebook или нет?

2 ответа

Решение

В Unity WebGL вы можете общаться с помощью JavaScript. ссылка на сайт

Итак, я вызываю функцию JavaScript, чтобы проверить текущий URL

C#

Application.ExternalCall("GetCurrentUrlType");

JS

function GetCurrentUrlType(){
  var url = document.URL;
  if (url.indexOf("apps.facebook.com") > -1)
    SendMessage("GameObject", "CheckURL", "facebook");
}

Надеюсь, это поможет!

Это решение опубликовано для тех, кто хотел бы использовать то же решение, что и я.

Решением было использовать плагин jslib, как описано здесь http://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html

var FacebookCanvasChecker = {
    GetSite: function()
    {
        var url = document.URL;
        var returnStr = "";
        if (url.indexOf("apps.facebook.com") > -1)
            returnStr = "facebook";
        else
        {
            // try with referer
            if(document.referrer)
            {
                url = document.referrer;
                if (url.indexOf("apps.facebook.com") > -1)
                    returnStr = "facebook";
                else
                    returnStr = url;
            }
            else
                returnStr = url;
        }

        var buffer = _malloc(returnStr.length + 1);
        writeStringToMemory(returnStr, buffer);
        return buffer;
    }
};

mergeInto(LibraryManager.library, FacebookCanvasChecker);
Другие вопросы по тегам