iOS开发微信收款到账语音提醒功能思路详解

2020-01-21 00:51:51于丽

四、设置声音阈值

另外一个用户反馈较多的问题是听不到播报声音,通过查看日志发现是触发语音播报时,用户设置的系统音量过小所导致。首先想到的解决方案是直接设置AVAudioPlayer的volume(或者是AudioQueue中的kAudioQueueParam_Volume),然而实验过后发现这样行不通,volume属性受制于系统音量(比如系统volume是0.5,AVAudioPlayer的音量是0.6,则最终的音量为0.5*0.6 =0.3)。要解决音量过小的问题,还是需要通过调节系统音量。最终的解决方案借鉴了进入收付款展示二维码时自动调节屏幕亮度的方案:如果屏幕亮度未达到阈值,则调高屏幕亮度到阈值,离开页面时,将亮度设回原亮度。同理,播放提示音时,若用户设置的系统音量小于阈值,则调节到阈值。提示音播放完毕后,将提示音调回原音量。

控制系统音量有两种方式:

方式一:通过MPMusicPlayerController设置音量


MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
//This property is deprecated -- use MPVolumeView for volume control instead.
mpc.volume = 0; //0.0~1.0

第一种方式简单粗暴,在设置的时候会弹出系统音量提示框,如果用户在使用app的过程突然弹出音量框,会对用户造成困扰,不建议使用这种方式,并且苹果在iOS7.0以后已将该属性标为deprecated。

方式二:通过MPVolumeView设置音量

第二种方式则是将一个看不见的MPVolumeView添加到当前视图上,系统音量提示框就不会显示了

需要注意的是,在调节完系统音量需要将MPVolumeView移除,否则后续用户手动调节音量会出现系统音量提示框不显示的情况。

调节音量的方式,则是先取到MPVolumeView中名为MPVolumeSlider的子View,并对其发送模拟用户操作的事件。


- (void)setSystemVolume:(float)volume {
 UISlider* volumeViewSlider = nil;
 for (UIView *view in [self.m_privateVoulmeView subviews]){
  if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
   volumeViewSlider = (UISlider*)view;
   break;
  }
 }
 if (volumeViewSlider != nil) {
  [volumeViewSlider setValue:volume animated:NO];
  //通过send
  [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
 }
}

总结

以上所述是小编给大家介绍的iOS开发微信收款到账语音提醒功能思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ASPKU网站的支持!


注:相关教程知识阅读请移步到IOS开发频道。