xcode - iOS 8 上不显示 MPNowPlayingInfoCenter 信息

2024-01-04

我正在开发一个音乐应用程序,它应该在后台播放音乐。

我用MPMoviePlayerController播放音乐。我的代码来启动MPMoviePlayerController:

NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
resourcePath = [resourcePath stringByAppendingString:@"/music.m4a"];
NSError* err;
self.player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:resourcePath]];
if (err) {
    NSLog(@"ERROR: %@", err.localizedDescription);
}
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[session setActive:YES error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self.player setShouldAutoplay:NO];
[self.player setControlStyle: MPMovieControlStyleEmbedded];
self.player.view.hidden = YES;
[self.player prepareToPlay];

当我执行时[self.player play];音乐开始。 但我还想在锁屏和控制中心显示歌曲名称、专辑名称和专辑插图。我正在使用以下代码:

Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter");
    if (playingInfoCenter) {
        NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
        MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage: [UIImage imageNamed:@"artwork.png"]];
        [songInfo setObject:@"SongName" forKey:MPMediaItemPropertyTitle];
        [songInfo setObject:@"ArtistName" forKey:MPMediaItemPropertyArtist];
        [songInfo setObject:@"AlbumTitle" forKey:MPMediaItemPropertyAlbumTitle];
        [songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork];
        [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];
    }

但锁屏中没有显示任何内容。它也不会显示在 ControlCenter 中。

我该如何解决我的问题?我在互联网上没有找到任何东西。

预先感谢,法比安。


问题是您不满足成为锁屏和控制中心大师的要求,因为我在书中解释 http://www.apeth.com/iOSBook/ch27.html#_remote_control_of_your_sound。您应该看到与此等效的现代(iOS 8):

您没有看到它的事实表明您忽略了一个或多个要求,我列出了这些要求(直接引用我的书中的内容):

  • 您的应用程序的响应者链中必须包含一个 UIResponder 返回 YES 从canBecomeFirstResponder,并且该响应者必须 实际上是第一响应者。
  • 响应者链中的一些UIResponder, 等于或高于第一响应者,必须实施remoteControlReceivedWithEvent:.
  • 您的应用程序必须调用 UIApplication 实例方法beginReceivingRemoteControlEvents.
  • 您的应用程序的音频 会话的策略必须是播放。
  • 您的应用程序必须发出一些声音。

