@snowplow/react-native-tracker 0.2.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +24 -0
- package/LICENSE +2 -2
- package/README.md +130 -230
- package/RNSnowplowTracker.podspec +24 -0
- package/android/build.gradle +8 -9
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerModule.java +643 -121
- package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerPackage.java +0 -1
- package/android/src/main/java/com/snowplowanalytics/react/util/ConfigUtil.java +345 -0
- package/android/src/main/java/com/snowplowanalytics/react/util/EventUtil.java +291 -68
- package/android/src/main/java/com/snowplowanalytics/react/util/TrackerVersion.java +7 -0
- package/dist/index.d.ts +601 -116
- package/dist/index.js +1479 -107
- package/dist/index.js.map +1 -0
- package/ios/RNSnowplowTracker.h +19 -1
- package/ios/RNSnowplowTracker.m +831 -159
- package/ios/Util/RNConfigUtils.h +44 -0
- package/ios/Util/RNConfigUtils.m +207 -0
- package/ios/Util/RNTrackerVersion.h +27 -0
- package/ios/Util/RNTrackerVersion.m +27 -0
- package/ios/Util/RNUtilities.h +32 -0
- package/ios/Util/RNUtilities.m +68 -0
- package/package.json +44 -14
- package/ios/Podfile +0 -22
- package/ios/Podfile.lock +0 -37
- package/ios/RCTConvert+Snowplow.h +0 -17
- package/ios/RCTConvert+Snowplow.m +0 -57
- package/ios/RNSnowplowTracker.podspec +0 -22
- package/src/api.ts +0 -168
- package/src/index.ts +0 -71
- package/src/types.ts +0 -325
- package/src/utils.ts +0 -47
package/CHANGELOG
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
Version 1.1.0 (2022-02-07)
|
|
2
|
+
--------------------------
|
|
3
|
+
Update mobile tracker dependencies to v3 (#141)
|
|
4
|
+
Add deep link and message notification events (#142)
|
|
5
|
+
Update demo app to show accessing tracker instance from platform native code (#136)
|
|
6
|
+
Fix compilation error for iOS build on ARM macs (#140)
|
|
7
|
+
Fix check for byteLimitGet when reading emitter configuration (#138)
|
|
8
|
+
Fix check for Android version in GitHub Actions (#134)
|
|
9
|
+
Update year in all copyright notices (#148)
|
|
10
|
+
Update dependencies (#150)
|
|
11
|
+
|
|
12
|
+
Version 1.0.0 (2021-08-09)
|
|
13
|
+
--------------------------
|
|
14
|
+
Fix action-gh-release to specific commit (#133)
|
|
15
|
+
Update devDependencies (#132)
|
|
16
|
+
Publish sourcemaps (#131)
|
|
17
|
+
Lint DemoApp separately (#130)
|
|
18
|
+
Get Session Context Data (#53)
|
|
19
|
+
Update version in podspec (#110)
|
|
20
|
+
Set amended v_tracker indicating react-native (#18)
|
|
21
|
+
Add global contexts (#104)
|
|
22
|
+
Upgrade iOS Tracker and Android Tracker to v2 (#113)
|
|
23
|
+
Add test suite (#60)
|
|
24
|
+
|
|
1
25
|
Version 0.2.0 (2021-06-21)
|
|
2
26
|
--------------------------
|
|
3
27
|
Bump dependencies in DemoApp (#114)
|
package/LICENSE
CHANGED
|
@@ -187,8 +187,8 @@
|
|
|
187
187
|
same "printed page" as the copyright notice for easier
|
|
188
188
|
identification within third-party archives.
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
Copyright (c) 2020-2022 Snowplow Analytics Ltd, 2019 DataCamp.
|
|
191
|
+
All rights reserved.
|
|
192
192
|
|
|
193
193
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
194
194
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
# @snowplow/react-native-tracker
|
|
3
3
|
|
|
4
|
-
[![
|
|
4
|
+
[![actively-maintained]][tracker-classification]
|
|
5
5
|
[![Build Status][gh-actions-image]][gh-actions]
|
|
6
6
|
[![License][license-image]][license]
|
|
7
7
|
|
|
@@ -10,299 +10,179 @@
|
|
|
10
10
|
[![downloads][downloads-dm-image]][downloads-dm]
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Snowplow is a scalable open-source platform for rich, high quality, low-latency data collection. It is designed to collect high quality, complete behavioral data for enterprise business.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
**To find out more, please check out the [Snowplow website][website] and our [documentation][docs].**
|
|
16
16
|
|
|
17
|
-
From the root of your [React Native][react-native] project:
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
## Snowplow React-Native Tracker Overview
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
The Snowplow React Native Tracker allows you to add analytics to your React Native apps when using a [Snowplow][snowplow] pipeline.
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
With this library you can collect granular event-level data as your users interact with your React Native applications. It is build on top of Snowplow's [Mobile Native][native-trackers] [iOS][objc-tracker] and [Android][android-tracker] Trackers, in order to support the full range of out-of-the-box Snowplow events and tracking capabilities.
|
|
24
23
|
|
|
25
|
-
Then you can start tracking events using the relevant tracking methods.
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
import { createTracker } from '@snowplow/react-native-tracker';
|
|
25
|
+
## Quick start
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
// required
|
|
32
|
-
endpoint: 'test-url',
|
|
33
|
-
appId: 'my-app-id',
|
|
34
|
-
|
|
35
|
-
// optional - defaults shown
|
|
36
|
-
method: 'post',
|
|
37
|
-
protocol: 'https',
|
|
38
|
-
base64Encoded: true,
|
|
39
|
-
platformContext: true,
|
|
40
|
-
applicationContext: false,
|
|
41
|
-
lifecycleEvents: false,
|
|
42
|
-
screenContext: true,
|
|
43
|
-
sessionContext: true,
|
|
44
|
-
foregroundTimeout: 600,
|
|
45
|
-
backgroundTimeout: 300,
|
|
46
|
-
checkInterval: 15,
|
|
47
|
-
installTracking: false,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
tracker.trackSelfDescribingEvent(
|
|
51
|
-
{
|
|
52
|
-
schema: 'iglu:com.acme/hello_world_event/jsonschema/1-0-0',
|
|
53
|
-
data: {
|
|
54
|
-
message: 'hello world'
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
);
|
|
27
|
+
From the root of your [React Native][react-native] project:
|
|
58
28
|
|
|
59
29
|
```
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
`cd ios && pod install && cd ..`
|
|
64
|
-
|
|
65
|
-
Run the app with: `react-native run-ios` from the root of the project.
|
|
66
|
-
|
|
67
|
-
### Running on Android
|
|
68
|
-
|
|
69
|
-
`react-native run-android` from the root of the project.
|
|
70
|
-
|
|
71
|
-
## Available tracker methods
|
|
72
|
-
|
|
73
|
-
All methods take a JSON of named arguments.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
### Set the subject data:
|
|
77
|
-
|
|
78
|
-
Setting custom subject data is optional, can be called any time, and can be called again to update the subject. Once set, the specified parameters are set for all subsequent events. (For example, a userid may be set after login, and once set all subsequent events will contain the userid).
|
|
79
|
-
|
|
80
|
-
```JavaScript
|
|
81
|
-
setSubjectData({ // All parameters optional
|
|
82
|
-
userId: 'my-userId', // user id, string
|
|
83
|
-
screenWidth: 123, // screen width, integer
|
|
84
|
-
screenHeight: 456, // screen height, integer
|
|
85
|
-
colorDepth: 20, // colour depth, integer
|
|
86
|
-
timezone: 'Europe/London', // timezone, string enum
|
|
87
|
-
language: 'en', // language, string enum
|
|
88
|
-
ipAddress: '123.45.67.89', // IP address, string
|
|
89
|
-
useragent: '[some-user-agent-string]', // user agent, string
|
|
90
|
-
networkUserId: '5d79770b-015b-4af8-8c91-b2ed6faf4b1e', // network user id, UUID4 string
|
|
91
|
-
domainUserId: '5d79770b-015b-4af8-8c91-b2ed6faf4b1e',// domain user id, UUID4 string
|
|
92
|
-
viewportWidth: 123, // viewport width, integer
|
|
93
|
-
viewportHeight: 456 // viewport height, integer
|
|
94
|
-
}
|
|
95
|
-
);
|
|
30
|
+
npm install --save @snowplow/react-native-tracker
|
|
31
|
+
npx pod-install
|
|
96
32
|
```
|
|
97
33
|
|
|
34
|
+
Then, instrument the tracker in your app and start tracking events. For example:
|
|
98
35
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```JavaScript
|
|
102
|
-
trackSelfDescribingEvent({ // Self-describing JSON for the custom event
|
|
103
|
-
schema: 'iglu:com.acme/event/jsonschema/1-0-0',
|
|
104
|
-
data: {message: 'hello world'}
|
|
105
|
-
});
|
|
106
|
-
```
|
|
36
|
+
```javascript
|
|
37
|
+
import { createTracker } from '@snowplow/react-native-tracker';
|
|
107
38
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
trackStructuredEvent({
|
|
112
|
-
// required
|
|
113
|
-
category: 'my-category',
|
|
114
|
-
action: 'my-action',
|
|
115
|
-
// optional
|
|
116
|
-
label: 'my-label',
|
|
117
|
-
property: 'my-property',
|
|
118
|
-
value: 50.00
|
|
119
|
-
}
|
|
39
|
+
const tracker = createTracker(
|
|
40
|
+
'my-namespace',
|
|
41
|
+
{ endpoint: 'https://my-collector.endpoint' }
|
|
120
42
|
);
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Track a Screen View:
|
|
124
|
-
|
|
125
|
-
Note - for the track Screen View method, if previous screen values aren't set, they should be automatically set by the tracker.
|
|
126
43
|
|
|
127
|
-
|
|
128
|
-
trackScreenViewEvent({
|
|
129
|
-
screenName: 'my-screen-name', //required
|
|
130
|
-
// optional:
|
|
131
|
-
screenType: 'my-screen-type',
|
|
132
|
-
transitionType: 'my-transition'
|
|
133
|
-
}
|
|
134
|
-
);
|
|
44
|
+
tracker.trackScreenViewEvent({ name: 'myScreenName' });
|
|
135
45
|
```
|
|
136
46
|
|
|
137
|
-
|
|
47
|
+
The Snowplow React Native Tracker also provides first-class support for TypeScript, as it is fully typed.
|
|
138
48
|
|
|
139
|
-
|
|
140
|
-
trackPageViewEvent({
|
|
141
|
-
pageUrl: 'https://www.my-page-url.com', // required
|
|
142
|
-
//optional:
|
|
143
|
-
pageTitle: 'my page title',
|
|
144
|
-
pageReferrer: 'http://www.my-refr.com'
|
|
145
|
-
}
|
|
146
|
-
);
|
|
147
|
-
```
|
|
49
|
+
See also our [DemoApp][demoapp] for an example implementation.
|
|
148
50
|
|
|
149
|
-
### Attaching custom contexts
|
|
150
|
-
|
|
151
|
-
All track methods take an optional second argument - an array of 0 or more self-describing JSONs for custom contexts that will be attached to the event:
|
|
152
|
-
|
|
153
|
-
```JavaScript
|
|
154
|
-
|
|
155
|
-
trackSelfDescribingEvent(
|
|
156
|
-
// Self-describing JSON for the custom event
|
|
157
|
-
{
|
|
158
|
-
schema: 'iglu:com.acme/event/jsonschema/1-0-0',
|
|
159
|
-
data: {message: 'hello world'}
|
|
160
|
-
},
|
|
161
|
-
// array of contexts
|
|
162
|
-
[
|
|
163
|
-
{
|
|
164
|
-
schema: 'iglu:com.acme/entity/jsonschema/1-0-0',
|
|
165
|
-
data: {myEntityField: 'hello world'}
|
|
166
|
-
}
|
|
167
|
-
]
|
|
168
|
-
);
|
|
169
51
|
|
|
170
|
-
|
|
171
|
-
// the structured event's properties
|
|
172
|
-
{
|
|
173
|
-
// required
|
|
174
|
-
category: 'my-category',
|
|
175
|
-
action: 'my-action',
|
|
176
|
-
// optional
|
|
177
|
-
label: 'my-label',
|
|
178
|
-
property: 'my-property',
|
|
179
|
-
value: 50.00
|
|
180
|
-
},
|
|
181
|
-
// the contexts' array
|
|
182
|
-
[
|
|
183
|
-
{
|
|
184
|
-
schema: 'iglu:com.acme/entity/jsonschema/1-0-0',
|
|
185
|
-
data: {myEntityField: 'hello world'}
|
|
186
|
-
}
|
|
187
|
-
]
|
|
188
|
-
);
|
|
52
|
+
## Find out more
|
|
189
53
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
// optional:
|
|
195
|
-
screenType: 'my-screen-type',
|
|
196
|
-
transitionType: 'my-transition'
|
|
197
|
-
},
|
|
198
|
-
// the contexts' array
|
|
199
|
-
[
|
|
200
|
-
{
|
|
201
|
-
schema: 'iglu:com.acme/entity/jsonschema/1-0-0',
|
|
202
|
-
data: {myEntityField: "hello world"}
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
);
|
|
54
|
+
| Technical Docs | Setup Guide |
|
|
55
|
+
|-----------------------------------|-----------------------------|
|
|
56
|
+
| [![i1][techdocs-image]][techdocs] | [![i2][setup-image]][setup] |
|
|
57
|
+
| [Technical Docs][techdocs] | [Setup Guide][setup] |
|
|
206
58
|
|
|
207
|
-
trackPageViewEvent(
|
|
208
|
-
// the page_view event's properties
|
|
209
|
-
{
|
|
210
|
-
pageUrl: 'https://www.my-page-url.com', //required
|
|
211
|
-
// optional
|
|
212
|
-
pageTitle: 'my page title',
|
|
213
|
-
pageReferrer: 'http://www.my-refr.com'
|
|
214
|
-
},
|
|
215
|
-
// the context's array
|
|
216
|
-
[
|
|
217
|
-
{
|
|
218
|
-
schema: 'iglu:com.acme/entity/jsonschema/1-0-0',
|
|
219
|
-
data: {myEntityField: "hello world"}
|
|
220
|
-
}
|
|
221
|
-
]
|
|
222
|
-
);
|
|
223
|
-
```
|
|
224
59
|
|
|
225
|
-
## Contributing
|
|
226
60
|
|
|
227
|
-
|
|
61
|
+
## Maintainer quick start
|
|
228
62
|
|
|
229
|
-
###
|
|
63
|
+
### Launching the DemoApp
|
|
230
64
|
|
|
231
|
-
Assuming a [react-native environment][react-native-environment] is set up, from the root of the repository
|
|
65
|
+
Assuming a [react-native environment][react-native-environment] is set up, from the root of the repository:
|
|
232
66
|
|
|
233
67
|
```bash
|
|
234
68
|
npm install
|
|
235
|
-
npm run
|
|
236
|
-
|
|
69
|
+
npm run bootstrap
|
|
237
70
|
cd DemoApp
|
|
238
|
-
yarn install
|
|
239
|
-
|
|
240
|
-
yarn start # to start Metro
|
|
241
|
-
|
|
242
71
|
```
|
|
243
72
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
1. For Android
|
|
73
|
+
**For Android:**
|
|
247
74
|
|
|
248
75
|
```bash
|
|
249
|
-
cd DemoApp
|
|
250
76
|
yarn android
|
|
251
77
|
```
|
|
78
|
+
_Note_: Linux users who want to run the DemoApp for Android, would also need to run `yarn start` in a separate terminal.
|
|
252
79
|
|
|
253
|
-
|
|
80
|
+
**For iOS:**
|
|
254
81
|
|
|
255
82
|
```bash
|
|
256
|
-
|
|
257
|
-
cd .. && yarn ios
|
|
83
|
+
yarn pods && yarn ios
|
|
258
84
|
```
|
|
259
85
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
Currently, testing is done manually. It is recommended to use [Snowplow Micro][snowplow-micro] or a [Snowplow Mini][snowplow-mini] instance to test your changes during development.
|
|
263
|
-
|
|
264
|
-
During development, to quickly test changes, the `.scripts/quickTest.sh` bash script can be used, assuming the DemoApp has already been built before. This simply replaces relevant files in the node_modules folder, and re-runs react native.
|
|
86
|
+
During development, to quickly test changes, the `.scripts/quickTest.sh` bash script can be used.
|
|
265
87
|
|
|
266
88
|
```bash
|
|
267
89
|
# android
|
|
268
|
-
|
|
269
90
|
bash .scripts/quickTest.sh android
|
|
270
|
-
|
|
271
91
|
# ios
|
|
272
|
-
|
|
273
92
|
bash .scripts/quickTest.sh ios
|
|
274
|
-
|
|
275
93
|
# both
|
|
276
|
-
|
|
277
94
|
bash .scripts/quickTest.sh both
|
|
278
95
|
```
|
|
279
96
|
|
|
280
|
-
|
|
97
|
+
Similarly, the `.scripts/cleanBuildAndRun.sh` script offers a naive way to clean-rebuild the entire project with your changes.
|
|
281
98
|
|
|
282
99
|
```bash
|
|
283
100
|
# android
|
|
284
|
-
|
|
285
101
|
bash .scripts/cleanBuildAndRun.sh android
|
|
286
|
-
|
|
287
102
|
# ios
|
|
288
|
-
|
|
289
103
|
bash .scripts/cleanBuildAndRun.sh ios
|
|
290
|
-
|
|
291
104
|
# both
|
|
292
|
-
|
|
293
105
|
bash .scripts/cleanBuildAndRun.sh both
|
|
294
106
|
```
|
|
295
107
|
|
|
296
|
-
## Find out more
|
|
297
108
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
109
|
+
### End-to-end tests
|
|
110
|
+
|
|
111
|
+
Snowplow React-Native Tracker is being end-to-end tested using [Snowplow Micro][snowplow-micro] and [Detox][detox]. To run these tests locally:
|
|
112
|
+
|
|
113
|
+
#### Prerequisites
|
|
114
|
+
|
|
115
|
+
1. **Docker**: Used to launch Snowplow Micro and expose its collector endpoint on `http://0.0.0.0:9090`.
|
|
116
|
+
2. **Perl**: Used to substitute the endpoint placeholders in `DemoApp/App.js` with Micro's endpoint for respective emulator/simulator.
|
|
117
|
+
3. **Detox** platform-specific development environment setup:
|
|
118
|
+
- [For Android][detox-android-env]. Namely:
|
|
119
|
+
- Java 8
|
|
120
|
+
- Android SDK
|
|
121
|
+
- Android Open-Source Project emulator
|
|
122
|
+
- [For iOS][detox-ios-env]. Namely:
|
|
123
|
+
- applesimutils
|
|
124
|
+
|
|
125
|
+
#### Testing
|
|
126
|
+
|
|
127
|
+
Once the prerequisites are in place:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
npm install
|
|
131
|
+
npm run bootstrap
|
|
132
|
+
cd DemoApp
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
- **e2e-android**
|
|
136
|
+
```
|
|
137
|
+
yarn e2e:android:micro
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- **e2e-ios**
|
|
141
|
+
```
|
|
142
|
+
yarn e2e:ios:micro
|
|
143
|
+
```
|
|
302
144
|
|
|
303
|
-
|
|
304
|
-
[Early Release]: https://img.shields.io/static/v1?style=flat&label=Snowplow&message=Early%20Release&color=014477&labelColor=9ba0aa&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAeFBMVEVMaXGXANeYANeXANZbAJmXANeUANSQAM+XANeMAMpaAJhZAJeZANiXANaXANaOAM2WANVnAKWXANZ9ALtmAKVaAJmXANZaAJlXAJZdAJxaAJlZAJdbAJlbAJmQAM+UANKZANhhAJ+EAL+BAL9oAKZnAKVjAKF1ALNBd8J1AAAAKHRSTlMAa1hWXyteBTQJIEwRgUh2JjJon21wcBgNfmc+JlOBQjwezWF2l5dXzkW3/wAAAHpJREFUeNokhQOCA1EAxTL85hi7dXv/E5YPCYBq5DeN4pcqV1XbtW/xTVMIMAZE0cBHEaZhBmIQwCFofeprPUHqjmD/+7peztd62dWQRkvrQayXkn01f/gWp2CrxfjY7rcZ5V7DEMDQgmEozFpZqLUYDsNwOqbnMLwPAJEwCopZxKttAAAAAElFTkSuQmCC
|
|
145
|
+
The above commands will take care to kill Micro's running container before exiting. If you'd prefer to keep Micro running in order to inspect the tracked events through Micro's REST API, you can alternatively control Micro through:
|
|
305
146
|
|
|
147
|
+
```
|
|
148
|
+
yarn micro:run
|
|
149
|
+
yarn micro:stop
|
|
150
|
+
```
|
|
151
|
+
and run the e2e-tests on their own:
|
|
152
|
+
```
|
|
153
|
+
yarn e2e:android
|
|
154
|
+
# or
|
|
155
|
+
yarn e2e:ios
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## Contributing
|
|
160
|
+
|
|
161
|
+
Feedback and contributions are welcome - if you have identified a bug, please log an issue on this repo. For all other feedback, discussion or questions please open a thread on our [discourse forum][discourse].
|
|
162
|
+
|
|
163
|
+
| Contributing |
|
|
164
|
+
|-------------------------------------------|
|
|
165
|
+
| [![i3][contributing-image]][contributing] |
|
|
166
|
+
| [Contributing][contributing] |
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
## Copyright and license
|
|
171
|
+
|
|
172
|
+
The Snowplow React Native Tracker is copyright 2020-2022 Snowplow Analytics Ltd, 2019 DataCamp.
|
|
173
|
+
|
|
174
|
+
Licensed under the **[Apache License, Version 2.0][license]** (the "License");
|
|
175
|
+
you may not use this software except in compliance with the License.
|
|
176
|
+
|
|
177
|
+
Unless required by applicable law or agreed to in writing, software
|
|
178
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
179
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
180
|
+
See the License for the specific language governing permissions and
|
|
181
|
+
limitations under the License.
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
[tracker-classification]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/tracker-maintenance-classification/
|
|
185
|
+
[actively-maintained]: https://img.shields.io/static/v1?style=flat&label=Snowplow&message=Actively%20Maintained&color=6638b8&labelColor=9ba0aa&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAeFBMVEVMaXGXANeYANeXANZbAJmXANeUANSQAM+XANeMAMpaAJhZAJeZANiXANaXANaOAM2WANVnAKWXANZ9ALtmAKVaAJmXANZaAJlXAJZdAJxaAJlZAJdbAJlbAJmQAM+UANKZANhhAJ+EAL+BAL9oAKZnAKVjAKF1ALNBd8J1AAAAKHRSTlMAa1hWXyteBTQJIEwRgUh2JjJon21wcBgNfmc+JlOBQjwezWF2l5dXzkW3/wAAAHpJREFUeNokhQOCA1EAxTL85hi7dXv/E5YPCYBq5DeN4pcqV1XbtW/xTVMIMAZE0cBHEaZhBmIQwCFofeprPUHqjmD/+7peztd62dWQRkvrQayXkn01f/gWp2CrxfjY7rcZ5V7DEMDQgmEozFpZqLUYDsNwOqbnMLwPAJEwCopZxKttAAAAAElFTkSuQmCC
|
|
306
186
|
[gh-actions]: https://github.com/snowplow-incubator/snowplow-react-native-tracker/actions
|
|
307
187
|
[gh-actions-image]: https://github.com/snowplow-incubator/snowplow-react-native-tracker/workflows/build/badge.svg?branch=master
|
|
308
188
|
|
|
@@ -318,10 +198,30 @@ bash .scripts/cleanBuildAndRun.sh both
|
|
|
318
198
|
[downloads-dm]: https://www.npmjs.com/package/@snowplow/react-native-tracker
|
|
319
199
|
[downloads-dm-image]: https://img.shields.io/npm/dm/@snowplow/react-native-tracker
|
|
320
200
|
|
|
321
|
-
[
|
|
201
|
+
[website]: https://snowplowanalytics.com
|
|
202
|
+
[docs]: https://docs.snowplowanalytics.com
|
|
203
|
+
[snowplow]: https://github.com/snowplow/snowplow
|
|
204
|
+
[discourse]: https://discourse.snowplowanalytics.com
|
|
205
|
+
|
|
206
|
+
[techdocs]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/react-native-tracker/introduction
|
|
322
207
|
[techdocs-image]: https://d3i6fms1cm1j0i.cloudfront.net/github/images/techdocs.png
|
|
208
|
+
[setup]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/react-native-tracker/quick-start-guide/
|
|
209
|
+
[setup-image]: https://d3i6fms1cm1j0i.cloudfront.net/github/images/setup.png
|
|
210
|
+
|
|
211
|
+
[contributing]: https://github.com/snowplow-incubator/snowplow-react-native-tracker/blob/master/CONTRIBUTING.md
|
|
212
|
+
[contributing-image]: https://d3i6fms1cm1j0i.cloudfront.net/github/images/contributing.png
|
|
323
213
|
|
|
324
214
|
[react-native]: https://reactnative.dev/
|
|
325
215
|
[react-native-environment]: https://reactnative.dev/docs/environment-setup
|
|
326
216
|
[snowplow-micro]: https://github.com/snowplow-incubator/snowplow-micro
|
|
327
217
|
[snowplow-mini]: https://github.com/snowplow/snowplow-mini
|
|
218
|
+
|
|
219
|
+
[native-trackers]: https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/mobile-trackers/mobile-trackers-v2-0
|
|
220
|
+
[objc-tracker]: https://github.com/snowplow/snowplow-objc-tracker
|
|
221
|
+
[android-tracker]: https://github.com/snowplow/snowplow-android-tracker
|
|
222
|
+
|
|
223
|
+
[demoapp]: https://github.com/snowplow-incubator/snowplow-react-native-tracker/tree/master/DemoApp
|
|
224
|
+
[gh-actions-workflows]: https://github.com/snowplow-incubator/snowplow-react-native-tracker/tree/master/.github/workflows
|
|
225
|
+
[detox]: https://github.com/wix/Detox
|
|
226
|
+
[detox-android-env]: https://github.com/wix/Detox/blob/master/docs/Introduction.AndroidDevEnv.md
|
|
227
|
+
[detox-ios-env]: https://github.com/wix/Detox/blob/master/docs/Introduction.iOSDevEnv.md
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "RNSnowplowTracker"
|
|
7
|
+
s.version = package['version']
|
|
8
|
+
s.license = package['license']
|
|
9
|
+
|
|
10
|
+
s.summary = "Snowplow React Native tracker"
|
|
11
|
+
s.description = package['description']
|
|
12
|
+
s.homepage = package['homepage']
|
|
13
|
+
s.author = { "Snowplow Analytics Ltd" => "info@snowplowanalytics.com" }
|
|
14
|
+
|
|
15
|
+
s.platforms = { :ios => "9.0" }
|
|
16
|
+
|
|
17
|
+
s.source = { :git => "https://github.com/snowplow-incubator/snowplow-react-native-tracker.git", :tag => "#{s.version}" }
|
|
18
|
+
s.source_files = "ios/**/*.{h,m}"
|
|
19
|
+
|
|
20
|
+
s.requires_arc = true
|
|
21
|
+
|
|
22
|
+
s.dependency "React-Core"
|
|
23
|
+
s.dependency "SnowplowTracker", "~> 3.0"
|
|
24
|
+
end
|
package/android/build.gradle
CHANGED
|
@@ -4,24 +4,24 @@ def safeExtGet(prop, fallback) {
|
|
|
4
4
|
|
|
5
5
|
buildscript {
|
|
6
6
|
repositories {
|
|
7
|
-
google()
|
|
8
7
|
mavenCentral()
|
|
8
|
+
google()
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
dependencies {
|
|
12
|
-
classpath "com.android.tools.build:gradle:
|
|
12
|
+
classpath "com.android.tools.build:gradle:4.2.1"
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
apply plugin: "com.android.library"
|
|
17
17
|
|
|
18
18
|
android {
|
|
19
|
-
compileSdkVersion safeExtGet('compileSdkVersion',
|
|
19
|
+
compileSdkVersion safeExtGet('compileSdkVersion', 30)
|
|
20
20
|
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
|
|
21
21
|
|
|
22
22
|
defaultConfig {
|
|
23
|
-
minSdkVersion safeExtGet('minSdkVersion',
|
|
24
|
-
targetSdkVersion safeExtGet('targetSdkVersion',
|
|
23
|
+
minSdkVersion safeExtGet('minSdkVersion', 21)
|
|
24
|
+
targetSdkVersion safeExtGet('targetSdkVersion', 30)
|
|
25
25
|
versionCode 1
|
|
26
26
|
versionName "1.0"
|
|
27
27
|
}
|
|
@@ -44,12 +44,11 @@ repositories {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
dependencies {
|
|
47
|
-
def lifecycle_version = "2.0.0"
|
|
48
47
|
implementation fileTree(dir: "libs", include: ["*.jar"])
|
|
49
|
-
implementation
|
|
48
|
+
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.+'
|
|
50
49
|
|
|
51
50
|
// Required Dependency for the Tracker
|
|
52
|
-
implementation "com.squareup.okhttp3:okhttp:
|
|
51
|
+
implementation "com.squareup.okhttp3:okhttp:4.9.3"
|
|
53
52
|
implementation "com.facebook.react:react-native:+"
|
|
54
|
-
implementation
|
|
53
|
+
implementation 'com.snowplowanalytics:snowplow-android-tracker:3.+'
|
|
55
54
|
}
|
|
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|
|
3
3
|
distributionPath=wrapper/dists
|
|
4
4
|
zipStoreBase=GRADLE_USER_HOME
|
|
5
5
|
zipStorePath=wrapper/dists
|
|
6
|
-
distributionUrl=https\://services.gradle.org/distributions/gradle-
|
|
6
|
+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
|