我正在我们的平台上实施两键评级,我正在为一些更精细的细节而烦恼。
首先,我真的试图在这里简洁地解释我遇到的麻烦!
我们通过rateItem
和getExtendedMetadata
端点处理和返回了三种状态,用户可以在这三种状态之间移动:
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 控制器上进行了测试)。
在这一点上,任何人都可以提供任何建议吗?我希望我在这里有足够的意义!我非常感谢任何人可以提供的任何提示。