Кому-нибудь удалось отобразить кнопку "Нравится" на Facebook в приложении Canvas для Facebook?
Кому-нибудь повезло с отображением кнопки "Нравится" на Facebook в их приложении на Facebook для Unity? В текущем Facebook SDK для Unity (6.2.1) нет поддержки кнопки "Мне нравится", что действительно раздражает, поскольку они поддерживают социальные кнопки в своих iOS, Android и Web SDK. Я пытался внедрить javascript, необходимый для отображения кнопки Like над холстом, используя функцию Unity's Application.ExternalEval, и мне действительно удалось отобразить кнопку, но javascript, который Facebook предоставляет для включения их javascript SDK, вызывает FB. Функция init в их Unity SDK по какой-то причине не работает. Я надеюсь, что кто-то знает, почему и есть предложения о том, как это исправить. Вот код, который у меня есть:
// add Like button above the canvas
string strFacebookSDKScript =
"(function(d, s, id) {" +
"var js, fjs = d.getElementsByTagName(s)[0];" +
"if (d.getElementById(id)) return;" +
"js = d.createElement(s); js.id = id;" +
"js.src = \"//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=INSERT_APP_ID&version=v2.0\";" +
"fjs.parentNode.insertBefore(js, fjs);" +
"}(document, 'script', 'facebook-jssdk'));";
// this calls the above javascript to initialize the SDK but appears to prevent the FB.Init within Unity working later on
Application.ExternalEval(strFacebookSDKScript);
// this code displays the Like button
string strLikeButton = "<div class=\"fb-like\" data-href=\"https://www.facebook.com/YOUR_APP_LINK\" data-layout=\"button_count\" data-action=\"like\" data-show-faces=\"true\" data-share=\"true\"></div>";
FacebookManager.AddHTMLAboveCanvas("div", strLikeButton);
Приведенный выше код вызывается как можно раньше в одном из методов Awake объекта сцены. Затем у меня есть функция "AddHTMLAboveCanvas" в файле FacebookManager.cs, чтобы использовать приложение Unity's Application.ExternalEval для вставки HTML-кода над холстом. Обратите внимание, что этот код успешно отображает html над холстом Facebook в браузере Firefox, но на самом деле он запутывается во всех других браузерах, вставляя его ниже холста и портя размер холста, так что, возможно, кто-то знает, как это исправить тоже?
public static void AddHTMLAboveCanvas (string strElement, string strContent)
{
string strInjection = "if(navigator.userAgent.indexOf(\"Firefox\") >= 0){" +
"var headerElement = document.createElement('" + strElement + "');" +
"headerElement.innerHTML = '" + strContent + "';" +
"var body = document.getElementsByTagName('body')[0];" +
"var insertionPoint = body.children[0]; " +
"body.insertBefore(headerElement, insertionPoint);" +
"}else{" +
// not working on IE, Safari or Chrome yet
"var headerElement = document.createElement('" + strElement + "');" +
"headerElement.innerHTML = '" + strContent + "';" +
"var body = document.getElementsByTagName('body')[0];" +
"var insertionPoint = body.children[0]; " +
"var unityPlayer = document.getElementById('unityPlayerEmbed');" +
"unityPlayer.parentNode.insertBefore(headerElement, unityPlayer.nextSibling);" +
"var embedTag = unityPlayer.getElementsByTagName('embed');" +
"embedTag[0].setAttribute('style','display:block;width:1200px;height:600px');" +
"};";
Application.ExternalEval(strInjection);
}