Skip to content

Commit b6f10b1

Browse files
committed
add track event for user namespace
add android track event method expose ios trackEvent method
1 parent 38d0ace commit b6f10b1

File tree

4 files changed

+65
-49
lines changed

4 files changed

+65
-49
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies {
3131

3232
// api is used instead of implementation so the parent :app project can access any of the OneSignal Java
3333
// classes if needed. Such as com.onesignal.NotificationExtenderService
34-
api 'com.onesignal:OneSignal:5.1.35'
34+
api 'com.onesignal:OneSignal:5.3.0-alpha-01'
3535

3636
testImplementation 'junit:junit:4.12'
3737
}

android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,15 @@ of this software and associated documentation files (the "Software"), to deal
3535

3636
package com.onesignal.rnonesignalandroid;
3737

38-
import android.content.Context;
39-
import android.content.pm.ApplicationInfo;
40-
import android.os.Bundle;
41-
import com.onesignal.debug.internal.logging.Logging;
42-
import com.facebook.react.bridge.Callback;
38+
import java.util.HashMap;
39+
import java.util.Map;
40+
41+
import javax.naming.Context;
42+
43+
import org.jetbrains.annotations.Nullable;
44+
import org.json.JSONException;
45+
46+
import com.facebook.react.bridge.Arguments;
4347
import com.facebook.react.bridge.LifecycleEventListener;
4448
import com.facebook.react.bridge.Promise;
4549
import com.facebook.react.bridge.ReactApplicationContext;
@@ -48,39 +52,31 @@ of this software and associated documentation files (the "Software"), to deal
4852
import com.facebook.react.bridge.ReactMethod;
4953
import com.facebook.react.bridge.ReadableArray;
5054
import com.facebook.react.bridge.ReadableMap;
51-
import com.facebook.react.modules.core.DeviceEventManagerModule;
5255
import com.facebook.react.bridge.WritableMap;
53-
import com.facebook.react.bridge.Arguments;
56+
import com.facebook.react.modules.core.DeviceEventManagerModule;
5457
import com.onesignal.Continue;
5558
import com.onesignal.OneSignal;
56-
import com.onesignal.debug.LogLevel;
5759
import com.onesignal.common.OneSignalWrapper;
58-
import com.onesignal.inAppMessages.IInAppMessage;
59-
import com.onesignal.inAppMessages.IInAppMessageClickListener;
60+
import com.onesignal.debug.LogLevel;
61+
import com.onesignal.debug.internal.logging.Logging;
6062
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
61-
import com.onesignal.inAppMessages.IInAppMessageClickResult;
62-
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
63-
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
63+
import com.onesignal.inAppMessages.IInAppMessageClickListener;
64+
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
6465
import com.onesignal.inAppMessages.IInAppMessageDidDisplayEvent;
66+
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
6567
import com.onesignal.inAppMessages.IInAppMessageWillDismissEvent;
66-
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
68+
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
6769
import com.onesignal.notifications.INotification;
68-
import com.onesignal.notifications.INotificationClickListener;
6970
import com.onesignal.notifications.INotificationClickEvent;
71+
import com.onesignal.notifications.INotificationClickListener;
7072
import com.onesignal.notifications.INotificationLifecycleListener;
7173
import com.onesignal.notifications.INotificationWillDisplayEvent;
7274
import com.onesignal.notifications.IPermissionObserver;
75+
import com.onesignal.user.state.IUserStateObserver;
76+
import com.onesignal.user.state.UserChangedState;
7377
import com.onesignal.user.subscriptions.IPushSubscription;
7478
import com.onesignal.user.subscriptions.IPushSubscriptionObserver;
75-
import com.onesignal.user.subscriptions.PushSubscriptionState;
7679
import com.onesignal.user.subscriptions.PushSubscriptionChangedState;
77-
import com.onesignal.user.state.UserState;
78-
import com.onesignal.user.state.UserChangedState;
79-
import com.onesignal.user.state.IUserStateObserver;
80-
import org.json.JSONException;
81-
82-
import java.util.HashMap;
83-
import java.util.Map;
8480

8581
public class RNOneSignal extends ReactContextBaseJavaModule implements
8682
IPushSubscriptionObserver,
@@ -739,4 +735,10 @@ public void addListener(String eventName) {
739735
public void removeListeners(int count) {
740736
// Keep: Required for RN built in Event Emitter Calls.
741737
}
738+
739+
740+
@ReactMethod
741+
public void trackEvent(String name, @Nullable ReadableMap properties) {
742+
OneSignal.getUser().trackEvent(name, properties != null ? RNUtils.convertReadableMapIntoStringMap(properties) : null);
743+
}
742744
}

