我现在在做的Unity的2d移动端项目,同时发布了ios和安卓平台,接入了AdMob,项目仅使用了非强制性的激励广告,并且已经可以正常播放广告了,但是现在有一部分玩家向我们反馈bug,说看完广告之后游戏的声音就消失了,这个问题很长一段时间都没有得到很好的解决,我们尝试过一些方法,好像都并没有什么效果,并且我们在本地使用自己的各种测试设备都几乎无法复现这个问题。我们不知道是设备差异还是SDK接入的问题(整个广告流程都能够完美播放)。
我们在安卓上发现的这种bug的出现数量远比ios平台上多得多,这也可能是因为我们安卓用户较多的情况导致的。
我们使用的是Unity2019.4.40f1版本,最一开始我们接入的是AdMob提供的Google Mobile Ads Unity Plugin v7.4.1,并在上线之后发现了广告后,音频消失的问题,后来我们怀疑是因为广告的声音和我们游戏的声音互相抢占音频通道,导致的冲突,所以我们在播放广告之前,暂停了所有的游戏音效,并在播放完广告之后再重新启用音效,上线之后仍然存在问题,后来我们尝试在广告播放完之后,使用
AudioSettings.Reset(AudioSettings.GetConfiguration());
这一行代码对音效进行重置,但是仍然有音效消失的问题存在。
后来我们猜想是由于线程问题,所以将SDK版本更新到Google Mobile Ads Unity Plugin v8.3.0,并且使用以下代码
MobileAds.RaiseAdEventsOnUnityMainThread = true;
将广告设置在主线程上,现在上线之后仍然有安卓用户返回该问题。
还有一个现象:我们在第一次发现该问题,并准备复现的时候,我们看完广告,立即退到桌面,然后过了几秒,再从后台进入游戏,广告的声音居然出来了,这次广告明明看完了,也回到游戏画面了,这很奇怪。
有没有同样经历的专家帮助一下我,我们已经在这个问题上停留很长时间了,希望能够彻底弄明白并解决这个问题。
我已经使用过ChatGPT,但是仍没有解决。
如果还有我没提到的具体细节可以帮助你们分析,请用各种方式联系我,我会尽可能的告诉你们。
最后,万分感谢您的帮助!
Crashed: Thread: SIGABRT 0x0000000000000000
#00 pc 0x51ba8 libc.so (BuildId: 8b687b4d600e1faa82af5a5197e82129)
#01 pc 0x51b78 libc.so (BuildId: 8b687b4d600e1faa82af5a5197e82129)
#02 pc 0x6f365c libart.so (BuildId: 4c9b59b74ca9272f710a71137164c349)
#03 pc 0x16ea8 libbase.so (BuildId: 420d56eac27a210c92900f3ddb760c86)
#04 pc 0x16450 libbase.so (BuildId: 420d56eac27a210c92900f3ddb760c86)
#05 pc 0x3c7e1c libart.so (BuildId: 4c9b59b74ca9272f710a71137164c349)
#06 pc 0x3c4ab4 libart.so (BuildId: 4c9b59b74ca9272f710a71137164c349)
#07 pc 0x5e035c libart.so (BuildId: 4c9b59b74ca9272f710a71137164c349)
#08 pc 0x186d70 libandroid_runtime.so (BuildId: be4f7be05d14a849ac9e59c76d23d4f3)
#09 pc 0x69418 libaudioclient.so (BuildId: 616a0295d23954d26f0bf7179fc2b4ac)
#10 pc 0x9504c libaudioclient.so (BuildId: 616a0295d23954d26f0bf7179fc2b4ac)
#11 pc 0x9b3cc libaudioclient.so (BuildId: 616a0295d23954d26f0bf7179fc2b4ac)
#12 pc 0xa1e44 libaudioclient.so (BuildId: 616a0295d23954d26f0bf7179fc2b4ac)
#13 pc 0x19ee0 libwilhelm.so (BuildId: 92afa87b460614c6427937ac034332d4)
#14 pc 0x35b40 libwilhelm.so (BuildId: 92afa87b460614c6427937ac034332d4)
#15 pc 0x115bb80 libunity.so (BuildId: 2bcd9df50cfbfa1b1e8be44d05f70613b26fb44e)
#16 pc 0x1150d80 libunity.so (BuildId: 2bcd9df50cfbfa1b1e8be44d05f70613b26fb44e)
这个应该是admob的问题,先尝试升级Admob到最新版本,如果确实无法解决,建议用聚合平台,比如ironsource之类的,安卓端放弃admob
在播放广告之前调用 UnitySetAudioSessionActive(false)
在关闭广告的回调里面调用 UnitySetAudioSessionActive(true)
【Unity3D日常BUG】Unity3D 中听不到声音解决方案
可以参考下
https://blog.csdn.net/q764424567/article/details/123473108
SDK版本、Unity引擎版本之间的兼容性问题有没有考虑过
看了你问题描述,内容很多,从我的感觉和经验上看,很大可能是线程使用的问题,你虽然调用了停止播放广告的音频,但没有马上停止,此时再去开启游戏的声音就会失败。因此你可以看看有没有判断音频通道没有在使用的方法,开启游戏声音之前要确保获取到了音频通道才进行下去,否则等待音频通道。不好定位问题,可以写一些日志,看下打开、关闭广告声音前后都发生了什么。
不同的手机会有些差异,在APP中收集一下日志,然后把日志上传回来,分析一下日志,才能准确的查找原因
1.检查音频设置
2.音频焦点管理
3.声音混合
4.广告SDK更新
5.设备兼容性问题
引用chatgpt内容作答:
从您提供的信息来看,您在Unity移动端项目中接入了AdMob广告,并且在玩家观看完广告后遇到了游戏声音消失的问题。您已经尝试了一些解决方法,但仍然存在问题。以下是一些可能的解决方案和建议:
1、检查音频管理:确保在广告播放完毕后正确恢复游戏音效。您可以在广告播放完毕后的回调函数中添加代码,重新启用游戏音效。
2、音频焦点管理:在某些设备上,音频焦点可能会导致广告声音和游戏声音之间的冲突。您可以尝试在广告播放前请求音频焦点,并在广告播放完毕后释放音频焦点。Unity中可以使用AudioFocusRequest来实现这个功能。
3、检查广告插件设置:确保您正确配置了AdMob广告插件。您可以查看广告插件的文档,确认是否有任何与音频相关的设置或选项。
4、更新Unity版本和广告插件版本:考虑升级Unity和Google Mobile Ads Unity插件到最新版本,以确保使用最新的修复和功能。
5、更多设备和平台测试:虽然您在本地测试设备上无法复现问题,但仍建议在各种不同型号和版本的设备上进行更广泛的测试,特别是在出现问题较多的安卓平台上。
最后,关于广告声音在退到桌面后再返回游戏时播放的奇怪现象,这可能与不同设备和操作系统的音频焦点管理策略有关。然而,确保在正常游戏流程中解决声音消失的问题仍然是首要任务。
根据您的描述,您在Unity的移动端项目中接入了AdMob广告,并且在安卓平台上遇到了一个问题:当玩家看完广告后,游戏声音消失。您已经尝试了一些解决方法,但是问题仍然存在。同时,您还提到在第一次发现问题时,如果您立即退到桌面并在几秒钟后重新进入游戏,广告的声音会出现,这也让您感到困惑。
这个问题可能由多个因素引起,下面是几个可能的解决方案和建议供您参考:
检查音频管理:确保您正确管理游戏中的音频播放和停止。例如,确保在播放广告前暂停游戏音效,在广告播放完成后恢复音效。您可以使用Unity的AudioListener组件来管理全局音频设置。
检查音频焦点管理:在安卓平台上,应用程序需要获取音频焦点才能播放声音。确保在播放广告时,您的应用程序正确请求音频焦点,并在广告播放完毕后释放音频焦点。
检查广告SDK配置:确保您正确配置了AdMob SDK,并且广告和游戏音效的音频通道没有冲突。您可以尝试调整广告和游戏音效的音频通道,以确保它们不会相互干扰。
更新到最新版本的广告SDK:确保您使用的是最新版本的Google Mobile Ads Unity Plugin。新版本可能修复了一些已知的问题和错误。
调查设备特定问题:由于您在本地测试设备上无法复现该问题,可能是因为这个问题与特定的安卓设备或者操作系统版本有关。您可以尝试在一些常用的安卓设备上进行测试,以便更好地了解问题的范围和影响。
联系AdMob支持团队:如果您已经尝试了上述解决方案仍然没有解决问题,建议您联系AdMob的支持团队。他们可能能够提供更具体的帮助和指导,以解决您的问题。
关于您提到的Firebase报错信息,它显示了一个崩溃日志,但与声音消失的问题似乎没有直接关联。这可能是与您的应用程序其他部分或设备配置有关的问题。您可以通过检查其他相关的报错信息或者崩溃堆栈来找出导致崩溃的具体原因。
希望以上信息对您有所帮助,祝您解决这个问题!如有任何进一步的问题,请随时向我提问。