# 我的微信小游戏从2.03.00升级到2.03.03或者2.03.04时，出现调用api时api丢失错误

**URL:** <https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378>\
**Category:** 中文支持\
**Created:** [December 6, 2024, 9:22am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378 "2024-12-06T09:22:39Z")\
**Posts on this page:** 17\
**Page:** 3

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [February 12, 2025, 3:32am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/43 "2025-02-12T03:32:22Z")

</div>

你是不是替换了appID？我猜测可能时appID换了导致广告ID无法使用导致拉取激励视频失败

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [February 12, 2025, 3:43am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/44 "2025-02-12T03:43:44Z")

</div>

> [@foyable](#):
>
> 我猜测可能时appID换了导致广告ID无法使用导致拉取激励视频失败

那应该是了，我使用的是自己的appID, 我查了下你分享的原版工程文件，打开后appID也是空的。

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [February 12, 2025, 6:09am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/45 "2025-02-12T06:09:34Z")

</div>

那么你有可以使用的广告ID吗，如果有的话在场景里唯一的那个脚本里面替换一下

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [February 12, 2025, 10:42pm UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/46 "2025-02-12T22:42:01Z")

</div>

很遗憾我们这边没有可以使用的广告ID，我看到官网上的信息写的要求是必须达到500访问量才能激活微信激励广告。

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [February 13, 2025, 5:01am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/47 "2025-02-13T05:01:45Z")

</div>

我在论坛里找到了一篇可能与你所遇到问题相关的帖子，或许你可以试一试看是否能够解决你的问题，帖子如下：[FMOD music will not resume after Ironsource Ads - #13 by Leah\_FMOD](https://qa.fmod.com/t/fmod-music-will-not-resume-after-ironsource-ads/20209/13)

这个讨论里面主要说的是某些第三方平台的激励广告插件在广告播放时，可能将缓冲区调整到超过FMOD正常情况下的音频缓冲区，而这种变化会立即触发错误，因为FMOD的缓冲区长度不足以应对这种突然的变化，从而导致FMOD无法正常输出音频。在播放完广告后，这些第三方平台通常不会将缓冲区长度恢复到原始设置，这也便意味着即使广告结束后，FMOD仍然无法恢复正常输出音频。

因此我会建议你试一下在 `FMOD → Edit Settings → Platform Specific → DSP buffer length` 的设置里，尝试将缓冲区长度增加到1024试一试，如果还是不行的话，还可以多试几个不同的缓冲区数看看。

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/fmod/original/2X/7/79c4b873da340926b624a9dfc18d75ccecc3da21.png)

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [March 12, 2025, 7:59am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/48 "2025-03-12T07:59:01Z")

</div>

我找微信小游戏插件那边的技术人员发现问题了，在打开激励视频的时候，微信小游戏暂停了游戏的音频，在之后关闭激励视频的时候，fmod的音频没有被恢复，他让我在微信小游戏插件一个方法名为resumeWebAudio的方法中加入 GameGlobal.Module.mContext?.resume();  
GameGlobal.Module.context?.resume();  
这两行代码之后，播放激励视频声音消失的bug解决了，但是引出了一个新的bug，即17.5版本以上的ios设备会有在运行小游戏切后台之后，再将游戏切换会前台，游戏声音会消失，直到退出,然后重新运行游戏  
他告诉我这两个bug不兼容，可能fmod还是无法使用了

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [March 13, 2025, 3:18am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/49 "2025-03-13T03:18:21Z")

</div>

感谢你分享的这个解决办法。

> [@foyable](#):
>
> 他让我在微信小游戏插件一个方法名为resumeWebAudio的方法中加入 GameGlobal.Module.mContext?.resume();  
> GameGlobal.Module.context?.resume();

不知你可否试一试在resumeWebAudio 的方法中调用 [System::mixerResume](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_mixerresume) 这个方法看看是否能解决这个问题呢？

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [March 13, 2025, 8:18am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/51 "2025-03-13T08:18:09Z")

</div>

请问下具体怎么加呢？这个脚本貌似是js脚本，它位于 WXSDK/Runtime/wechat-default/unity-sdk/audio/utils.js ， 我对js脚本不太熟悉，这是这个脚本的全部逻辑：

import { uid } from ‘…/utils’;  
import { isSupportCacheAudio } from ‘…/…/check-version’;  
import { WEBAudio, audios } from ‘./store’;  
import { TEMP\_DIR\_PATH } from ‘./const’;  
export const resumeWebAudio = () =\> {

```
GameGlobal.Module.mContext?.resume();
GameGlobal.Module.context?.resume();

WEBAudio.audioContext?.resume();

```

};  
export const createInnerAudio = () =\> {  
const id = uid();  
const audio = (isSupportCacheAudio && WEBAudio.audioCache.length ? WEBAudio.audioCache.shift() : wx.createInnerAudioContext());  
if (audio) {  
audios[id] = audio;  
}  
return {  
id,  
audio,  
};  
};  
export const destroyInnerAudio = (id, useCache) =\> {  
if (!id) {  
return;  
}  
if (!useCache || !isSupportCacheAudio || WEBAudio.audioCache.length \> 32) {  
audios[id].destroy();  
}  
else {

```
    ['Play', 'Pause', 'Stop', 'Canplay', 'Error', 'Ended', 'Waiting', 'Seeking', 'Seeked', 'TimeUpdate'].forEach((eventName) => {
        audios[id][`off${eventName}`]();
    });
    const state = {
        startTime: 0,
        obeyMuteSwitch: true,
        volume: 1,
        autoplay: false,
        loop: false,
        referrerPolicy: '',
    };
    Object.keys(state).forEach((key) => {
        try {
            
            // @ts-ignore
            audios[id][key] = state[key];
        }
        catch (e) { }
    });
    audios[id].stop();
    const cacheAudio = audios[id];
    
    setTimeout(() => {
        
        WEBAudio.audioCache.push(cacheAudio);
    }, 1000);
}
delete audios[id];

```

};  
export const printErrMsg = (msg) =\> {  
GameGlobal.manager.printErr(msg);  
};  
export function mkCacheDir() {  
const fs = wx.getFileSystemManager();  
fs.rmdir({  
dirPath: TEMP\_DIR\_PATH,  
recursive: true,  
complete: () =\> {  
fs.mkdir({  
dirPath: TEMP\_DIR\_PATH,  
});  
},  
});  
}

您可以直接告诉我怎么写吗？

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [March 14, 2025, 9:20am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/52 "2025-03-14T09:20:25Z")

</div>

我尝试了一下：  
export const resumeWebAudio = () =\> {

```
System.mixerResume();

// GameGlobal.Module.mContext?.resume();
// GameGlobal.Module.context?.resume();

WEBAudio.audioContext?.resume();

```

};  
但是在播放激励视频回到游戏后，游戏还是失去了声音

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [March 19, 2025, 12:42am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/53 "2025-03-19T00:42:03Z")

</div>

> [@foyable](#):
>
> 您可以直接告诉我怎么写吗？

我在和同事讨论后，觉得在JS文件里使用 [System::mixerResume](https://www.fmod.com/docs/2.02/api/core-api-system.html#system_mixerresume) 可能会过于繁琐不太现实，因为这可能还涉及到初始化FMOD系统以及暴露mixerResume这个方法。

> [@foyable](#):
>
> 这两行代码之后，播放激励视频声音消失的bug解决了，但是引出了一个新的bug，即17.5版本以上的ios设备会有在运行小游戏切后台之后，再将游戏切换会前台，游戏声音会消失，直到退出,然后重新运行游戏

对于这个加入那两行代码后产生的新bug，不知你可否尝试一下在Unity脚本的 OnApplicationFocus 方法里调用mixerResume这个方式试一试，看看声音在从后台切换回前台后有没有恢复呢？比方说这样：

```auto
    private void OnApplicationFocus(bool focus)
    {
        RuntimeManager.CoreSystem.mixerResume();
    }

```

如果xcode里有FMOD相关的Log信息的话，也可以麻烦你分享一下么？

目前比较头疼的是我这边没有找到可以在微信小游戏平台使用的其他广告插件，一直无法在我们这边复现这个问题，所以调查起来很有难度，可能还需要麻烦你给我更多时间进行调查。

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [March 19, 2025, 7:37am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/54 "2025-03-19T07:37:11Z")

</div>

我尝试了一下，在一个OnApplicationFocus方法中调用了RuntimeManager.CoreSystem.mixerResume();，但是17.5版本以上的ios设备且后台游戏声音消失的问题仍然存在

---

<div class="post-metadata">

**Author:** ![foyable](https://avatars.discourse-cdn.com/v4/letter/f/a9adbd/32.png) [@foyable](https://qa.fmod.com/u/foyable)\
**Post date:** [March 20, 2025, 7:41am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/55 "2025-03-20T07:41:35Z")

</div>

我是使用Unity直接打包微信小游戏，双端都可以直接用，中间不存在XCode  
没关系，还是很感谢您对我的问题的关注

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [March 28, 2025, 1:01am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/56 "2025-03-28T01:01:31Z")

</div>

你好，我在其他不同的WebGl游戏中继续测试的时候发现，无论那些游戏是否使用Unity，是否使用了FMOD，或使用不同浏览器，只要在17.5版本以上的IOS设备上将游戏切换至后台再返回前台，游戏音频均无法恢复播放。目前结论是这有可能是IOS方面的问题。

---

<div class="post-metadata">

**Author:** ![tony020409](https://avatars.discourse-cdn.com/v4/letter/t/5f8ce5/32.png) [@tony020409](https://qa.fmod.com/u/tony020409)\
**Post date:** [September 17, 2025, 6:19am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/57 "2025-09-17T06:19:08Z")

</div>

請問這個問題解決了嗎?  
因為我目前使用ios17.5以上的設備，測試其他webgl遊戲  
切換到後台再返回前台聲音都會恢復，但FMOD聲音會消失。

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [September 19, 2025, 12:41am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/58 "2025-09-19T00:41:32Z")

</div>

你好！

不知是否方便分享一下你在哪测试的webgl游戏么？我这边主要是在itchio上面，使用IOS的浏览器测试的。

---

<div class="post-metadata">

**Author:** ![tony020409](https://avatars.discourse-cdn.com/v4/letter/t/5f8ce5/32.png) [@tony020409](https://qa.fmod.com/u/tony020409)\
**Post date:** [September 19, 2025, 1:38am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/59 "2025-09-19T01:38:38Z")

</div>

@li_fmod  
[NSMB - Mario Vs Luigi Online](https://ipodtouch0218.itch.io/nsmb-mariovsluigi)

> **[NSMB - Mario Vs Luigi Online by ipodtouch0218](https://ipodtouch0218.itch.io/nsmb-mariovsluigi)**
>
> Play in your browser

---

<div class="post-metadata">

**Author:** ![li\_fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/li_fmod/32/6577_2.png) [@li\_fmod](https://qa.fmod.com/u/li_fmod)\
**Post date:** [September 23, 2025, 1:21am UTC](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378/60 "2025-09-23T01:21:39Z")

</div>

非常感谢您分享的链接！我在IOS上用Safari测试这个游戏时，确实可以正常恢复声音。

我们也在您的另一个帖子 [Unity WebGL minimization causes sound to disappear](https://qa.fmod.com/t/unity-webgl-minimization-causes-sound-to-disappear/23369) 中做了回复了，目前该问题仍在调查中，还没有找到具体原因或明确的解决方案。不同浏览器和 WebView 的表现似乎确实存在差异。

后续如果有任何新的进展，我会在这两个帖子中同步更新信息。

[Previous page](https://qa.fmod.com/t/2-03-00-2-03-03-2-03-04-api-api/22378.md?page=2)
