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

问题描述 投票:0回答:1

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

我有一个问题要知道用户何时在后台运行该应用程序,并在某些时候停止通过系统控件进行监听。同样,当用户或系统杀死应用程序而没有点击“暂停”或“停止”时。我认为这两个案例是到目前为止我主要的未追踪案例。

任何想法我如何建立一个可行的解决方案?我不想/不能支付外部服务-我只是依靠Firebase。

谢谢!

ios avplayer ios-background-mode
1个回答
0
投票

您可以在应用程序中覆盖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
}
© www.soinside.com 2019 - 2024. All rights reserved.