【问题标题】:Facebook messenger detect closing webview (mobile)Facebook Messenger 检测关闭 web 视图(移动)
【发布时间】:2017-03-09 10:01:10
【问题描述】:

我有一个聊天机器人,它为用户提供网页链接。有没有办法检测用户何时关闭 web 视图并因此返回机器人对话?

此问题仅适用于手机上的 Messenger 应用,台式机可以。

不支持window.onbeforeunloadwindow.pagehide 仅适用于重新加载,但不适用于关闭 web 视图以及 window.unload

【问题讨论】:

  • 您是否在为您的 webview 使用 Messenger Extensions JS SDK?
  • @SLee 是的,但在文档中没有找到任何有用的东西
  • 您的问题解决了吗?
  • @Marco Dufal 不,问题仍然存在
  • @MohamedELAYADI 很遗憾你没有更新。我还没有找到办法(一段时间后我就放弃了)。至于桌面,它在一年前的表现有所不同,这不是问题。现在有了他们的 iframe,我不确定这将如何工作。

标签: mobile webview facebook-messenger facebook-messenger-bot


【解决方案1】:

你可以试试这个。

MessengerExtensions.requestCloseBrowser(function success() {
  // webview closed
}, function error(err) {
  // an error occurred
});

它与您正在寻找的不同。但是,如果您也在实施 webview 网站,您也可以通过这种方式驱动用户。

欲了解更多信息:Messenger Extension Webview

【讨论】:

    【解决方案2】:

    这实际上取决于您想要在流程中实现什么。

    如果用户使用 close-x(右上角)关闭 webview,您应该将其视为常规关闭事件,并且根本不处理任何事情。相反,您应该在 web 视图中使用专用的保存/确认和/或关闭按钮。

    然后关闭按钮触发 Messenger Extension SDK 的 requestCloseBrowser 函数,保存/确认按钮处理实际的保存/确认/处理操作。

    如果您确实需要使用右上角的 close-x 检测用户关闭 webview,这只能通过长轮询(从您的 webview 轮询用户会话)来实现。

    【讨论】:

      【解决方案3】:

      很简单,我们需要使用 Facebook 的 Messenger 扩展 SDK,去年我实现了这个。你可以在这里找到相关的代码,

      https://github.com/vickymicky/botkit-messenger-express-demo/commit/4aa91d12167daa322bdaddb158289b74ee9610c7

      我们需要使用window.extAsyncInit 来检测事件,然后我们可以将信息传递给服务器。

      如果需要,请使用此 MessengerExtensions.getUserID 获取用户 ID。

      参考https://github.com/vickymicky/botkit-messenger-express-demo/blob/master/views/webview.ejs

      注意:以上示例是在 Node.js 上完成的。

      【讨论】:

      猜你喜欢
      • 2010-10-19
      • 2016-11-17
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      相关资源
      最近更新 更多