我正在我们的平台上实施双键收视率,并且我会在一些更精细的细节上撕掉我的头发。
首先,我在这里真的试图解释我简明扼要的麻烦!
我们通过rateItem
和getExtendedMetadata
端点处理并返回了三个状态,用户可以在三种状态之间移动:
0 - 未分级 1 - 向上投票 2 - 下来投票
所以rateItem
接受这三个选项中的一个。
查看documentation,我的演示地图应该沿着这些方向。
<Match propname="vote" value="0">
<!-- the track is unrated -->
<Ratings>
<Rating AutoSkip="NEVER" Id="1" StringId="VoteUp" OnSuccessStringId="VoteUpSuccess">
...
</Rating>
<Rating AutoSkip="ALWAYS" Id="0" StringId="VoteDown" OnSuccessStringId="VoteDownSuccess">
...
</Rating>
</Ratings>
</Match>
<Match propname="vote" value="1">
<!-- the track is rated thumbs up -->
<Ratings>
<Rating AutoSkip="NEVER" Id="3" StringId="VoteUp" OnSuccessStringId="VoteUpSuccess">
...
</Rating>
<Rating AutoSkip="ALWAYS" Id="2" StringId="VoteDown" OnSuccessStringId="VoteDownSuccess">
...
</Rating>
</Ratings>
</Match>
<Match propname="vote" value="2">
<!-- the track is rated thumbs down -->
<Ratings>
<Rating AutoSkip="NEVER" Id="5" StringId="VoteUp" OnSuccessStringId="VoteUpSuccess">
...
</Rating>
<Rating AutoSkip="ALWAYS" Id="6" StringId="VoteDown" OnSuccessStringId="VoteDownSuccess">
...
</Rating>
</Ratings>
</Match>
这是我开始遇到麻烦的地方。 <Match ... value="X">
元素似乎很好,与我的数据显示的相符。 但是当点击按钮时,rateItem
端点似乎会收到ID 0到6。(示例中缺少ID 4?)
文档说明:
Id(int)这是将传递给rateItem方法的值。对于给定的属性名称,Id必须是唯一的。
因此,为了解决这个问题,我修改了我的演示地图,以便从0匹配属性发送的ID为1和2(上下投票)。然后是一个匹配0和2的匹配属性,以及一个链接到0和1的2。这里是我所在的位置:
<Match propname="vote" value="0">
<!-- the track is unrated -->
<Ratings>
<Rating AutoSkip="NEVER" Id="1" StringId="VoteUp" OnSuccessStringId="VoteUpSuccess">
...
</Rating>
<Rating AutoSkip="NEVER" Id="2" StringId="VoteDown" OnSuccessStringId="VoteDownSuccess">
...
</Rating>
</Ratings>
</Match>
<Match propname="vote" value="1">
<!-- the track is rated thumbs up -->
<Ratings>
<Rating AutoSkip="NEVER" Id="0" StringId="VoteUpCancel" OnSuccessStringId="VoteUpCancelSuccess">
...
</Rating>
<Rating AutoSkip="NEVER" Id="2" StringId="VoteDown" OnSuccessStringId="VoteDownSuccess">
...
</Rating>
</Ratings>
</Match>
<Match propname="vote" value="2">
<!-- the track is rated thumbs down -->
<Ratings>
<Rating AutoSkip="NEVER" Id="1" StringId="VoteUp" OnSuccessStringId="VoteUpSuccess">
...
</Rating>
<Rating AutoSkip="NEVER" Id="0" StringId="VoteDownCancel" OnSuccessStringId="VoteDownCancelSuccess">
...
</Rating>
</Ratings>
</Match>
注意字符串ID也会更新,我确信我的字符串文件和图像都很好。
这对我来说很有意义,但实际上是在丢弃我的图像和警报,并且我在不同的平台上有不同的结果(到目前为止在iOS和Mac控制器上测试过)。
此时,有人可以提出任何建议吗?我希望我在这里有足够的意义!我非常感谢任何人都可以提供的任何提示。
答案 0 :(得分:0)
根据http://musicpartners.sonos.com/node/368上的文档,您的第一个示例是正确的,而您应该在rateItem端点上看到id。该值描绘了更一般的类别(竖起大拇指,拇指向下,中性),但id是类别中的特定状态。在第二个示例中,您将在同一个propname中重复id号,这就是您看到不一致行为的原因。
通常,流程应如下所示,当rateItem请求使用ID中的唯一标识符进入您的服务时,这应该允许您在后端适当地对轨道进行评级。您应该使用rateItemResponse进行响应,然后是getLastUpdate请求(将更新连接到家庭的所有控制器的评级状态)和getExtendedMetdata请求,以便可以将属性值更新为与之关联的属性值。已发送的ID。