Как определить, находится ли 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);