了解双键评级实施

时间:2016-04-21 07:29:57

标签: sonos

我正在我们的平台上实施双键收视率,并且我会在一些更精细的细节上撕掉我的头发。

首先,我在这里真的试图解释我简明扼要的麻烦!

我们通过rateItemgetExtendedMetadata端点处理并返回了三个状态,用户可以在三种状态之间移动:

  

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控制器上测试过)。

此时,有人可以提出任何建议吗?我希望我在这里有足够的意义!我非常感谢任何人都可以提供的任何提示。

1 个答案:

答案 0 :(得分:0)

根据http://musicpartners.sonos.com/node/368上的文档,您的第一个示例是正确的,而您应该在rateItem端点上看到id。该值描绘了更一般的类别(竖起大拇指,拇指向下,中性),但id是类别中的特定状态。在第二个示例中,您将在同一个propname中重复id号,这就是您看到不一致行为的原因。

通常,流程应如下所示,当rateItem请求使用ID中的唯一标识符进入您的服务时,这应该允许您在后端适当地对轨道进行评级。您应该使用rateItemResponse进行响应,然后是getLastUpdate请求(将更新连接到家庭的所有控制器的评级状态)和getExtendedMetdata请求,以便可以将属性值更新为与之关联的属性值。已发送的ID。