Кому-нибудь удалось отобразить кнопку "Нравится" на 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);
}

0 ответов

Другие вопросы по тегам