我有一个 Messenger 机器人,它为用户提供网页链接。有没有办法检测用户何时关闭 web 视图并因此返回机器人对话?
这个问题只适用于手机上的 Messenger 应用程序,桌面很好。
window.onbeforeunload
不支持,window.pagehide
仅适用于重新加载,但不适用于关闭 webview 以及window.unload
.
我有一个 Messenger 机器人,它为用户提供网页链接。有没有办法检测用户何时关闭 web 视图并因此返回机器人对话?
这个问题只适用于手机上的 Messenger 应用程序,桌面很好。
window.onbeforeunload
不支持,window.pagehide
仅适用于重新加载,但不适用于关闭 webview 以及window.unload
.
这实际上取决于您想要在流程中实现的目标。
如果用户使用 close-x(右上角)关闭 webview,您应该将其视为常规关闭事件,并且根本不处理任何事情。相反,您应该在 web 视图中使用专用的保存/确认和/或关闭按钮。
然后关闭按钮会触发 Messenger Extension SDK 的 requestCloseBrowser 函数,保存/确认按钮会处理实际的保存/确认/处理操作。
如果您确实需要通过使用右上角的 close-x 来检测用户关闭 webview,这只能通过长轮询(从您的 webview 轮询用户会话)来实现。
你可以试试用这个。
MessengerExtensions.requestCloseBrowser(function success() {
// webview closed
}, function error(err) {
// an error occurred
});
它与您正在寻找的不同。但是,如果您也在实施 webview 网站,您也可以通过这种方式驱动用户。
很简单,我们需要使用 Facebook 的 Messenger 扩展 SDK,去年我实现了这个。你可以在这里找到相关的代码,
我们需要使用window.extAsyncInit
来检测事件,然后我们可以将信息传递给服务器。
如果需要,使用它MessengerExtensions.getUserID
来获取用户 ID。
参考https://github.com/vickymicky/botkit-messenger-express-demo/blob/master/views/webview.ejs
注意:上面的例子是在 Node.js 上完成的。