0

我正在我们的平台上实施两键评级,我正在为一些更精细的细节而烦恼。

首先,我真的试图在这里简洁地解释我遇到的麻烦!

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

0 - 未评级
1 - 投赞成票
2 - 投反对票

所以rateItem接受这三个选项之一。

查看文档,我的演示图应该是这样的。

 <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 Match 属性发送的 ID 为 1 和 2(上下投票)。然后有一个 1 Match 属性链接到 0 和 2,还有一个 2 链接到 0 和 1。这就是我所在的位置:

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

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

4

1 回答 1

0

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

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

于 2016-04-21T16:23:22.897 回答