Sonos-objcクラスを使用して、iOS アプリから Sonos を制御しています
トラックを再生したいときは、このメソッドを「playSpotifyTrack」と呼び、キューをクリアした後、現在の曲がまだ再生されていて、終了してもそのままです
どうすれば削除できますか?
------解決策------
- (void)playSpotifyTrack:(NSString *)track position:(int)position completion:(void (^)(NSDictionary *reponse, NSError *error))block {
NSString *trackURI = [track stringByReplacingOccurrencesOfString:@":" withString:@"%%3a"];
NSString *meta = [NSString stringWithFormat:
@"<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"> \
<item id=\"10030020%@\" parentID=\"10030020\" restricted=\"true\"> \
<upnp:class>object.item.audioItem.musicTrack</upnp:class> \
<desc id=\"cdudn\" nameSpace=\"urn:schemas-rinconnetworks-com:metadata-1-0/\">SA_RINCON2311_X_#Svc2311-0-Token</desc> \
</item> \
</DIDL-Lite>", trackURI];
meta = [[[meta stringByReplacingOccurrencesOfString:@"<" withString:@"<"] stringByReplacingOccurrencesOfString:@">" withString:@">"] stringByReplacingOccurrencesOfString:@"\"" withString:@"""];
[self
upnp:@"/MediaRenderer/AVTransport/Control"
soap_service:@"urn:schemas-upnp-org:service:AVTransport:1"
soap_action:@"AddURIToQueue"
soap_arguments:[NSString stringWithFormat:@"<InstanceID>0</InstanceID><EnqueuedURI>10060a6c%@</EnqueuedURI><EnqueuedURIMetaData>%@</EnqueuedURIMetaData><DesiredFirstTrackNumberEnqueued>%d</DesiredFirstTrackNumberEnqueued><EnqueueAsNext>0</EnqueueAsNext>", trackURI, meta, position]
completion:^(id response, NSError *error) {
if(error) {
if(block) {
block(response, error);
return;
}
}
[self playQueuePosition:position completion:block];
}];
}
解決策は、トラックをキューに追加してから、直接再生するのではなく、「playQueuePosition」を呼び出して再生することです