我的目标是在iOS和本机之间建立桥梁,并返回所有播客标题。桥似乎正在工作,并且播客标题已返回,但是我设置的回调将立即调用,而不是在用户接受媒体权限提示(下面的提示)之后调用
因此,由于未获得我的授权,因此回调将不返回任何播客标题,但是,如果在用户单击“确定”(表示我已获得授权)后调用该函数,则播客标题将正确返回。因为我不必等待对话框被回答。因此,我的问题是在调用带有播客标题的回调之前,如何等待对话框得到答复。
这是我检索播客标题的功能:
RCT_EXPORT_METHOD(requestPodcastTitles: (RCTResponseSenderBlock)callback)
{
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query setGroupingType: MPMediaGroupingPodcastTitle];
NSArray *podcasts = [query collections];
NSMutableArray *mutablePodcastsToSerialize = [NSMutableArray array];
for (MPMediaItemCollection *podcast in podcasts) {
MPMediaItem *representativeItem = [podcast representativeItem];
NSString *podcastTitle =
[representativeItem valueForProperty: MPMediaItemPropertyPodcastTitle];\
NSLog (@" Podcast Title: %@", podcastTitle);
NSDictionary *podcastDictionary = @{@"podcastTitle": podcastTitle};
[mutablePodcastsToSerialize addObject:podcastDictionary];
}
callback(@[[NSNull null], mutablePodcastsToSerialize]);
return;
}
您知道在返回回调之前需要做什么来等待提示结束吗?
答案 0 :(得分:2)
问题是您没有致电MPMediaLibrary.requestAuthorization()
。如果执行了此操作,则对话框消失后会回叫您,现在您可以继续。