uni-app iOS打包后UIBackgroundModes清空仍存在audio

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app iOS打包后UIBackgroundModes清空仍存在audio

开发环境信息

项目 信息
产品分类 uniapp/App
PC操作系统 Windows
操作系统版本 win10
HBuilderX类型 正式
HBuilderX版本 4.26
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 6p
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

"UIBackgroundModes" : ""

操作步骤:

UIBackgroundModes中添加audio后,删除再打包

预期结果:

打包不存在 UIBackgroundModes audio

实际结果:

打包后info.plist中还有 UIBackgroundModes audio

bug描述:

UIBackgroundModes中添加audio后,删除打包还存在,如下图片中项目build下manifest中已经不存在UIBackgroundModes字段但是打包出来还有

Image Image


3 回复

我也遇到这个问题了,解决了嘛请问


首先,修改此配置需要重新提交云端打包才能生效。 确认是否勾选了“安心打包”,尝试使用“传统打包”方式。 使用传统打包方式还存在此问题的话,请重新提交云端打包,并提供appid,我们查下你云端打包日志。

在处理uni-app打包为iOS应用时,如果遇到UIBackgroundModes在Info.plist中被清空但仍然能够在后台播放音频的问题,这通常是因为iOS系统对于后台音频播放有特定的处理机制。尽管UIBackgroundModes可能未在Info.plist中明确设置,但iOS应用仍然可以通过其他方式请求后台音频播放权限。

在uni-app中,如果你正在使用音频相关的API(如HTML5的Audio元素或第三方音频库),确保你的应用在音频播放时正确请求后台运行权限是关键。以下是一些可能涉及的代码示例和配置方法,用于确保应用能够在后台播放音频:

1. 使用AVFoundation框架请求后台播放权限(原生代码)

虽然uni-app主要使用Vue语法进行开发,但你可以通过原生插件或自定义原生模块来集成原生代码。以下是一个使用Objective-C在iOS项目中请求后台音频播放权限的示例:

#import <AVFoundation/AVFoundation.h>

- (void)requestAudioSession {
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    NSError *error = nil;
    
    // 设置音频会话类别为播放音频,并允许后台播放
    [audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error];
    if (error) {
        NSLog(@"设置音频会话类别失败: %@", error);
    }
    
    // 激活音频会话
    [audioSession setActive:YES error:&error];
    if (error) {
        NSLog(@"激活音频会话失败: %@", error);
    }
}

2. 在uni-app中调用原生插件

为了在uni-app中调用上述原生代码,你需要创建一个原生插件。这涉及到iOS和Android两端的开发,但在这里我们只关注iOS部分。一旦插件创建完成,你可以在uni-app的JavaScript代码中调用插件方法,以请求音频后台播放权限。

3. 确保应用逻辑正确处理后台状态

在你的uni-app应用中,确保你的音频播放逻辑能够处理应用进入后台的情况。例如,使用pageShowpageHide等生命周期钩子来管理音频的播放和暂停。

4. 注意事项

  • 确保你的应用符合App Store的后台播放音频政策。
  • 在提交应用到App Store之前,彻底测试后台音频播放功能。
  • 考虑用户隐私和数据使用政策,确保你的应用在后台运行时不会违反任何规定。

通过上述方法,你可以在uni-app中有效地管理iOS应用的后台音频播放权限,即使UIBackgroundModes在Info.plist中未明确设置。

回到顶部