Improve sync between app and player

I had one heck of a time getting a particular playlist to sync to the player. Like, 2 hours of debugging.

I think the only way it will sync is if (1) the player is plugged in (2) the player is on (3) the player is not playing (4) no app is open on a phone (not even in the background).

But there is a big lack of documentation explaining what is needed, and the app UI makes things extremely unclear.

Here are changes I think are needed...

  1. Get sync state from player, not server, to avoid inconsistencies:
    In one case a playlist showed as synced, but it was not. I don't know how exactly that happened but my guess is it synced the songs, and the app could tell that happened, but didn't sync the metadata of the playlist correctly but saved the state onto your servers as if it had. That bug should be fixed. I suspect the sync state comes from your server rather than the player, which also isn't ideal. If you are connected to the player I don't want to know what your server thinks the sync state is, I want to know what it actually is from the device

  2. And show what the actual queue state is too:
    I want to know when the player will next check for updates, and what it is currently doing (e.g. downloading song xyz, 45% remaining).

  3. Allow some manual control over sync:
    There should be a way to forcibly unsync a playlist to let the user try again. Have a way to force sync now.

  4. Show disk usage:
    It should say somewhere how much disk space is used, so people can be sure the issue is not running out of disk space.

  5. Improve documentation:
    The documentation should make it clear what the exact requirements for sync are (like the 4 points I specified as I think are needed). Also be clear about what waiting means. I think you are using an algorithm where the device waits some random number of minutes to check in with the server, but only if the device is completely idle, and I think that is done to preserve the battery of the decide plus avoid 'thundering herd' problems on your server. That's all fine as optimizations but the irregularity makes it harder to plan/test/debug/execute so please try to be clearer in the documentation. For example, say that it checks for sync between every 5-30 minutes or whatever it is.
    As an aside, this is made even harder as the app has been seriously redesigned over the years, so looking at old videos and tutorials will lead the user down the wrong route. Another reason to make sure official documentation is excellent.

  6. Allow debugging:
    There should be some way of accessing system logs from the device, for experts. You probably are thinking "just talk to support" - well, that's not so easy when you have multiple kids, a lot of stress, and are trying to solve a problem for some outing happening that same weekend.

As you can probably tell I am a software engineer. If it takes someone like me hours to get this working, it is causing problems for others too. You can, in fact, see this on Reddit.

5
2 replies
Theme
Yoto App