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

标签 ios objective-c react-native promise mpmediaquery

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

enter image description here

因此回调将不会返回任何播客标题,因为我未获得授权,但是如果我在用户单击“确定”后调用该函数,这意味着我已获得授权,那么播客标题将正确返回。因为我不必等待对话得到回答。所以我的问题是如何在使用播客标题调用我的回调之前等待对话得到回答。

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

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/

相关文章:

iOS:了解导航推送后何时加载两个 View Controller 的最佳实践

objective-c - UITableView 上的自定义滚动绘图层

javascript - 在 React-native 应用程序中使用 Fable 中的 native 模块

react-native - 获取捆绑在全新应用程序安装上的最新代码推送部署

ios - 如何使用外键从两个表中获取记录

ios - 如何在 iOS 中滚动 UITableView

iOS 本地化 - 无法识别 es-US 与 es-MX

ios - 如何在框架中的 Objective-C 文件中使用 Swift 类?

ios - UICollectionView 选定的单元格索引始终为零

javascript - 在编译时在 JavascriptCore 中发出警告是否会产生显着的启动开销?