Unity集成Firebase Invites抛出ApplicationException异常求助
解决Firebase Invites在Unity中抛出
ApplicationException: internal::IsInitialized()的问题 我之前在Unity集成Firebase服务时也碰到过类似的初始化异常,结合你给出的环境版本,整理了几个针对性的排查和解决方向:
1. 确保Firebase核心服务先完成初始化
Firebase Invites完全依赖Firebase App的核心初始化,绝对不能在Firebase依赖未就绪时调用Invites相关代码。你需要在启动时先异步完成Firebase依赖检查,再执行Invites逻辑:
using Firebase; using Firebase.Invites; using UnityEngine; public class FirebaseInvitesManager : MonoBehaviour { void Start() { // 异步检查并修复Firebase依赖 FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == DependencyStatus.Available) { // 依赖就绪后,再初始化Invites或调用发送邀请的代码 InitializeInvites(); } else { Debug.LogError($"Firebase依赖初始化失败: {dependencyStatus}"); } }); } void InitializeInvites() { // 这里写你的Firebase Invites初始化或发送邀请代码 var invite = new InviteContent(); // ... 设置邀请标题、内容等参数 FirebaseInvites.SendInviteAsync(invite); } }
注意:ContinueWith的回调默认在后台线程执行,如果需要操作Unity UI或组件,记得切换回主线程(比如用UnityMainThreadDispatcher工具,或者封装一个主线程调用的方法)。
2. 排查插件版本兼容性问题
你的环境里几个插件版本都比较老,且可能存在兼容性冲突:
- Unity 2017.3.0f3属于较旧版本,Firebase Invites 4.4.3可能和它的兼容性不够稳定,建议升级到适配Unity 2017的最新稳定版Firebase插件(不要直接用最新版,找Firebase文档里标注支持Unity 2017的版本)
- Google Play Game Services (GPGS) 0.9.50和Firebase可能存在初始化冲突,GPGS的某些初始化逻辑可能会抢占Firebase的核心服务初始化。可以尝试先禁用GPGS插件,测试Invites是否正常工作,再逐步排查冲突点。
3. 验证平台配置的完整性
Android端:
- 确保
google-services.json文件正确放置在Assets/Plugins/Android目录下,且文件里的包名、SHA-1指纹和Firebase控制台完全匹配 - 检查
AndroidManifest.xml(插件自动生成的或者你自定义的)是否包含Firebase Invites所需的组件:<meta-data android:name="com.google.firebase.invites.FIREBASE_INVITE_SERVICE" android:value="com.google.firebase.invites.DefaultInviteService" />
iOS端:
- 确认
GoogleService-Info.plist已添加到项目根目录,且REVERSED_CLIENT_ID已配置到Xcode的URL Types中(在Unity的Player Settings -> iOS -> Other Settings -> Configuration里可以直接配置)
4. 排除其他第三方插件的干扰
你集成的Appodeal(广告)和nodex Game Analytics(分析)插件可能会修改平台配置文件,或者和Firebase的初始化逻辑冲突:
- 先暂时禁用这两个插件,只保留Firebase相关组件,测试是否还会抛出异常。如果正常,再逐个重新启用插件,定位冲突的来源
- 调整插件的初始化顺序,确保Firebase的初始化代码在广告、分析插件之前执行(可以通过Unity编辑器的
Edit -> Project Settings -> Script Execution Order调整脚本的执行优先级)
5. 清理缓存并重新构建
Unity 2017的缓存机制偶尔会导致配置异常,建议做以下操作:
- 删除Unity项目根目录下的
Library文件夹,然后重新打开项目,让Unity重新导入所有资源 - 如果是Android平台,清理Android Studio的
Build和Cache目录;如果是iOS平台,清理Xcode的Derived Data - 重新构建项目,确保所有插件的配置文件都正确生成到平台工程中
内容的提问来源于stack exchange,提问作者Alex Dovgodko
相关产品推荐
相关产品推荐

