【问题标题】:Cordova: Hybrid iOS App Pause event doesn't get fired when making a phone callCordova:拨打电话时不会触发混合 iOS 应用程序暂停事件
【发布时间】:2020-06-30 09:29:55
【问题描述】:

当我们使用 tel://123456789 拨打电话时,iOS 应用程序是否会进入后台?

我有一个 iOS 应用程序,它需要记录通过我们的应用程序发生的任何出站事件(例如发送邮件、呼叫等)。

用于通话

我们使用类似的东西:<a href="tel://123456789"></a>

在这种情况下,拨号器打开并拨打电话,但暂停或恢复事件永远不会得到 触发。所以基本上我们在通话结束后没有钩子/事件来制作日志 通话条目。 虽然在 android 上复制相同的流程时,适当的事件(恢复、暂停)会被触发。

对于邮件

我们使用类似的东西:<a href="mailto: test@test.com"></a>

在这种情况下,用户的邮件客户端被打开,我们的混合应用程序进入后台,一旦发送邮件并且用户返回应用程序,“resume”事件就会被触发

我们需要类似的东西来打电话。任何指针将不胜感激。

【问题讨论】:

  • 你的意思是当手机只在iOS上切换到拨号器应用程序时,你的应用程序中没有触发暂停事件?
  • 是的,iOS 不会触发暂停事件。
  • 这能回答你的问题吗? Cordova: Pause event not firing
  • 不,它没有,只有当我们尝试通过单击锚标记<a href="tel://123456789"></a> 拨打电话时,我才会遇到问题,在这种情况下,电话拨号器应用程序启动并拨打电话,但没有发生任何事件(onPause 或 onResume)被触发。

标签: ios iphone cordova cordova-plugins hybrid-mobile-app


【解决方案1】:

如果不是由 Cordova 触发,您可以尝试监听 a 标签上的点击,然后自己触发该事件,这样您就不必更改代码。使用 jQuery:

 $('your_a_tag').on('touchstart', function(event){
      $(document).trigger('pause');
 });

或者,您可以在cordova-ios repo 上打开支持票。

【讨论】:

  • $(document).trigger('pause'); 什么都不做尝试 { $(document).trigger('pause'); } catch (error) { alert('触发暂停时出错' + error); } 也没有错误
  • 这意味着你的“暂停”事件的监听器没有正确设置
  • $(document).bind("pause", onPause); rigester 事件并在锚点单击时触发暂停事件,但是当呼叫结束时,恢复事件不会被触发。基本上,当通话结束时我们需要一个事件。虽然 Apache cordova docs(cordova.apache.org/docs/en/latest/cordova/events/…) 提到了 startcallbuttonendcallbutton 事件,但它们尚不支持 ios 和 android
  • 如果你试图做一些记录电话通话时间的东西,这是错误的做法。
  • 我不是要记录通话时间,但我们想记录通话(联系方式)。只是出于好奇,记录电话通话时间的正确方法是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多