Skip to content
This repository was archived by the owner on May 21, 2019. It is now read-only.

Commit 021bdae

Browse files
cpunioncbrevik
authored andcommitted
Add dispatch to ensure hits dispatched
1 parent cceff54 commit 021bdae

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

android/src/main/java/com/idehub/GoogleAnalyticsBridge/GoogleAnalyticsBridge.java

+8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.facebook.react.bridge.ReadableMap;
77
import com.facebook.react.bridge.ReadableArray;
88
import com.facebook.react.bridge.ReadableMapKeySetIterator;
9+
import com.facebook.react.bridge.Promise;
910

1011
import com.google.android.gms.analytics.GoogleAnalytics;
1112
import com.google.android.gms.analytics.HitBuilders;
@@ -481,4 +482,11 @@ public void createNewSession(String trackerId, String screenName) {
481482
tracker.setScreenName(screenName);
482483
tracker.send(new HitBuilders.ScreenViewBuilder().setNewSession().build());
483484
}
485+
486+
@ReactMethod
487+
public void dispatch(Promise promise) {
488+
GoogleAnalytics analytics = GoogleAnalytics.getInstance(getReactApplicationContext());
489+
analytics.dispatchLocalHits();
490+
promise.resolve(true);
491+
}
484492
}

ios/RCTGoogleAnalyticsBridge/RCTGoogleAnalyticsBridge/RCTGoogleAnalyticsBridge.m

+7
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,13 @@ - (NSDictionary *)constantsToExport
377377
[tracker send:[builder build]];
378378
}
379379

380+
RCT_EXPORT_METHOD(dispatch:(RCTPromiseResolveBlock)resolve
381+
reject:(__unused RCTPromiseRejectBlock)reject) {
382+
[[GAI sharedInstance] dispatchWithCompletionHandler:^void(GAIDispatchResult result){
383+
resolve(result != kGAIDispatchError ? @YES : @NO);
384+
}];
385+
}
386+
380387
+ (BOOL)requiresMainQueueSetup
381388
{
382389
return YES;

src/GoogleAnalyticsTracker.js

+23
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,27 @@ export class GoogleAnalyticsTracker {
248248
createNewSession(screenName) {
249249
GoogleAnalyticsBridge.createNewSession(this.id, screenName);
250250
}
251+
252+
dispatch() {
253+
return GoogleAnalyticsBridge.dispatch()
254+
}
255+
256+
dispatchWithTimeout(timeout = -1) {
257+
if (timeout < 0) {
258+
return this.dispatch()
259+
}
260+
261+
const withTimeout = timeout => (
262+
new Promise(resolve => {
263+
setTimeout(() => {
264+
resolve()
265+
}, (timeout > 15000) ? 15000 : timeout)
266+
})
267+
)
268+
269+
return Promise.race([
270+
GoogleAnalyticsBridge.dispatch(),
271+
withTimeout(timeout)
272+
])
273+
}
251274
}

0 commit comments

Comments
 (0)