Putting it all together, the only way we can comply with Roku publishing guidelines after Roku OS 10 ships will be to drop support for Roku OS versions < 9.2.
Note: description for GetVersion(), quoted from the documentation:
A 13-character string (for example "034.08E01185A"). The third through sixth characters are the major/minor version number ("4.08") and the ninth through twelfth are the build number ("1185"
Is this what you're looking for?
' Firmware Version Number ' Return 8.01, 9.01, etc if FW 9.1 or less ' Otherwise return 9.2, 9.3, 10.1, etc Function FwVerNum() di=CreateObject("roDeviceInfo") if FindMemberFunction(di,"GetOSVersion")=Invalid rv=Val(di.GetVersion().Mid(2,4)) else aa=di.GetOSVersion() rv=Val(aa["major"]+"."+aa["minor"]) endif return rv EndFunction
I brought this up years ago. 🙂 I think you're looking at it wrong. There's no good reason to support older OS versions as every supported Roku will get any new OS version eventually. You just have to set the Minimum Firmware version when you update your channel and anything running an older OS won't get the update until its firmware is updated. The unsupported Rokus will never get the new OS or any channel updates for that matter, so there's nothing you can do to support them. I suspect Roku will have GetVersion() return something for OS v10 like an A, but well have to wait and see. I can't see a good use case for trying to support an older version, but there may be something I'm not thinking of.
As it stands, folks with older Roku devices won't be able to download our channel after OS 10 ships, and the only reason is because OS version detection prior to OS 9.1 only supports single digit numbers - it's just silly.
Thanks for taking the time to respond! Hopefully Roku will come up with something that can be worked out.
I'm still missing what the real problem is; excuse me for being dense. So you've got an update that uses something new from v10 or doesn't use something new. If it doesn't use anything new, just set the Minimum Firmware Version to 9.1 (or whatever). If it does use some feature that's new in v10, then no one that hasn't received v10 would be able to use it anyway. Roku handles this automatically by not updating the channel on those units.
Are you saying you have an update that could use some new feature in v10, but if it isn't there then you have a workaround to make it work in previous versions, so you need to test for OS version? In that case I think you could publish one update with the Minimum Firmware Version set to 9.x (wait for it to get published) and then another update with the use of the new feature and the Minimum Firmware Version set to v10.
There's no good reason to set the Minimum Firmware Version required to the latest firmware release. Heck, I have channels I've updated and the Minimum Firmware Version is set to 3.x. 🙂 I have yet to receive v9.3 on any of my units, so I'm just setting the Minimum Firmware Version to v9.1 because I'm not using anything that's only available in v9.2+.
I'm not trying to be difficult. I'm just trying to understand the issue.
Is this what you're looking for?
' Firmware Version Number ' Return 8.01, 9.01, etc if FW 9.1 or less ' Otherwise return 9.2, 9.3, 10.1, etc Function FwVerNum() di=CreateObject("roDeviceInfo") if FindMemberFunction(di,"GetOSVersion")=Invalid rv=Val(di.GetVersion().Mid(2,4)) else aa=di.GetOSVersion() rv=Val(aa["major"]+"."+aa["minor"]) endif return rv EndFunction
Roku now requires channels to signal the launch complete scene.signalBeacon("AppLaunchComplete") so you have to use APIs not available with 9.0 or earlier - or your channel updates will get rejected.
Setting the minimum firmware version to 9.1 would fix this indeed, but it means that users with older devices will not be able to download our channel. The numbers are relatively small, it would not be such an issue if our distribution was primarily driven from the Roku Store but that's not the case here: our main distribution channels are mobile app stores, and our products are labelled as being compatible with Roku. We don't want people downloading our mobile app, only to find out that the small prints exclude them because they are stuck on Roku OS 8.x
But what devices are stuck on 8.x (or any firmware version for that matter)? Obsolete units won't receive any updates of any kind (so it doesn't matter how you set the minimum firmware version) and devices that are still receiving updates never get stuck on one firmware version. All supported units receive the latest firmware eventually (although the rollout can take some time). I'm sorry, but I just fail to see the issue here.
Existing users won't receive the update, we understand that, and that is ok.
New users with an older version of the ROKU OS won't be able to download our channel, and that's our issue because we advertise ourselves as "compatible with Roku" (and users won't look at the small print)
(The assumption is that users with ROKU OS 8.x won't be able to download any version of our channel after we start shipping with a minimum OS Version >= 9.1 - I could not find any specific information on that topic, but that's how most platforms work)
Except I keep trying to tell you, any device that is running v8.x (and by the way, I don't believe there are any) will never get any update of any kind (channel updates or firmware updates). If it's running a firmware version that's that old it is either an obsolete device or they are blocking firmware updates. I still fail to see any reason for testing for firmware version. All supported Roku devices are now on version 9.1 or higher (and more likely 9.2 or 9.3) unless they're blocking updates and the vast majority of users wouldn't have a clue how to do that. If you're trying to cater to them, then that's another issue.