0

私はプラットフォームに 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 コントローラーでテストされています)。

この時点で、誰か提案を提供できますか? ここで十分に理解できたと思います!誰でも提供できるヒントをいただければ幸いです。

4

1 に答える 1

0

http://musicpartners.sonos.com/node/368のドキュメントによると、最初の例は正しく、id は rateItem エンドポイントで表示されるはずのものです。値はより一般的なカテゴリ (高く評価、低く評価、中立) を示しますが、id はカテゴリ内の特定の状態です。2 番目の例では、同じ propname 内で ID 番号を繰り返しているため、一貫性のない動作が見られます。

通常、フローは次のようになります。rateItem リクエストが ID からの一意の識別子を使用してサービスに到着すると、バックエンドでトラックを適切に評価できるようになります。rateItemResponse で応答する必要があります。これに続いて、getLastUpdate リクエスト (世帯に接続されているすべてのコントローラーの評価状態を更新します)、および getExtendedMetdata リクエストが続き、プロパティ値が関連する値に更新されます。送信されたID。

于 2016-04-21T16:23:22.897 に答える