You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:25:27