ios/RCTOneSignal/RCTOneSignalEventEmitter.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,4 +528,8 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
528528
// iOS Stub
529529
}
530530

531+
RCT_EXPORT_METHOD(trackEvent:(NSString *)name withProperties:(NSDictionary * _Nullable)properties) {
532+
[OneSignal.User trackEvent:name withProperties:properties];
533+
}
534+
531535
@end

src/index.ts

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,30 @@ import {
1414
SUBSCRIPTION_CHANGED,
1515
USER_STATE_CHANGED,
1616
} from './events/events';
17+
import NotificationWillDisplayEvent from './events/NotificationWillDisplayEvent';
18+
import { isNativeModuleLoaded, isValidCallback } from './helpers';
1719
import {
20+
InAppMessage,
21+
InAppMessageClickEvent,
22+
InAppMessageDidDismissEvent,
23+
InAppMessageDidDisplayEvent,
24+
InAppMessageEventName,
25+
InAppMessageEventTypeMap,
26+
InAppMessageWillDismissEvent,
27+
InAppMessageWillDisplayEvent,
28+
} from './models/InAppMessage';
29+
import { LiveActivitySetupOptions } from './models/LiveActivities';
30+
import {
31+
NotificationClickEvent,
1832
NotificationEventName,
1933
NotificationEventTypeMap,
20-
NotificationClickEvent,
2134
} from './models/NotificationEvents';
2235
import {
23-
PushSubscriptionState,
2436
OSNotificationPermission,
2537
PushSubscriptionChangedState,
38+
PushSubscriptionState,
2639
} from './models/Subscription';
27-
import { UserState, UserChangedState } from './models/User';
28-
import NotificationWillDisplayEvent from './events/NotificationWillDisplayEvent';
29-
import { LiveActivitySetupOptions } from './models/LiveActivities';
30-
import {
31-
InAppMessage,
32-
InAppMessageEventTypeMap,
33-
InAppMessageEventName,
34-
InAppMessageClickEvent,
35-
InAppMessageWillDisplayEvent,
36-
InAppMessageDidDisplayEvent,
37-
InAppMessageWillDismissEvent,
38-
InAppMessageDidDismissEvent,
39-
} from './models/InAppMessage';
40-
import { isValidCallback, isNativeModuleLoaded } from './helpers';
40+
import { UserChangedState, UserState } from './models/User';
4141

4242
const RNOneSignal = NativeModules.OneSignal;
4343
const eventManager = new EventManager(RNOneSignal);
@@ -605,6 +605,16 @@ export namespace OneSignal {
605605

606606
return RNOneSignal.getTags();
607607
}
608+
609+
/** Track custom events for the current user. */
610+
export function trackEvent(
611+
name: string,
612+
properties?: Record<string, string>,
613+
) {
614+
if (!isNativeModuleLoaded(RNOneSignal)) return;
615+
616+
RNOneSignal.trackEvent(name, properties);
617+
}
608618
}
609619

610620
export namespace Notifications {
@@ -1001,21 +1011,21 @@ export namespace OneSignal {
10011011
}
10021012

10031013
export {
1004-
NotificationWillDisplayEvent,
1005-
NotificationClickEvent,
10061014
InAppMessage,
10071015
InAppMessageClickEvent,
1008-
InAppMessageWillDisplayEvent,
1016+
InAppMessageDidDismissEvent,
10091017
InAppMessageDidDisplayEvent,
10101018
InAppMessageWillDismissEvent,
1011-
InAppMessageDidDismissEvent,
1012-
PushSubscriptionState,
1019+
InAppMessageWillDisplayEvent,
1020+
NotificationClickEvent,
1021+
NotificationWillDisplayEvent,
1022+
OSNotificationPermission,
10131023
PushSubscriptionChangedState,
1014-
UserState,
1024+
PushSubscriptionState,
10151025
UserChangedState,
1016-
OSNotificationPermission,
1026+
UserState,
10171027
};
10181028

1019-
export { default as OSNotification } from './OSNotification';
1020-
export { NotificationClickResult } from './models/NotificationEvents';
10211029
export { InAppMessageClickResult } from './models/InAppMessage';
1030+
export { NotificationClickResult } from './models/NotificationEvents';
1031+
export { default as OSNotification } from './OSNotification';

0 commit comments

Comments
 (0)