如何跟踪用户收听特定播客的时间

Posted

技术标签:

【中文标题】如何跟踪用户收听特定播客的时间【英文标题】:How to track the time a user listens an specific podcast 【发布时间】:2020-04-16 15:01:28 【问题描述】:

我有一个关于播客的 ios 应用,我想跟踪用户收听每个播客的时间。我已经尝试过基本的 - 当用户播放时,我保存时间戳,当停止时它发送一个带有时间戳差异的事件,但它显然不起作用,因为有很多边缘情况。

我想知道用户何时在后台使用应用程序并在某个时候通过系统控件停止收听。此外,当用户或系统在没有点击“暂停”或“停止”的情况下终止应用程序时。我认为这两个案例是我目前主要未跟踪的案例。

知道如何构建一个可行的解决方案吗?我不想/不能支付外部服务 - 我只是依赖 Firebase。

谢谢!

【问题讨论】:

【参考方案1】:

您可以在您的应用中覆盖 applicationWillTerminate 方法,并将当前用户进度保存到 UserDefaults。

正如docs 所说,你有几秒钟的时间去做:

这个方法让你的应用知道它即将被终止并且 完全从记忆中清除。您应该使用此方法执行任何 应用程序的最终清理任务,例如释放共享资源, 保存用户数据,并使计时器失效。您对此的实施 方法大约有五秒钟的时间来执行任何任务并返回。

您的代码可能如下所示:

var player: AVPlayer!

func applicationWillTerminate(_ application: UIApplication) 
    UserDefaults.standard.setValue(player.currentTime().seconds, forKey: "curPlayerTime")


然后,在应用程序启动时,您可以恢复它:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 

    if let lastPlayerTime = UserDefaults.standard.value(forKey: "curPlayerTime") as? Double 
          // update your player
    

    return true

【讨论】:

以上是关于如何跟踪用户收听特定播客的时间的主要内容,如果未能解决你的问题,请参考以下文章

用于刷新单个 iTunes 播客的 Applescript 代码

根据cookie记录跟踪ID来确定分享对象

Sqlite 查询:每个播客的最近五集

播客在哪里使用 MPMusicPlayerController 停止了?

从视频制作音频播客的服务? [关闭]

来传智播客的目的以及未来的人生规划