podverse / podverse-rn

Podverse mobile app written in React Native for iOS, Android, and F-Droid
https://podverse.fm/about
GNU Affero General Public License v3.0
219 stars 36 forks source link

Support value-for-value time splits for live items #1946

Open InTheMorning opened 1 year ago

InTheMorning commented 1 year ago

Currently, dynamic splits that change (i.e during individual songs in a music podcast) only work for completed episodes, but not for live streams.

mitchdowney commented 1 year ago

@InTheMorning we would certainly like to add support for live item splits, and I bring this up on Podcast Index Social like once every two weeks. There are a couple things blocking me at the moment though from beginning working on it...

1) To my knowledge the spec for live item splits has not been formally defined. If anyone can point me to documentation on how to implement live item split support, that would help get me started.

2) According to my research, there will be no reliable way to implement live item splits in an iOS mobile app 😞 My understanding is live item splits will require a constantly active websocket connection, and iOS does not give apps a way to guarantee an active websocket connection when the app is in the background or the phone is locked. iOS could guarantee the websocket will work while the app is open and in the foreground, but that will be an odd and unexpected limitation for listeners.
I have chatted with Alecks Gates about how to implement this on Android though, and he believes that Android should be able to support live item splits using a background process. There are challenges to solve however as we will have to message to Android and iOS listeners separately on how the app behaves.

mitchdowney commented 6 months ago

This would be great to add, but the implementation trickiness with websockets (especially with iOS) is a big challenge.

Maybe the only way we can add support for this would be using a push notification system? This would require quite a lot of work and planning, and overhead to consider, if we have a server-side job listening for notifications from a live broadcast...I don't realistically see myself working on this soon. I'm going to unassign it for now, and keep it in mind as a v5 feature.