<script>exportdefault{methods:{buildAudio(){let path = plus.io.convertLocalFileSystemURL('xxx/voice.mp3');if(this.$store.state.platform =='android'){// Android端...}else{// iOS端let AVAudioSession = plus.ios.importClass('AVAudioSession');this.audioManager = AVAudioSession.sharedInstance();// 獲取分享音頻會話實例/*** 設置音頻會話類型為AVAudioSessionCategoryPlayback,同時配置選項為AVAudioSessionCategoryOptionMixWithOthers和AVAudioSessionCategoryOptionDuckOthers* Constants that specify optional audio behaviors. setCategory:withOptions:error* setCategory:(AVAudioSessionCategory)category:* @param AVAudioSessionCategoryPlayback The category for playing recorded music or other sounds that are central to the successful use of your app.* withOptions:(AVAudioSessionCategoryOptions)options:* @param AVAudioSessionCategoryOptionMixWithOthers = 0x1 An option that indicates whether audio from this session mixes with audio from active sessions in other audio apps.* @param AVAudioSessionCategoryOptionDuckOthers = 0x2 An option that reduces the volume of other audio sessions while audio from this session plays.*/this.audioManager.setCategorywithOptionserror('AVAudioSessionCategoryPlayback',0x1|0x2,null);let NSData = plus.ios.importClass('NSData');let AVAudioPlayer = plus.ios.importClass('AVAudioPlayer');let pathFileData = NSData.dataWithContentsOfFile(path);// 音頻文件轉為二進制數據this.innerAudioContext =newAVAudioPlayer();// new一個音頻播放器實例this.innerAudioContext.initWithDataerror(pathFileData,null);// 初始化數據// iOS中掛載代理方法使用plus.ios.implements,注意掛載的方法名需一個字符不差寫完整audioPlayerDidFinishPlaying:successfully:let delegate = plus.ios.implements('AVAudioPlayerDelegate',{'audioPlayerDidFinishPlaying:successfully:':()=>{if(this.audioFocus){/*** 設置音頻會話激活狀態(相當于Android端的音頻焦點)為false,同時配置選項為AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation,用于通知其他被中斷的APP恢復播放* Activates or deactivates your app’s audio session using the specified options. setActive:withOptions:error* setActive:(BOOL)active:* Specify YES to activate your app’s audio session, or NO to deactivate it.(Objective-C中的YES相當于JS的true,NO相當于false)* withOptions:(AVAudioSessionSetActiveOptions)options:* @param AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation = 1 An option that indicates that the system should notify other apps that you’ve deactivated your app’s audio session.*/this.audioManager.setActivewithOptionserror(false,1,null);this.audioFocus =false;}}});this.innerAudioContext.plusSetAttribute('delegate', delegate);// 使用plusSetAttribute設置實例對象屬性delegate}}}}</script>