0

我正在开发一个媒体应用程序,我想改进它的 Siri 交互。我已经实现了一个 Intents 扩展,将“广播”作为媒体类别,我正在改进resolveMediaItems方法。通常,如果我告诉 Siri Play <search query> in <my app>,然后INPlayMediaIntent在调试器中检查 ,我会看到类似这样的内容

<INPlayMediaIntent: 0x143f181c0> {
    playShuffled = 0;
    mediaSearch = <INMediaSearch: 0x143d19b50> {
        reference = 0;
        mediaType = 18;
        sortOrder = 0;
        albumName = <null>;
        mediaName = search query;
        genreNames = (
        );
        artistName = <null>;
        moodNames = (
        );
        releaseDate = <null>;
        mediaIdentifier = <null>;
    };
    mediaContainer = <null>;
    playbackRepeatMode = none;
    mediaItems = <null>;
    resumePlayback = 0;
    playbackQueueLocation = now;
    playbackSpeed = <null>;
}

其中mediaSearch.mediaName有来自扬声器的数据,我可以用它来解决查询。

不幸的是,如果查询中包含“音乐”或“广播”这些词,则这些词不会包含在该mediaName字段中。如果查询只包含这些词,例如, "Play music in <my app>"该字段将是<null>并且INPlayMediaIntent实际上将不包含任何内容。

鉴于应用程序提供的内容,了解是否使用了“音乐”和“广播”这两个词对于明智地解决查询是绝对必要的。谁能提供有关如何使这些术语在INPlayMediaIntent对象中可见的指导?

4

1 回答 1

0

“音乐”和“收音机”这两个词似乎几乎从未出现在该mediaName字段中,但它们在 Siri 查询中的存在通常会反映在该mediaType字段中。这看起来像一个 Int 但实际上对应于此处INMediaItemType列出的枚举。似乎我看到的两个值(16 和 18)分别对应和对应(为什么和不,我不知道)。.radioStation.music.music.musicStation

大多数情况下,mediaTypemediaName能够编写有意义的方法来解决大多数查询。

仍然有一些问题难以处理。“音乐电台”得到mediaType .radioStation一个空字段mediaName,因此传递给我的 IntentsExtention 的查询无法知道用户要求音乐。

于 2020-07-09T17:49:44.007 回答