播放开始后 Siri 未 "replying" 到 PlayMedia 意图
Siri not "replying" to PlayMedia intent after playback begins
我有一个基于音频的测试应用程序,我正在向其添加 Siri 支持。该应用程序当前响应 PlayMedia 意图并正确播放所需的媒体,但 Siri 似乎不想通过在 Siri 指示器上方显示状态文本来确认播放已开始。
举例说明,执行命令“在 _______ 上播放 Fleetwood Mac”。
这是 Spotify 上的结果:
这是我的测试应用程序的结果:
如您所见,在播放 Spotify 时,Siri 通过显示“Fleetwood Mac 正在播放 Spotify...”来“回复”请求。相反,在我的测试应用程序中尝试此操作时不会出现此文本。
这是我的意图处理程序代码:
#pragma mark - INPlayMediaIntentHandling
-(void)handlePlayMedia:(INPlayMediaIntent *)intent completion:(void (^)(INPlayMediaIntentResponse *response))completion {
INPlayMediaIntentResponse * const response = [[INPlayMediaIntentResponse alloc] initWithCode:INPlayMediaIntentResponseCodeHandleInApp userActivity:nil];
completion ? completion(response) : nil;
}
-(void)resolveMediaItemsForPlayMedia:(INPlayMediaIntent *)intent withCompletion:(void (^)(NSArray<INPlayMediaMediaItemResolutionResult *> * _Nonnull))completion {
INMediaItem * const mediaItem = [[INMediaItem alloc] initWithIdentifier:[[SongController sharedInstance] songIdentifier] title:[[SongController sharedInstance] songTitle] type:INMediaItemTypeSong artwork:nil];
INPlayMediaMediaItemResolutionResult * const result = [INPlayMediaMediaItemResolutionResult successWithResolvedMediaItem:mediaItem];
completion ? completion(@[result]) : nil;
}
以及我的应用委托中的意图处理代码:
-(void)application:(UIApplication *)application handleIntent:(INIntent *)intent completionHandler:(void(^)(INIntentResponse *intentResponse))completionHandler {
[[SongPlaybackController sharedInstance] beginPlayback];
INPlayMediaIntentResponse * const response = [[INPlayMediaIntentResponse alloc] initWithCode:INPlayMediaIntentResponseCodeSuccess userActivity:nil];
[response setNowPlayingInfo:[[SongController sharedInstance] songNowPlayingInfo]];
completionHandler ? completionHandler(response) : nil;
}
为什么在我的测试应用程序中播放内容时 Siri 不显示任何文本?我怎样才能让她显示“Fleetwood Mac 正在(我的应用程序)上播放...”?
奇怪的是,我重新启动设备后,这段代码似乎才开始工作。无视?
我有一个基于音频的测试应用程序,我正在向其添加 Siri 支持。该应用程序当前响应 PlayMedia 意图并正确播放所需的媒体,但 Siri 似乎不想通过在 Siri 指示器上方显示状态文本来确认播放已开始。
举例说明,执行命令“在 _______ 上播放 Fleetwood Mac”。
这是 Spotify 上的结果:
这是我的测试应用程序的结果:
如您所见,在播放 Spotify 时,Siri 通过显示“Fleetwood Mac 正在播放 Spotify...”来“回复”请求。相反,在我的测试应用程序中尝试此操作时不会出现此文本。
这是我的意图处理程序代码:
#pragma mark - INPlayMediaIntentHandling
-(void)handlePlayMedia:(INPlayMediaIntent *)intent completion:(void (^)(INPlayMediaIntentResponse *response))completion {
INPlayMediaIntentResponse * const response = [[INPlayMediaIntentResponse alloc] initWithCode:INPlayMediaIntentResponseCodeHandleInApp userActivity:nil];
completion ? completion(response) : nil;
}
-(void)resolveMediaItemsForPlayMedia:(INPlayMediaIntent *)intent withCompletion:(void (^)(NSArray<INPlayMediaMediaItemResolutionResult *> * _Nonnull))completion {
INMediaItem * const mediaItem = [[INMediaItem alloc] initWithIdentifier:[[SongController sharedInstance] songIdentifier] title:[[SongController sharedInstance] songTitle] type:INMediaItemTypeSong artwork:nil];
INPlayMediaMediaItemResolutionResult * const result = [INPlayMediaMediaItemResolutionResult successWithResolvedMediaItem:mediaItem];
completion ? completion(@[result]) : nil;
}
以及我的应用委托中的意图处理代码:
-(void)application:(UIApplication *)application handleIntent:(INIntent *)intent completionHandler:(void(^)(INIntentResponse *intentResponse))completionHandler {
[[SongPlaybackController sharedInstance] beginPlayback];
INPlayMediaIntentResponse * const response = [[INPlayMediaIntentResponse alloc] initWithCode:INPlayMediaIntentResponseCodeSuccess userActivity:nil];
[response setNowPlayingInfo:[[SongController sharedInstance] songNowPlayingInfo]];
completionHandler ? completionHandler(response) : nil;
}
为什么在我的测试应用程序中播放内容时 Siri 不显示任何文本?我怎样才能让她显示“Fleetwood Mac 正在(我的应用程序)上播放...”?
奇怪的是,我重新启动设备后,这段代码似乎才开始工作。无视?