Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/capacitor-community/firebase-analytics
Enable Firebase Analytics for Capacitor Apps
https://github.com/capacitor-community/firebase-analytics
analytics capacitor firebase plugin
Last synced: 5 days ago
JSON representation
Enable Firebase Analytics for Capacitor Apps
- Host: GitHub
- URL: https://github.com/capacitor-community/firebase-analytics
- Owner: capacitor-community
- License: mit
- Created: 2019-07-05T05:33:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-16T22:28:05.000Z (6 months ago)
- Last Synced: 2024-10-23T02:35:29.662Z (about 2 months ago)
- Topics: analytics, capacitor, firebase, plugin
- Language: Java
- Size: 864 KB
- Stars: 162
- Watchers: 17
- Forks: 64
- Open Issues: 45
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-capacitorjs - @capacitor-community/firebase-analytics - Enable Firebase Analytics for Capacitor Apps. (Plugins / Community Plugins)
- awesome-capacitor - Analytics - A native plugin for Firebase analytics. (Community plugins)
README
Firebase Analytics
@capacitor-community/firebase-analytics
Capacitor community plugin for native Firebase Analytics.## ❗❗ Breaking changes when updating to ✏️v6.0.0✏️❗❗
✏️✏️ This plugin now supports Capacitor 6 only. For Capacitor 5 and 4 please use version listed below ✏️✏️
## Plugin versions
| Capacitor version | Plugin version |
| ----------------- | -------------- |
| 6.x | 6.x |
| 5.x | 5.0.1 |
| 4.x | 1.0.1 |## Maintainers
| Maintainer | GitHub | Social |
| ---------- | --------------------------------------- | ----------------------------------------- |
| mesur.io | [mesur-io](https://github.com/mesur-io) | [@mesur_io](https://twitter.com/mesur_io) |## Installation
Using npm:
```bash
npm install @capacitor-community/firebase-analytics@latest
```Using yarn:
```bash
yarn add @capacitor-community/firebase-analytics@latest
```Sync native files:
```bash
# Update the native plugins and dependencies referenced in package.json
npx cap sync
```> **Note:** You may also need to run **File > Sync Project with Gradle Files** in order for Android Studio to recognize the import.
## Configuration
No configuration is required for this plugin.
## Examples
[Click here](https://github.com/jcesarmobile/capacitor-firebase-analytics-example) for an example on how to implement this plugin.
You can also clone the repository:
```bash
git clone https://github.com/jcesarmobile/capacitor-firebase-analytics-example
```## Supported methods
| Name | Android | iOS | Web |
| :------------------------ | :------ | :-- | :-- |
| setUserId | ✅ | ✅ | ✅ |
| setUserProperty | ✅ | ✅ | ✅ |
| getAppInstanceId | ✅ | ✅ | ❌ |
| setScreenName | ✅ | ✅ | ❌ |
| reset | ✅ | ✅ | ❌ |
| logEvent | ✅ | ✅ | ✅ |
| setCollectionEnabled | ✅ | ✅ | ✅ |
| setSessionTimeoutDuration | ✅ | ✅ | ✅ |
| enable | ✅ | ✅ | ✅ |
| disable | ✅ | ✅ | ✅ |## Usage
```typescript
import { FirebaseAnalytics } from "@capacitor-community/firebase-analytics";/**
* Platform: Web
* Configure and initialize the firebase app.
* @param options - firebase web app configuration options
* */
FirebaseAnalytics.initializeFirebase({
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
appId: "...",
measurementId: "...",
});/**
* Platform: Web/Android/iOS
* Sets the user ID property.
* @param userId - unique identifier of a user
* @returns void
* https://firebase.google.com/docs/analytics/userid
*/
FirebaseAnalytics.setUserId({
userId: "john_doe_123",
});/**
* Platform: Web/Android/iOS
* Sets a user property to a given value.
* @param options - property name and value to set
* @returns void
* https://firebase.google.com/docs/analytics/user-properties
*/
FirebaseAnalytics.setUserProperty({
name: "favorite_food",
value: "pizza",
});/**
* Platform: Android/iOS
* Retrieves the app instance id from the service.
* @param none
* @returns instanceId - individual instance id value
* https://firebase.google.com/docs/analytics/user-properties
*/
FirebaseAnalytics.getAppInstanceId();/**
* Platform: Android/iOS
* Sets the current screen name, which specifies the current visual context in your app.
* @param screenName - name of the current screen to track
* nameOverride - name of the screen class to override
* @returns instanceId - individual instance id value
* https://firebase.google.com/docs/analytics/screenviews
*/
FirebaseAnalytics.setScreenName({
screenName: "login",
nameOverride: "LoginScreen",
});/**
* Platform: Web/Android/iOS
* Clears all analytics data for this app from the device and resets the app instance id.
* @param none
* @returns void
*/
FirebaseAnalytics.reset();/**
* Platform: Web/Android/iOS
* Logs an app event.
* @param name - name of the event to log
* params - key/value pairs of properties (25 maximum per event)
* @returns void
*/
FirebaseAnalytics.logEvent({
name: "select_content",
params: {
content_type: "image",
content_id: "P12453",
items: [{ name: "Kittens" }],
},
});/**
* Platform: Web/Android/iOS
* Sets whether analytics collection is enabled for this app on this device.
* @param name - enabled - boolean true/false
* @returns void
*/
FirebaseAnalytics.setCollectionEnabled({
enabled: false,
});/**
* Platform: Web/Android/iOS
* Deprecated - use setCollectionEnabled() instead
* Enable analytics collection for this app on this device.
* @param none
* @returns void
*/
FirebaseAnalytics.enable();/**
* Platform: Web/Android/iOS
* Deprecated - use setCollectionEnabled() instead
* Disable analytics collection for this app on this device.
* @param none
* @returns void
*/
FirebaseAnalytics.disable();/**
* Platform: Web/Android/iOS
* Sets the duration of inactivity that terminates the current session.
* @param duration - duration in seconds (default - 18000)
* @returns void
*/
FirebaseAnalytics.setSessionTimeoutDuration({
duration: 10000,
});
```## Setup
Navigate to the project settings page for your app on Firebase.
### iOS
Download the `GoogleService-Info.plist` file. In Xcode right-click on the yellow folder named "App" and select the `Add files to "App"`.
> Tip: if you drag and drop your file to this location, Xcode may not be able to find it.
### Android
Download the `google-services.json` file and copy it to `android/app/` directory of your capacitor project.
#### Variables
This plugin will use the following project variables (defined in your app’s `variables.gradle` file):
- `$firebaseAnalyticsVersion` version of `com.google.firebase:firebase-analytics` (default: `21.2.2`)
## iOS setup
- `ionic start my-cap-app --capacitor`
- `cd my-cap-app`
- `npm install --save @capacitor-community/firebase-analytics`
- `mkdir www && touch www/index.html`
- `sudo gem install cocoapods` (only once)
- `npx cap add ios`
- `npx cap sync ios` (every time you run `npm install`)
- `npx cap open ios`
- sign your app at xcode (general tab)
- add `GoogleService-Info.plist` to the app folder in xcode### Enable debug view
1. In Xcode, select Product > Scheme > Edit scheme
2. Select Run from the left menu
3. Select the Arguments tab
4. In the Arguments Passed On Launch section, add `-FIRAnalyticsDebugEnabled`> Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.
## Android setup
- `ionic start my-cap-app --capacitor`
- `cd my-cap-app`
- `npm install --save @capacitor-community/firebase-analytics`
- `mkdir www && touch www/index.html`
- `npx cap add android`
- `npx cap sync android` (every time you run `npm install`)
- `npx cap open android`
- add `google-services.json` to your `android/app` folderNow you should be set to go. Try to run your client using `ionic cap run android --livereload --address=0.0.0.0`.
> Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.
## Updating
For existing projects you can upgrade all capacitor related packages (including this plugin) with this single command
`npx npm-upgrade '*capacitor*' && npm install`
## Migration
If you were previously using the `capacitor-analytics` package from npm
1. Update NPM package:
```bash
npm uninstall --save capacitor-analytics
npm install --save-prod @capacitor-community/firebase-analytics@latest
```1. Update the plugin initialization in Android's _MainActivity.java_
Remove the old plugin import:
```diff
-import io.stewan.capacitor.analytics.AnalyticsPlugin;
```Update the `init()` call to remove the old plugin import. You may be able to remove the entire `init()` call if there is nothing else in there.
```diff
// Initializes the Bridge
this.init(savedInstanceState, new ArrayList>() {{
// Additional plugins you've installed go here
// Ex: add(TotallyAwesomePlugin.class);
- add(AnalyticsPlugin.class);
}});
```1. Public API changes:
- `instance()` has been renamed to `getAppInstanceId()`
- `setScreen()` has been renamed to `setScreenName()`
- `setUserID()` has been renamed to `setUserId()`
- `setUserProp()` has been renamed to `setUserProperty()`
- `enable()` has been deprecated in favor of `setCollectionEnabled()`
- `disable()` has been deprecated in favor of `setCollectionEnabled()`## Further info
- [Android](https://firebase.google.com/docs/android/setup)
- [iOS](https://firebase.google.com/docs/analytics/get-started?platform=ios)
- [Web](https://firebase.google.com/docs/analytics/get-started?platform=web)## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Chris Abernethy
🚧
Priyank Patel
💻
stewwan
💻
Karmjit Singh
⚠️ 🐛
Michel Roca
🐛
Matthias
👀
Tobi
💻
Nicholas Norris
🐛
gabrielscarvalho
🐛 💻
ptmkenny
🐛 💻 📖
vkyeswa
🐛
losciur
⚠️ 🐛
wyattades
💻
losciur
💻
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!