我正在测试 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 源代码,但无法轻易理解 BasicParser
和 UPnPEventParser
逻辑 - 我只在 Objective-C 中工作了很长时间。我想知道 upnpx 如何解释同一个键可以有多个值的事实,仅通过 channel
属性有所不同。这是 LastChange
事件命名约定中的一个异常(exception),键通常是唯一的。事件中最后出现的 Volume
是 100,因此 upnpx 可能一直在替换 Volume
键的值。
但它并没有解释 InstanceID 编号错误的情况。你确定你做对了吗?您可以发布 NSDictionary events
的完整转储吗?
关于ios - Upnpx LastChangeParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186460/