iOS Facebook Messenger,打开并完成任务后自动关闭链接
Posted
技术标签:
【中文标题】iOS Facebook Messenger,打开并完成任务后自动关闭链接【英文标题】:iOS Facebook Messenger, automatically close link after its been opened and task completed 【发布时间】:2016-11-17 20:27:29 【问题描述】:在我的 iPad 上使用 ios Facebook Messenger 应用程序,我正在构建一个机器人,它将向用户发送媒体播放器链接。
用户点击链接后,它会在 Facebook Messenger 应用程序内打开链接(至少这是 iPad 的行为)。在媒体播放结束时,我想自动关闭内联浏览器窗口并将用户返回到当前对话。
当我尝试执行window.close()
时,不会关闭在 iPad Facebook Messenger 中打开的内联浏览器窗口。有没有其他方法可以关闭 Facebook 浏览器窗口?
【问题讨论】:
您最终解决了问题吗? 【参考方案1】:广泛支持
Facebook Messenger Extensionclose 方法是最兼容的方法。在移动设备上它会关闭 webview,在桌面上它会关闭标签页(webviews 在桌面 Messenger 的新标签页中打开)。
首先,将您的域列入白名单,以便能够使用 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元素添加一个事件监听器来调用关闭浏览器函数
<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
快速而肮脏的 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')
【讨论】:
以上是关于iOS Facebook Messenger,打开并完成任务后自动关闭链接的主要内容,如果未能解决你的问题,请参考以下文章
如何制作在 Safari for iOS Facebook Messenger 应用程序而不是应用程序内 Web 浏览器中打开的 URL
如何打开 Facebook Messenger 并直接发送给某人?
在 Android 中打开 Facebook Messenger