在我的iPad上使用iOS Facebook Messenger App,我正在构建一个可以向用户发送媒体播放器链接的机器人。
用户点击链接后,会在Facebook Messenger App内打开内联链接(至少这是iPad的行为)。在媒体播放结束时,我想自动关闭内联浏览器窗口并将用户返回到当前对话。
当我尝试执行window.close()
并未关闭在iPad Facebook Messenger中打开的内联浏览器窗口时。有没有其他方法可以关闭Facebook浏览器窗口?
答案 0 :(得分:2)
Facebook Messenger Extension close方法是最兼容的方法。在移动设备上关闭webview,在桌面上它将关闭选项卡(在桌面信使的新标签页中打开网页浏览量)。
首先,将您的域列入白名单以便能够使用Messenger Extensions,为您的应用使用访问令牌。使用您为机器人生成的page_access_token。
curl -X POST -H "Content-Type: application/json" -d '{
"whitelisted_domains":[
"https://petersfancyapparel.com"
]
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN"
使用视频
在您的网页浏览页面上加载Messenger SDK<script>
(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.com/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));
</script>
然后向视频元素添加一个事件监听器以调用关闭浏览器功能
<video src="video.ogv" id="myVideo">
video not supported
</video>
<script type='text/javascript'>
document.getElementById('myVideo').addEventListener('ended',myHandler,false);
function myHandler(e) {
MessengerExtensions.requestCloseBrowser(function success() {
}, function error(err) {
});
}
</script>
快速和脏的ios唯一的方法是重定向到https://www.messenger.com/closeWindow/?image_url=IMAGE_URL&display_text=DISPLAY_TEXT
,它在窗口关闭之前短暂显示指定的图像和文本。 Docs on this
为此你会做
window.replace('https://www.messenger.com/closeWindow/?image_url=IMAGE_URL&display_text=DISPLAY_TEXT')