私はプラットフォームに 2 ボタン レーティングを実装している最中で、細かい部分のいくつかに頭を悩ませています。
まず、私はここで私が抱えている問題を簡潔に説明しようとしました!
rateItem
およびエンドポイントを介して処理および返される 3 つの状態がありgetExtendedMetadata
、ユーザーは 3 つの状態間を移動できます。
0 - 未評価
1 - 賛成票
2 - 反対票
したがってrateItem
、これら 3 つのオプションのいずれかを受け入れます。
ドキュメントを見ると、私のプレゼンテーション マップはこれらの線に沿っているはずです。
<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 (賛成票と反対票) になるようにしました。次に、0 と 2 にリンクする 1 の Match プロパティと、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 コントローラーでテストされています)。
この時点で、誰か提案を提供できますか? ここで十分に理解できたと思います!誰でも提供できるヒントをいただければ幸いです。