私はCarPlayオーディオアプリケーションのサポートを実装しようとしており、リストをシミュレータに表示しようとしています。私はMPPlayableContentDataSource
を実装しましたが、それは一貫性がないと呼ばれています。これは、シミュレータでアプリが初めて起動されたときに呼び出され、起動時にCarPlayが開いている場合は、空のリストをスクロールして再描画をトリガーすることで、最初のアイテムの表示を行うことができます。 CarPlayはデータソースを呼び出すことができないようですが、その後の起動時には、空の画面またはスピナーの後にメッセージUnable to connect to "AppName"
が続きます。私は別のものを試してみましたが、主なポイントは、次のように:MPPlayableContentDataSourceが一貫して呼び出されません
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];
application: didFinishLaunchingWithOptions:
では、私はコンテンツマネージャの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
への参照を保持(またはしない)しようとしました。
私は実際のヘッドユニットで同じ動作をしています。どんな助けもありがとう。
バグレポートはhttps://bugreport.apple.comで提出してください。プロジェクト(またはサンプルプロジェクト)を添付します。問題を再現し、シミュレータが起動している間に 'xcrun simctl diagnose'を実行し、出力をバグレポートに添付します。 – russbishop
注記ありがとうございます - 私は実際のヘッドユニットで動作を再現することができたので、シミュレータのバグではありません - おそらく私のコードのどこかにバグがあります。私は確認するためのサンプルプロジェクトを構築しようとし、もしreproを実行しなければバグを報告します。今すぐ別のプロジェクトで作業していますが、まもなくこれに戻ってください。 – Tad
まだ助けが必要な場合は、CarPlayの経験があると話すことに興味があります。手を差し伸べてください。 –