我的目标是在 iOS 和 react-native 之间建立一座桥梁,并返回所有播客标题。桥似乎在工作,播客标题得到返回,但是我设置的回调立即被调用,而不是在用户接受媒体权限提示(下面的提示)之后调用
因此回调将不会返回任何播客标题,因为我未获得授权,但是如果我在用户单击“确定”后调用该函数,这意味着我已获得授权,那么播客标题将正确返回。因为我不必等待对话得到回答。所以我的问题是如何在使用播客标题调用我的回调之前等待对话得到回答。
这是我检索播客标题的函数:
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;
}
知道在返回回调之前需要做什么来等待提示结束吗?
最佳答案
问题是您没有调用 MPMediaLibrary.requestAuthorization()
。如果你这样做了,它会在对话框消失时给你回电话,现在你可以继续了。
关于ios - MPMediaQuery 等到媒体对话框完成后再回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538879/