我不知道你忽略了哪一个;它可能不止一个。您可能想将您的代码与工作示例进行比较,如下所示:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/iOS7bookExamples/bk2ch14p653backgroundPlayerAndInterrupter/backgroundPlayer/backgroundPlayer/ViewController.m https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/iOS7bookExamples/bk2ch14p653backgroundPlayerAndInterrupter/backgroundPlayer/backgroundPlayer/ViewController.m

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xcode - iOS 8 上不显示 MPNowPlayingInfoCenter 信息 的相关文章

  • 如何在 Mac 操作系统中播放声音?

    我想在专为 Mac OS X Lion 10 7 而不是 iPhone 设计的 Objective C 应用程序中播放 mp3 文件 谢谢 看看NSSound http developer apple com library mac doc
  • UIAlertController 的弹出框变形

    我使用 UIToolbar 中的 UIAlertController 和首选操作表样式向用户呈现选项列表 呈现时 弹出框的箭头被切断 其角以两种不同的半径圆化 据我所知 我用来展示它的代码直接来自文档 UIAlertController a
  • UISearchController 在调用时更改状态栏颜色

    我的应用程序中有以下代码 特别是在viewDidLoad 这设置了我的UISearchController self searchController UISearchController alloc initWithSearchResul
  • 越狱后,iOS应用程序会以root权限运行吗?

    一旦 iOS 设备越狱 我们就可以构建越狱应用程序 使用 theos 并将其安装在 Applications预加载应用程序以 root 权限运行的目录 如果应用程序是使用 Xcode 构建的 一旦安装 它就会进入 private var m
  • 如何在 Xcode 4 中安装 Cocos2d PROJECT 模板?

    我可能已经用 20 种不同的语法搜索了这个问题 但找不到答案 请帮忙 如何在 xcode 4 中安装 Cocos2d 项目模板 我尝试了不同的方法 但是当我在 Xcode 4 中构建新项目时它们仍然没有出现 帮助 下载 cocos2d ip
  • 添加 UITabBarController 时出错

    我在用着单点触控C 编写具有多个不同屏幕的 iPhone 应用程序 为了简单起见 我将仅描述导致我遇到问题的控制器的几个屏幕 我遇到的问题是 当我创建一个继承自的类时 我收到此错误消息UITabBar控制器 应用程序窗口应该有一个根视图控制
  • 如何在 Xcode 8 中更改应用程序显示名称以添加空格

    我试图在 Xcode 8 中的应用程序名称 独立贴纸包 中添加一个空格 我在这里看到的解决方案是更改产品名称 在包装中 或更改 捆绑显示名称 我更改了产品名称 但没有起作用 我清理 重建 重置模拟器中的内容和设置 并注销 xcode 重新登
  • 设备锁定时扫描外围设备

    我的中央管理器可以在前台和后台检测新的外围设备 我知道这一点是因为当它发现新的外围设备时我会触发 UNNotification 但是 当设备锁定时 它似乎不会继续扫描新的外围设备 在我的能力范围内 我启用了使用 LE 配件的后台模式以及远程
  • Xcode UI 测试 UIKeyInput typeText

    在 Xcode UI 测试期间 我该如何insertText for a UIView符合UIKeyInput 我创建了一个CodeInputView https github com acani CodeInputView符合UIKeyI
  • Objective C 中最好的多线程方法?

    我正在开发一个 iPad 应用程序 目前正在努力寻找多线程的最佳方法 让我用一个简化的例子来说明这一点 我有一个包含 2 个子视图的视图 一个目录选择器和一个包含所选目录中所有图像缩略图的图库 由于 下载 和生成这些缩略图可能需要相当长的时
  • 如何为自定义手势识别器实现velocityInView:?

    我正在实施一个自定义UIGestureRecognizer子类 我想实施velocityInView 同样的方式UIPanGestureRecognizer已经做到了 但我不确定如何去做 如何计算以点 秒为单位的速度 Firstly 如果您
  • 越狱的 iOS 从后台应用程序截图

    我正在为自己构建一个实用程序应用程序 当该实用程序在后台运行时 它可以截取前台运行的任何内容的屏幕截图 该实用程序将在越狱设备上运行 因此它可以访问私有 API 而不受沙箱的限制 由于实用程序应用程序在后台运行 作为守护程序或使用后台程序
  • IOS - ObjC Google 地图 Api 密钥

    我只是按照上面提到的做对了一切here https developers google com maps documentation ios start adding the google maps sdk for ios to your
  • 影响 UINavigationBar 的后退按钮方法 (iOS)

    我有一个推送到详细视图控制器的表视图 从详细视图控制器中 当我按下 后退 按钮时 我希望更改一个整数值 如何以编程方式编辑导航栏后退按钮的操作 后退按钮会自动放置在我的应用程序中 因为我使用的是表视图 所以我实际上没有创建按钮 所以我不知道
  • Objective c 中的 UIButton 虚线下划线

    正常下划线有效 但点下划线似乎不起作用 UIButton btn UIButton buttonWithType UIButtonTypeCustom btn frame CGRectMake 100 10 300 300 NSMutabl
  • 如何强制重装iOS模拟器?

    我想下载模拟器组件 Xcode 6 2 但在下载过程中我的互联网连接丢失了 Xcode 仍然显示我已经安装了 7 1 模拟器 你知道如何强制重装iOS模拟器吗 我已完成以下步骤 从 Library Caches com apple dt X
  • 如何从Android手机获取所有音乐文件的列表

    我创建了一个扫描手机上音乐文件的应用程序 如果我扫描文件夹 它会扫描音乐文件 SD卡 音乐但当我写入时它不会扫描 mp3 文件 sdcard 它运行良好 但它在某些设备上不起作用 应用程序崩溃可能是因为该手机上不存在该路径 我该怎么办 CO
  • 自定义 UITableViewCell 中按钮上的 IBAction

    使用 iOS 5 我有一个场景 我必须使用自定义单元格创建一个 tableView 自定义单元格有一个名为 TainingCellController 的控制器 UITableViewCell 的子类和一个 NIB 文件 TrainingC
  • “UITableView”类型的值没有成员“sectionHeaderTopPadding”

    为什么我在 Xcode 12 4 模拟器 ios 14 x 中收到以下代码的构建错误 if available iOS 15 0 myTableView sectionHeaderTopPadding 0 0 error here 错误是
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master

随机推荐