iOS Facebook Messenger,在打开并完成任务后自动关闭链接

Hel*_*ope 7 bots ipad ios facebook-messenger botkit

在我的iPad上使用iOS Facebook Messenger应用程序,我正在构建一个机器人,它将向用户发送媒体播放器链接.

用户点击链接后,它会在Facebook Messenger App内打开内联链接(至少这是iPad的行为).在媒体播放结束时,我想自动关闭内联浏览器窗口并将用户返回到当前对话.

当我尝试这样做window.close()并没有关闭在iPad Facebook Messenger中打开的内联浏览器窗口时.有没有其他方法可以关闭Facebook浏览器窗口?

Jon*_*rch 2

广泛支持

Facebook Messenger Extension close 方法是最兼容的方法。在移动设备上,它将关闭 Web 视图,在桌面上,它将关闭选项卡(Web 视图在桌面 Messenger 的新选项卡中打开)。

首先,将您的域列入白名单以便能够使用 Messenger 扩展,并使用您的应用程序的访问令牌。使用您为机器人生成的 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"
Run Code Online (Sandbox Code Playgroud)

使用视频将 Messenger SDK 加载到您的 webview 页面上

<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>      
Run Code Online (Sandbox Code Playgroud)

然后给video元素添加一个事件监听器来调用关闭浏览器函数

<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>
Run Code Online (Sandbox Code Playgroud)

仅限 iOS

快速而肮脏的 ios 唯一方法是进行重定向,https://www.messenger.com/closeWindow/?image_url=IMAGE_URL&display_text=DISPLAY_TEXT在窗口关闭之前短暂显示指定的图像和文本。关于此的文档

为此你会做

window.replace('https://www.messenger.com/closeWindow/?image_url=IMAGE_URL&display_text=DISPLAY_TEXT')
Run Code Online (Sandbox Code Playgroud)