【问题标题】:How to detect if WebGL is on Facebook Canvas如何检测 WebGL 是否在 Facebook Canvas 上
【发布时间】:2015-10-07 10:34:31
【问题描述】:
我目前面临一个问题,我正在使用 Facebook 插件 v.7.1.0 for Unity。我通过 WebGL 分发,但我的应用程序需要在 Facebook 上运行,而且在 Facebook 之外运行。使用 FB.Init 时,我得到一个成功的回调,这是我在为 WebPlayer 部署时用于测试是否在 Facebook 画布上的回调。
所以我的问题是,我如何检测 WebGL 播放器是否在 facebook 画布上?
【问题讨论】:
标签:
unity3d
facebook-unity-sdk
【解决方案1】:
此解决方案仅发布给任何想要与我使用的相同解决方案的人。
解决方案是使用此处描述的 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);
【解决方案2】:
在 Unity 的 WebGL 中,您可以使用 javascript 进行通信。 link
所以,我调用了一个 javascript 函数来检查当前的网址
C#
Application.ExternalCall("GetCurrentUrlType");
JS
function GetCurrentUrlType(){
var url = document.URL;
if (url.indexOf("apps.facebook.com") > -1)
SendMessage("GameObject", "CheckURL", "facebook");
}
希望有帮助!!!