MPMediaQuery 等到媒体对话框完成后再回调

MPMediaQuery wait until Media dialog is complete before callback

我的目标是在 iOS 和 react-native 之间建立一座桥梁,return 支持所有播客标题。桥似乎在工作,播客标题得到 returned 但是我设置的回调会立即被调用,而不是在用户接受媒体权限提示(下面的提示)之后调用

因此回调将 return 没有播客标题,因为我没有被授权,但是如果我在用户点击 "OK" 后调用该函数,这意味着我被授权然后播客标题 return正确。因为我不必等待对话得到回答。所以我的问题是如何在使用播客标题调用我的回调之前等待对话得到回答。

这是我检索播客标题的函数:

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;
}

知道在 return 调用回调之前需要做什么来等待提示结束吗?

问题是你没有调用MPMediaLibrary.requestAuthorization()。如果你这样做了,它会在对话框消失时给你回电话,现在你可以继续了。