我正在测试upnpx库以控制Sonos多房间音频系统...工作正常。
我的事件只有一个主要问题。
如果我从Sonos渲染器收到音量变化事件,像这样

<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="66"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>


我不是在洞事件和错误的值
-(void)UPnPEvent:(BasicUPnPService *)发送者事件:(NSDictionary *)事件{

InstanceID = 100; Volume = 100;


它应该是 ...

InstanceID = 0; Volume = 66;


如果有人可以向我建议正确的方向,我将非常高兴!

最好的祝福
自贸区

upnpxdemo[66489:1310b] BasicParser.h didStartElement: propertyset

upnpxdemo[66489:1310b] BasicParser.h didStartElement: property

upnpxdemo[66489:1310b] BasicParser.h didStartElement: LastChange

upnpxdemo[66489:1310b] BasicParser.h didEndElement: LastChange, obj: <Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>

upnpxdemo[66489:1310b] LastChange - element:LastChange, value:<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Event

upnpxdemo[66489:1310b] BasicParser.h didStartElement: InstanceID

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:52

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100

upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100

upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:InstanceID value:100

upnpxdemo[66489:1310b] Event Digctionary: {
    InstanceID = 100;
    Volume = 100;
}

最佳答案

该事件是正确的。我下载了upnpx源,但无法轻易理解BasicParserUPnPEventParser逻辑-我在Objective-C中工作了这么长时间。我不知道upnpx如何解释您可以为同一个键具有多个值的事实,只是channel属性不同。 LastChange事件的命名约定是一个例外,密钥通常是唯一的。事件中最后出现的Volume是100,因此upnpx可能一直在替换Volume键的值。

但是,它没有解释InstanceID错误编号。您确定您正确吗?您可以发布events NSDictionary的完整转储吗?

07-27 15:08