Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
ejoy-analytics
Advanced tools
yarn add react-native-analytics-segment-io
react-native link react-native-analytics-segment-io
Add Analytics
framework to your Podfile.
pod 'Analytics'
To add an integration with a Device-based Connection Mode, you must manually add that integration’s dependencies to the Podfile.
pod 'Segment-Mixpanel'
pod 'Segment-GoogleAnalytics'
The wrapper will automatically register the added components in the configuration when the SDK is initialized.
Supported integrations:
Component | Podfile |
---|---|
Taplytics | pod 'Segment-Taplytics' |
Adjust | pod 'Segment-Adjust' |
Google Analytics | pod 'Segment-GoogleAnalytics' |
ComScore | pod 'Segment-ComScore' |
Amplitude | pod 'Segment-Amplitude' |
Facebook App Events | pod 'Segment-Facebook-App-Events' |
Mixpanel | pod 'Segment-Mixpanel' |
Localytics | pod 'Segment-Localytics' |
Flurry | pod 'Segment-Flurry' |
Quantcast | pod 'Segment-Quantcast' |
Crittercism | pod 'Segment-Crittercism' |
Firebase | pod 'Segment-Firebase' |
AppsFlyer | pod 'segment-appsflyer-ios' |
Branch | pod 'Segment-Branch' |
Braze (formerly Appboy) | pod 'Segment-Appboy' |
Intercom | pod 'Segment-Intercom' |
To be absolutely certain that your integrations will be correctly handled by the react-native-analytics-segment-io
module, you have to make sure that the Pods
target is built before the RNAnalyticsSegmentIO
one.
<name_of_your_app>.xcworkspace
located in the ios/
folder.:warning: we want to open the .xcworkspace
file and NOT the .xcodeproj
.
Edit Scheme…
pane of your own app target main scheme.Build
in the phase list on the left.Parallelize build
option is unchecked.Pods-<name_of_your_app>
target is not present in the list click the +
button and select it in the list under the Pods
project.RNAnalyticsSegmentIO
target is not present in the list click the +
button and select it in the list under the RNAnalyticsSegmentIO
project.Targets
list by dragging targets around to make sure that:Pods-<name_of_your_app>
and RNAnalyticsSegmentIO
are placed after the React
target and before the <name_of_your_app>
target.RNAnalyticsSegmentIO
target is placed after the Pods-<name_of_your_app>
one.Note: This setup is particularly relevant if your Podfile contains use_frameworks!
Run react-native link react-native-analytics-segment-io
to add the necessary lines to the build files. Alternatively, you can do this manually with the 2 following steps:
settings.gradle
:include ':react-native-analytics-segment-io'
project(':react-native-analytics-segment-io').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-analytics-segment-io/android')
build.gradle
file:compile project(':react-native-analytics-segment-io')
When the build files are set up to include the library, add a dependency to the Segment SDK in the app's build.gradle
file:
compile 'com.segment.analytics.android:analytics:x.x.x' // We have tested with version 4.2.6
Then sync Gradle, and add the analytics package to your Application
class:
import com.leo_pharma.analytics.AnalyticsPackage;
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new AnalyticsPackage()
);
}
Your project is now ready to start calling functions on react-native-analytics-segment-io.
The Segment SDK is added to the library as a provided
dependency, meaning that it is not included in the final build. That is why it is necessary to include the Segment SDK in the app's build.gradle
file. This makes it easy to update the Segment SDK from the app, and it makes the app's build configuration the source of truth when it comes to Segment.
It is required to use React Native v0.46.4 or higher. This is because we use a feature in Java on the passed maps (.toHashMap()
) that is introduced in that version.
To add an integration with a Device-based destination, you have to manually add that integration as a dependency to the app's build.gradle
file.
For example:
compile 'com.segment.analytics.android.integrations:firebase:1.1.0'
compile 'com.segment.analytics.android.integrations:mixpanel:1.1.0'
The wrapper will automatically register the added components in the configuration when the SDK is present.
Supported integrations:
Component | Dependency |
---|---|
Braze (formerly Appboy) | com.appboy:appboy-segment-integration:2.1.1 |
AppsFlyer | com.appsflyer:segment-android-integration:1.9 |
Adjust | com.segment.analytics.android.integrations:adjust:0.3.1 |
Amplitude | com.segment.analytics.android.integrations:amplitude:1.2.1 |
Bugsnag | com.segment.analytics.android.integrations:bugsnag:1.0.0 |
ComScore | com.segment.analytics.android.integrations:comscore:3.0.0 |
Countly | com.segment.analytics.android.integrations:countly:1.0.0 |
Crittercism | com.segment.analytics.android.integrations:crittercism:1.0.0 |
Firebase | com.segment.analytics.android.integrations:firebase:1.1.0 |
Flurry | com.segment.analytics.android.integrations:flurry:3.0.0 |
Google Analytics | com.segment.analytics.android.integrations:google-analytics:2.0.0 |
Intercom | com.segment.analytics.android.integrations:intercom:1.1.0-beta |
Localytics | com.segment.analytics.android.integrations:Localytics |
Mixpanel | com.segment.analytics.android.integrations:mixpanel:1.1.0 |
NielsenDCR | com.segment.analytics.android.integrations:nielsendcr:1.0.0-Beta |
Quantcast | com.segment.analytics.android.integrations:quantcast:1.0.1 |
Tapstream | com.segment.analytics.android.integrations:tapstream:1.0.0 |
Branch | io.branch.segment.analytics.android.integrations:branch:1.0.2-RELEASE |
Some integrations require you to add an extra Maven repository to your app's build.gradle
file.
These are all of those dependencies with their repository:
repositories {
...
maven { url "http://appboy.github.io/appboy-android-sdk/sdk" } // Required for Braze (formerly Appboy)
maven { url 'https://comscore.bintray.com/Analytics' } // Required for Comscore
maven { url 'http://dl.bintray.com/countly/maven' } // Required for Countly
maven { url 'https://maven.google.com' } // Required for Firebase
maven { url 'http://maven.localytics.com/public' } // Required for Localytics
}
import Analytics, { AnalyticsConstants } from 'react-native-analytics-segment-io'
Initial framework setup
const options = { option: value, option: value }
Analytics.setup('segment_write_key', options)
Where options
is an object that contains the options mentioned in the table below.
There are constants available for all the options, using [AnalyticsConstants.optionName]
, e.g. [AnalyticsConstants.trackApplicationLifecycleEvents]: true
.
If an option is not set in the options
object, its default value is used (see table below).
setup()
returns a promise to indicate whether the initialization was successful or not.
Supported options:
Options | Type | Default | iOS | Android | Description |
---|---|---|---|---|---|
enableAdvertisingTracking | Bool | true | ✓ | ✗ | Whether the analytics client should track advertising info. |
flushAt | Integer | 20 | ✓ | ✓ | The number of queued events that the analytics client should flush at. Setting this to 1 will not queue any events and will use more battery. |
recordScreenViews | Bool | false | ✓ | ✓ | Whether the analytics client should automatically make a screen call when a view controller is added to a view hierarchy. |
shouldUseBluetooth | Bool | false | ✓ | ✗ | Whether the analytics client should record bluetooth information. |
shouldUseLocationServices | Bool | false | ✓ | ✗ | Whether the analytics client should use location services. |
trackApplicationLifecycleEvents | Bool | false | ✓ | ✓ | Whether the analytics client should automatically make a track call for application lifecycle events, such as "Application Installed", "Application Updated" and "Application Opened". |
trackAttributionData | Bool | false | ✓ | ✓ | Whether the analytics client should automatically track attribution data from enabled providers using the mobile service. |
trackDeepLinks | Bool | false | ✓ | ✗ | Whether the analytics client should automatically track deep links. |
debug | Bool | false | ✓ | ✓ | Whether the analytics client should log everything to the console (only enable this during development). |
Tie a user to their actions and record traits about them
Analytics.identify('user_id', { email: 'user_email' })
Futher explanation can be found on Segments own page.
Record the actions your users performs
Analytics.track('Weapon Bought', { weapon: 'sword' })
Futher explanation can be found on Segments own page.
Record whenever a user sees a screen
Analytics.screen('Photo Screen', { feed: 'private' })
Futher explanation can be found on Segments own page.
Associate an identified user user with a group
Analytics.group('Group123', {name: 'Bob Group', description: 'Accounting Awesome'})
Futher explanation can be found on Segments own page.
Associate one user identity with another
Analytics.alias('new_id')
Futher explanation can be found on Segments own page.
Clears the SDK’s internal stores for the current user and group
Analytics.reset()
Futher explanation can be found on Segments own page.
Manually flush the queue
Analytics.flush()
Futher explanation can be found on Segments own page.
You may need to offer the ability for users to opt-out of analytics
Analytics.enable()
Futher explanation can be found on Segments own page.
You may need to offer the ability for users to opt-out of analytics
Analytics.disable()
Futher explanation can be found on Segments own page.
To run the iOS example:
git clone git@github.com:leoilab/react-native-analytics-segment-io.git
cd react-native-analytics-segment-io
cd example
yarn install
cd ios
pod install
cd ..
react-native run-ios
To run the Android example:
git clone git@github.com:leoilab/react-native-analytics-segment-io.git
cd react-native-analytics-segment-io
cd example
yarn install
react-native run-android
MIT
FAQs
Event traking with Segment IO
We found that ejoy-analytics demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.