2015-12-09 5 views
2

My iframe приложение на Facebook (сделанное с Unity webgl) теряет фокус после вызова диалогового окна входа в Facebook (FB.LogInWithReadPermissions) или любого другого взаимодействия с Facebook, которое вызывает диалоговое окно (FB.AppRequest и т. Д.).).Unity webgl Facebook canvas приложение теряет фокус при использовании диалогового окна входа в систему

Фокус не возвращается в приложение, поэтому вам нужно щелкнуть в любом месте iframe, чтобы увидеть результаты, что не очень удобно.

Любое обходное решение?

Edit:

Быстрое и грязное решение, но оно работает:

setInterval (
    function() { 
     if (!document.hasFocus()) { 
      window.focus(); 
     } 
    }, 
    1000 
); 

На самом деле document.hasFocus() проверка не требуется.

Я не думаю, что есть способ узнать, когда диалоговое окно Facebook закрывается при использовании SDK Facebok Unity, поскольку обратный вызов выполняется в приложении WebGL, которое потеряло фокус, поэтому оно не работает, пока оно фактически не достигнет фокуса.

Возможно, лучше использовать Facebook Javascript SDK для Unity WebGL-игр на Facebook?

ответ

0

У меня была аналогичная проблема довольно давно. Я решил это, добавив одну функцию прослушивателя в index.html. Он будет слушать, если iframe потерял фокус и жесткий сброс фокуса на него. Have a look at onblur event.

+0

Спасибо, придумал временное решение, используя [document.hasFocus] (https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus), отредактировав вопрос. – user3383180

+0

Также, когда я закрываю диалоговое окно Facebook, 'onblur' для меня почему-то не работает. – user3383180

0

Он работал 4 меня на единстве 5.2 с помощью этого: на C# в facebook обратного вызова:

Application.ExternalCall("recuperaFocus"); 

и на HTML, обслуживающую фейсбук холст следующих ЯШ:

function recuperaFocus(){ 
     this.focus();  
}