我正在努力实现对 CarPlay 音频应用程序的支持,并尝试在模拟器中显示列表。我已经实现MPPlayableContentDataSource
了,但是发现调用不一致。它在应用程序第一次在模拟器上启动时被调用,如果 CarPlay 在启动时打开,我可以通过向上滚动一个空列表来显示第一个项目以触发重绘。然而,CarPlay 似乎无法调用数据源,在随后的启动中,我看到一个空白屏幕或一个微调器,后面跟着消息Unable to connect to "AppName"
。我尝试了不同的方法,但要点如下:
在application: didFinishLaunchingWithOptions:
self.contentDataSource = [[MYContentDataSource alloc] init];
self.contentDelegate = [[MYContentDelegate alloc] init];
MPPlayableContentManager *contentManager = [MPPlayableContentManager sharedContentManager];
contentManager.dataSource = self.contentDataSource;
contentManager.delegate = self.contentDelegate;
[contentManager beginUpdates];
[contentManager endUpdates];
我已经玩过内容管理器的方法beginUpdates
endUpdates
和reloadData
方法,但是这些都没有导致实际调用内容数据源。
我已经在数据源中实现了numberOfChildItemsAtIndexPath
,contentItemAtIndexPath
它似乎被正确调用,尽管只是在新模拟器上首次启动应用程序时。
要点:
- (NSInteger)numberOfChildItemsAtIndexPath:(NSIndexPath *)indexPath {
return 3;
}
- (MPContentItem *)contentItemAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger categoryId = [indexPath indexAtPosition:0];
MPContentItem *contentItem = [[MPContentItem alloc] initWithIdentifier:[NSString stringWithFormat:@"CAT-%lu", (unsigned long)categoryId]];
contentItem.title = [NSString stringWithFormat:@"Category %lu", (unsigned long)categoryId];
contentItem.subtitle = @"Subtitle";
contentItem.playable = NO;
contentItem.container = YES;
}
我也尝试过保留(或不保留)对MPPlayableContentManager
.
我在实际的主机上有相同的行为。任何帮助,将不胜感激。