xxsnakerxx / react-native-flurry-analytics

React Native wrapper for Flurry Analytics
https://developer.yahoo.com/analytics/
MIT License
29 stars 26 forks source link

React Native Flurry Analytics

React Native wrapper for flurry analytics.

logo

Table of contents

Installation

Common

  1. Install package via npm:
npm install react-native-flurry-analytics --save
  1. Link native part
react-native link react-native-flurry-analytics
  1. Inside your code include JS part by adding
import FlurryAnalytics from 'react-native-flurry-analytics';

iOS

sudo gem install cocoapods
cd ios
pod init
open Podfile

Add this line

pod 'Flurry-iOS-SDK/FlurrySDK'

Then run

pod install

Android

Add these lines in AndroidManifest.xml

<!-- Required permissions - Internet access -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- Recommended permission - External memory pre-caching -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Configure Proguard (optional)

Add following to android/app/proguard-rules.pro

# Required to preserve the Flurry SDK
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
   public (android.content.Context, android.util.AttributeSet, int);
 }

 # Google Play Services library
  -keep class * extends java.util.ListResourceBundle {
   protected Object[ ][ ] getContents();
}

 -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
  public static final *** NULL;
 }

 -keepnames @com.google.android.gms.common.annotation.KeepName class *
 -keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
  }

 -keepnames class * implements android.os.Parcelable {
  public static final ** CREATOR;
 }

Usage

startSession(string apiKey)

FlurryAnalytics.startSession('YOUR_API_KEY');

setAppVersion(string version)

!!! method must be called prior to invoking startSession

FlurryAnalytics.setAppVersion('1.0.0');

setDebugLogEnabled(bool enabled)

!!! method must be called prior to invoking startSession

FlurryAnalytics.setDebugLogEnabled(false)

setSessionContinueSeconds(int seconds)

!!! method must be called prior to invoking startSession

FlurryAnalytics.setSessionContinueSeconds(10);

setCrashReportingEnabled(bool enabled)

!!! method must be called prior to invoking startSession

FlurryAnalytics.setCrashReportingEnabled(true);

logEvent(string eventName, object params, bool timed)

FlurryAnalytics.logEvent('eventName');
FlurryAnalytics.logEvent('eventName', true);
FlurryAnalytics.logEvent('eventName', {param: 'true'});
FlurryAnalytics.logEvent('eventName', {param: 'true'}, true);

endTimedEvent(string eventName, object params)

FlurryAnalytics.endTimedEvent('eventName');
FlurryAnalytics.endTimedEvent('eventName', {param: 'true'});

logPageView()

FlurryAnalytics.logPageView();

setUserId(string userId)

FlurryAnalytics.setUserId('userId');

setUserAge(int age)

FlurryAnalytics.setUserAge(28);

setUserGender(string gender)

FlurryAnalytics.setUserGender('m');
// or
FlurryAnalytics.setUserGender('f');

For more information read official docs iOS Android

Contributing

Just submit a pull request!

Copyright and license

Code and documentation copyright 2016 Dmitriy Kolesnikov. Code released under the MIT license.