По-видимому, «не поддерживается на мобильных устройствах», действительно означает, что он не будет работать на мобильном устройстве.
Так что, если вам не нужно реализовывать API-интерфейс «Отправить» на мобильной стороне, вы можете нюхать User-Agent, чтобы проверить, не является ли он настольным или нет.
Возможно, вы захотите прочитать Browser detection using the user agent.
Вы могли бы попробовать что-то вроде этого:
if (navigator.userAgent.indexOf("Mobi") > -1){
//do your thing here
}
Я создал следующий пример, чтобы подтвердить, что это работает. Чтобы проверить, использует ли API facebook размер, чтобы «различать» против мобильных устройств, я попробовал как Chrome, так и Firefox как в полноэкранном режиме, так и поменьше, чем по ширине и высоте. Чтобы проверить мобильные устройства, я использовал функцию Bowser SIM в Red Hat JBoss Developer Studio против следующих (как в вертикальной, так и горизонтальной ориентации): Samsung Galaxy S3, Samsung Galaxy Note 10.1, IPhone 4 & 5 и Retina IPad 4.
Вывод заключается в том, что нюхание UA работало!
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#button-1").click(function(event) {
if (navigator.userAgent.indexOf("Mobi") > -1){
window.location.assign("#page-2");
} else {
window.location.replace("https://www.facebook.com/dialog/send?" +
"app_id=123050457758183" +
"&link=http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html" +
"&redirect_uri=https://www.bancsabadell.com/cs/Satellite/SabAtl/"
);
}
});
})
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : '123050457758183', // App ID from the app dashboard
status : true, // Check Facebook Login status
xfbml : true // Look for social plugins on the page
});
// Additional initialization code such as adding Event Listeners goes here
};
// Load the SDK asynchronously
(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/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div data-role="page" id="page-1" data-theme="b">
<div data-role="header" data-theme="b">
<h1>Try to Send.</h1>
</div>
<div data-role="content">
<a href="#" id="button-1" data-role="button" data-theme="b">Send</a>
</div>
</div>
<div data-role="page" id="page-2" data-theme="b">
<div data-role="header" data-theme="b">
<h1>Share</h1>
</div>
<div data-role="content">
<div class="fb-share-button" data-href="http://developers.facebook.com/docs/plugins/" data-type="button_count"></div>
</div>
</div>
</body>
</html>
Следующая моя попытка использовать «Отправить» API в мобильной среде.
SDK для Facebook не является открытым исходным кодом, однако код FacebookJS. Первоначально после рассмотрения FacebookJS source и документов я думал, что фраза «Не поддерживается на мобильных устройствах» не означает, что она заблокирована на мобильных устройствах. Это означает, что они не создали хорошую симпатичную мобильную версию, как для «share».
Это привело меня к мысли, что потенциально вы можете использовать опцию URL Redirect в формате HTML5/jQuery Mobile, которая отправляет «отправить». По крайней мере, это то, что я попробую.;)
ОДНАКО
После попытки осуществить вышеупомянутую идею, я обнаружил, что это не возможно, чтобы отобразить «отправить» диалог на любом мобильном завещанию, поскольку facebook API считывает User-Agent и перенаправляет вас от Сайт «www.facebook» на «m.facebook».
Существует несколько билетов на facebook об этом самом деле.
Send dialog is not working on mobile device
Send Dialog Doesn't Work on Mobile Web
Send dialog broken for mobile devices
Вы можете проверить это, используя URL Перенаправление пример URL из Send API и ввести его в браузере телефонов.
https://www.facebook.com/dialog/send?app_id=123050457758183&link=http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html&redirect_uri=https://www.bancsabadell.com/cs/Satellite/SabAtl/
Возможно, хотя я не рекомендую, чтобы изменить User-Agent на стороне сервера и перенаправить URL после этого. Обратите внимание, что вы должны делать это со стороны сервера, так как вам не удается изменить это из браузера по соображениям безопасности. Как я уже сказал, это взломать, что вы должны только попробовать в качестве последнего средства. Есть несколько сообщений, связанных с этим:
Want to load desktop version in my webview using uastring
Force webview to display desktop sites
Setting WebView to view Desktop Site and Not Mobile Site
Как бы вы реализуете "URL Перенаправление опцию в виде HTML5/JQuery Mobile, которая представляет "отправить"" ? –
Я перечитал ваш вопрос и обновил ответ, чтобы включить обнаружение. –
Я обновил ответ, чтобы включить пример. Извините за раннее замешательство, я надеюсь, что это поможет. –