1. 官方文档和参考

 

    /// 相关文档

    /// https://firebase.google.cn/docs/unity/setup

    /// https://firebase.google.cn/docs/cloud-messaging/unity/client

    /// 相关后台

    /// https://console.firebase.google.com/

    /// 相关下载

    /// https://firebase.google.cn/download/unity

 

  1. 代码相关

 

注意在check成功后再添加回调

 

Assets/Third/Firebase/FirebaseManager.cs(28,16): error CS0246: The type or namespace name \'Firebase\' could not be found (are you missing a using directive or an assembly reference?)

编译报错有两种情况

1是宏相关的文件找不到,注意若是firebase相关文件没有在工程里面,其他相关代码使用#if FIREBASE 来编写的话,要确保先拷贝firebase相关文件,再AssetsDatabase.refresh,再修改宏,注意顺序

2是若无关的其余类找不到,可能是Jenkins切换客户端分支时的bug,连续打两遍同一客户端分支即可

 

  1. 导入firebase插件包注意几个选项

Auto-resolution在编辑器下可以打开 但在打包时关闭

避免在打包时修改mainTemplate.gradle带来的不确定性

也可以在菜单中修改设置(ExternalDependencyManager在工程内时才能看到该菜单)

相关设置最后影响的文件如下

 

导入后的文件,建议生成GeneratedLocalRepo

以上文件目录可以修改,注意修改目录后gradle中也要修改

 

建议不要引入androidx相关文件

 

  1. XML相关

新增以下service(来自firebase demo中的自动生成的xml)

 

  1. gradle相关

首先切换switch target platform到安卓 导入firebase配置文件(android和ios两份)

以上自动生成 注意改换

 

  1. 依赖相关错误

 

https://developer.android.com/studio/build/dependencies#view-dependency-tree

https://developer.android.com/studio/build/dependencies#duplicate_classes

注意firebase会自动修改gradle中的依赖信息

注意不要与libs下的jar重复

 

  1. 生成AAR相关

打开as工程,添加firebase相关代码

注意需要手动引入需要的类(快捷操作双击MessageForwardingService后按住Alt+Enter)

import com.google.firebase.messaging.MessageForwardingService;

另外可能还需要导入(为保证生成AAR成功)

最后生成AAR

生成后的AAR(改名然后替换)

 

  1. 打包相关

需要注意Plugins/Android目录在打包时会被拷贝覆盖

因此需要将其中的内容拷到SDK相应目录下

若缺少该文件(尤其是其中的google-services.xml)会报以下错误导致firebase初始化失败

 

  1. 测试相关

测试机需要安装谷歌服务

测试第一步要拿到token

只需要手机FQ且配置信息正确(如图)

每次启动token不变,卸载重新安装后token发生改变

token形如cH1uQuLVTwWzXN3K85ovu6:APA91bHZJpjT8Li4VozSVuknH0TDa6BRd_ec9HHLf6FjJU48QuEnA8tVO9mZjyKhIViAitqv_7ZWrwrgC9L9iTlzSrpFeaSFiKXGoqDX-F7rYhowMsSuUSdeqiwbkCTJNRXrlDad7mrd

 

第二步接收推送并拉起游戏进程

同样需要手机FQ,同时token已上报服务端

当游戏后台运行时,可以收到推送消息,点击后唤起

当游戏未运行时,若需要接收推送消息,需要设置程序自启动,与机型也相关(手动设置可行,自动设置权限还没试过)

有时因为VPN的原因 推送消息可能会延迟收到,建议用一个firebase的参照demo来对照测试排除VPN造成的推送消息延迟(可能延迟很久)