如何检测 WebGL 是否在 Facebook Canvas
How to detect if WebGL is on Facebook Canvas
我目前遇到一个问题,我正在使用适用于 Unity 的 Facebook 插件 v.7.1.0。我通过 WebGL 进行分发,但我的应用程序需要 运行 既在 Facebook 上,也在 Facebook 之外。当使用 FB.Init 时,我得到一个成功的回调,这是我在为 WebPlayer 部署时用来测试是否在 Facebook canvas 上的回调。
所以我的问题是,如何检测 WebGL 播放器是否在 facebook canvas 上?
在Unity的WebGL中,可以与javascript进行通信。 link
所以,我调用一个 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);
我目前遇到一个问题,我正在使用适用于 Unity 的 Facebook 插件 v.7.1.0。我通过 WebGL 进行分发,但我的应用程序需要 运行 既在 Facebook 上,也在 Facebook 之外。当使用 FB.Init 时,我得到一个成功的回调,这是我在为 WebPlayer 部署时用来测试是否在 Facebook canvas 上的回调。
所以我的问题是,如何检测 WebGL 播放器是否在 facebook canvas 上?
在Unity的WebGL中,可以与javascript进行通信。 link
所以,我调用一个 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);