I made a Firebase Analytics plugin for iOS with Godot.
Published: 2022-02-10 10:17:12

## Overview
Recently I've been making games with Godot. Mainly for iOS and Android apps.
So, I want to add Firebase Analytics to Android and iOS apps respectively, Android is easy, don't need to change program, just Add repository url to build.gradle and Add google-services.json to the project(It's the same process as normal app development).
However, the iOS version is a bit more complicated because I need to write the program. I looked around for a good plugin, and found that there is no standard plugin that uses this, so I decided to make my own.
Here it is
https://github.com/funseek/godot-ios-firebase-analytics

## How to create a plugin
This is described in the official page, so I used this as a reference.
https://docs.godotengine.org/en/stable/tutorials/platform/ios/ios_plugin.html

## Usage
### git clone
Clone the repository, including the repository for godot itself in the submodule.

````
git clone --recurse-submodules git@github.com:funseek/godot-ios-firebase-analytics.git
```

### Create a header file for the godot source

``` sh
./scripts/generate_headers.sh
```
The header file itself is created quickly, so you don't have to wait for it to finish.

### pod install
You can get the Firebase-related files from [CocoaPods](https://cocoapods.org/).

````
pod install
```

### Create the .a library file.
``` .
./scripts/release_static_library.sh 3.4
```
If you want to specify a different version, you can use the 3.4 version in the SConstruct file. If you want to specify a different version, replace 3.4 in the SConstruct file.

### Copy to project
Copy the created .a file to your godot project.

````
cp bin/release/firebase-analytics/firebase-analytics.*.a $GODOT_HOME/ios/plugins/firebase-analytics/bin/
cp firebase-analytics.gdip $GODOT_HOME/ios/plugins/
```

### Export for iOS
Don't forget to check the Firebase-Analytics box in Plugins.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnqu61b1mthnmxiodr2q.png)


### Xcode configuration
Use CocoaPods for Xcode, and add the following to your podfile.

````
pod 'Firebase/Analytics'.
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
```
The steps to use CocoaPods are as follows.
1. run pod init (if you are not already using it)
2. add the above to your Podfile
3. run pod install
4. open the project .xcworkspace in Xcode
5. Copy GoogleService-Info.plist to the project (you can download it from the Firebase administration page).

If it works, you are done!

Plug-ins that depend on external libraries are often loaded by copying each external library, but if you copy and use the dependent libraries for each plug-in, you may get errors when using different versions of the same library (I actually did). So, I think it's better to use CocoaPods to manage all the dependent libraries (personal opinion). Some examples of dependent libraries are Firebase, AdMob, etc.

## Others
In addition to the above, I also created the following plugins

A plugin to display the review request dialog
https://github.com/funseek/godot-ios-request-review

Plugin to show ATT dialog
https://github.com/funseek/godot-ios-att

After I wrote this, I realized that it would be easier to use the plug-ins if they were loaded by CocoaPods. I thought. I'll try it next time.