Skip to content

isMute

查询静音状态

isMuteSUDRTGameAudioSession 协议中的一个同步查询方法。它用于获取当前游戏引擎的软件静音状态。该状态反映了 App 是否通过 SDK 接口禁用了游戏音频输出,而不代表 iOS 系统硬件静音键的状态。


方法声明

objc
/**
 * 查询当前游戏音频是否处于静音状态。
 * @return YES 表示已静音,NO 表示正在播放。
 */
- (BOOL)isMute;

运行行为

  1. 逻辑状态同步:该方法返回的是通过 mute: 方法设置的逻辑开关值。
  2. 优先级独立:即使 getVolumeFactor 返回 1.0(最大音量),如果 isMute 返回 YES,游戏依然不会发出声音。
  3. 软硬隔离:此方法仅反馈 SDK 内部的静音标志。如果用户拨动了 iPhone 侧边的物理静音键,isMute 可能仍返回 NO(取决于音频选项中是否配置了 SUDRT_KEY_AUDIO_OBEY_MUTE_SWITCH)。

代码示例

用于在 App UI 界面上同步静音按钮的状态:

objc
- (void)updateMuteButtonState {
    // 1. 获取当前 SDK 的静音状态
    BOOL muted = [self.audioSession isMute];
    
    // 2. 根据状态切换图标(例如:喇叭图标 vs 禁音图标)
    UIImage *icon = muted ? [UIImage imageNamed:@"icon_audio_off"] : [UIImage imageNamed:@"icon_audio_on"];
    [self.muteButton setImage:icon forState:UIControlStateNormal];
    
    NSLog(@"当前游戏静音状态: %@", muted ? @"已静音" : @"播放中");
}

注意事项

  • 初始化状态:在未调用 mute: 之前,SDK 的默认状态通常为 NO(不静音)。
  • 与系统静音区别:App 开发者应注意区分“App 业务静音”与“系统硬件静音”。如果需要确保游戏在任何情况下都跟随系统静音键,请查阅 SUDRT_KEY_AUDIO_OBEY_MUTE_SWITCH 配置。
  • 调用建议:在执行复杂的音频切换逻辑前,先通过 isMute 进行状态判定,可以避免重复调用 mute: 带来的性能开销。