Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ dependencies {

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

testImplementation 'junit:junit:4.12'
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,15 @@ of this software and associated documentation files (the "Software"), to deal

package com.onesignal.rnonesignalandroid;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import com.onesignal.debug.internal.logging.Logging;
import com.facebook.react.bridge.Callback;

import org.jetbrains.annotations.Nullable;
import org.json.JSONException;

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
Expand All @@ -48,39 +52,31 @@ of this software and associated documentation files (the "Software"), to deal
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.onesignal.Continue;
import com.onesignal.OneSignal;
import com.onesignal.debug.LogLevel;
import com.onesignal.common.OneSignalWrapper;
import com.onesignal.inAppMessages.IInAppMessage;
import com.onesignal.inAppMessages.IInAppMessageClickListener;
import com.onesignal.debug.LogLevel;
import com.onesignal.debug.internal.logging.Logging;
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
import com.onesignal.inAppMessages.IInAppMessageClickResult;
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
import com.onesignal.inAppMessages.IInAppMessageClickListener;
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageDidDisplayEvent;
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
import com.onesignal.inAppMessages.IInAppMessageWillDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
import com.onesignal.notifications.INotification;
import com.onesignal.notifications.INotificationClickListener;
import com.onesignal.notifications.INotificationClickEvent;
import com.onesignal.notifications.INotificationClickListener;
import com.onesignal.notifications.INotificationLifecycleListener;
import com.onesignal.notifications.INotificationWillDisplayEvent;
import com.onesignal.notifications.IPermissionObserver;
import com.onesignal.user.state.IUserStateObserver;
import com.onesignal.user.state.UserChangedState;
import com.onesignal.user.subscriptions.IPushSubscription;
import com.onesignal.user.subscriptions.IPushSubscriptionObserver;
import com.onesignal.user.subscriptions.PushSubscriptionState;
import com.onesignal.user.subscriptions.PushSubscriptionChangedState;
import com.onesignal.user.state.UserState;
import com.onesignal.user.state.UserChangedState;
import com.onesignal.user.state.IUserStateObserver;
import org.json.JSONException;

import java.util.HashMap;
import java.util.Map;

public class RNOneSignal extends ReactContextBaseJavaModule implements
IPushSubscriptionObserver,
Expand Down Expand Up @@ -739,4 +735,10 @@ public void addListener(String eventName) {
public void removeListeners(int count) {
// Keep: Required for RN built in Event Emitter Calls.
}


@ReactMethod
public void trackEvent(String name, @Nullable ReadableMap properties) {
OneSignal.getUser().trackEvent(name, properties != null ? RNUtils.convertReadableMapToMap(properties) : null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,54 @@ public static HashMap<String, String> convertReadableMapIntoStringMap(ReadableMa
return stringMap;
}

public static Map<String, Object> convertReadableMapToMap(ReadableMap readableMap) {
Map<String, Object> map = new HashMap<>();
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();

while (iterator.hasNextKey()) {
String key = iterator.nextKey();
ReadableType type = readableMap.getType(key);
map.put(key, convertValue(type, readableMap, key));
}

return map;
}

public static List<Object> convertReadableArrayToList(ReadableArray readableArray) {
List<Object> list = new ArrayList<>();

for (int i = 0; i < readableArray.size(); i++) {
ReadableType type = readableArray.getType(i);
list.add(convertValue(type, readableArray, i));
}

return list;
}

private static Object convertValue(ReadableType type, ReadableMap map, String key) {
switch (type) {
case Null: return null;
case Boolean: return map.getBoolean(key);
case Number: return map.getDouble(key);
case String: return map.getString(key);
case Map: return convertReadableMapToMap(map.getMap(key));
case Array: return convertReadableArrayToList(map.getArray(key));
default: throw new IllegalArgumentException("Unknown type for key: " + key);
}
}

private static Object convertValue(ReadableType type, ReadableArray array, int index) {
switch (type) {
case Null: return null;
case Boolean: return array.getBoolean(index);
case Number: return array.getDouble(index);
case String: return array.getString(index);
case Map: return convertReadableMapToMap(array.getMap(index));
case Array: return convertReadableArrayToList(array.getArray(index));
default: throw new IllegalArgumentException("Unknown type for index: " + index);
}
}

public static HashMap<String, Object> convertPermissionToMap(boolean granted) {
HashMap<String, Object> hash = new HashMap<>();

Expand Down
24 changes: 23 additions & 1 deletion examples/RNOneSignalTS/OSButtons.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { Platform, StyleSheet, Text, View } from 'react-native';
import { OneSignal } from 'react-native-onesignal';
import { renderButtonView } from './Helpers';
// Remove: import {Text, Divider} from '@react-native-material/core';
Expand Down Expand Up @@ -431,11 +431,33 @@ class OSButtons extends React.Component<Props> {
},
);

const trackEventButton = renderButtonView('Track Event', () => {
loggingFunction('Tracking event: ', 'ReactNative');
const platform = Platform.OS; // This will be 'ios' or 'android'
OneSignal.User.trackEvent(`ReactNative-${platform}-noprops`);
OneSignal.User.trackEvent(`ReactNative-${platform}`, {
someNum: 123,
someFloat: 3.14159,
someString: 'abc',
someBool: true,
someObject: {
abc: '123',
nested: {
def: '456',
},
},
someArray: [1, 2, 3, 4],
someMixedArray: [1, '2', { abc: '123' }],
someNull: null,
});
});

return [
loginButton,
logoutButton,
addEmailButton,
removeEmailButton,
trackEventButton,
sendTagWithKeyButton,
deleteTagWithKeyButton,
addTagsButton,
Expand Down
2 changes: 1 addition & 1 deletion examples/RNOneSignalTS/OSDemo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class OSDemo extends React.Component<Props, State> {

async componentDidMount() {
OneSignal.initialize(APP_ID);
OneSignal.Debug.setLogLevel(LogLevel.None);
OneSignal.Debug.setLogLevel(LogLevel.Verbose);

OneSignal.LiveActivities.setupDefault();
// OneSignal.LiveActivities.setupDefault({
Expand Down
32 changes: 16 additions & 16 deletions examples/RNOneSignalTS/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,48 +8,48 @@ PODS:
- hermes-engine (0.81.4):
- hermes-engine/Pre-built (= 0.81.4)
- hermes-engine/Pre-built (0.81.4)
- OneSignalXCFramework (5.2.14):
- OneSignalXCFramework/OneSignalComplete (= 5.2.14)
- OneSignalXCFramework/OneSignal (5.2.14):
- OneSignalXCFramework (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalComplete (= 5.4.0-alpha-01)
- OneSignalXCFramework/OneSignal (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalExtension
- OneSignalXCFramework/OneSignalLiveActivities
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalComplete (5.2.14):
- OneSignalXCFramework/OneSignalComplete (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignal
- OneSignalXCFramework/OneSignalInAppMessages
- OneSignalXCFramework/OneSignalLocation
- OneSignalXCFramework/OneSignalCore (5.2.14)
- OneSignalXCFramework/OneSignalExtension (5.2.14):
- OneSignalXCFramework/OneSignalCore (5.4.0-alpha-01)
- OneSignalXCFramework/OneSignalExtension (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalInAppMessages (5.2.14):
- OneSignalXCFramework/OneSignalInAppMessages (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalLiveActivities (5.2.14):
- OneSignalXCFramework/OneSignalLiveActivities (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalLocation (5.2.14):
- OneSignalXCFramework/OneSignalLocation (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalNotifications (5.2.14):
- OneSignalXCFramework/OneSignalNotifications (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalExtension
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalOSCore (5.2.14):
- OneSignalXCFramework/OneSignalOSCore (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOutcomes (5.2.14):
- OneSignalXCFramework/OneSignalOutcomes (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalUser (5.2.14):
- OneSignalXCFramework/OneSignalUser (5.4.0-alpha-01):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
Expand Down Expand Up @@ -1795,7 +1795,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- react-native-onesignal (5.2.13):
- OneSignalXCFramework (= 5.2.14)
- OneSignalXCFramework (= 5.4.0-alpha-01)
- React (< 1.0.0, >= 0.13.0)
- react-native-safe-area-context (5.6.1):
- boost
Expand Down Expand Up @@ -2631,7 +2631,7 @@ SPEC CHECKSUMS:
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394
OneSignalXCFramework: 7112f3e89563e41ebc23fe807788f11985ac541c
OneSignalXCFramework: 689af4166ff7fb10349f0bbf93df75872fef1f8d
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
RCTDeprecation: c0ed3249a97243002615517dff789bf4666cf585
RCTRequired: 58719f5124f9267b5f9649c08bf23d9aea845b23
Expand Down Expand Up @@ -2665,7 +2665,7 @@ SPEC CHECKSUMS:
React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48
React-Mapbuffer: 9d2434a42701d6144ca18f0ca1c4507808ca7696
React-microtasksnativemodule: 75b6604b667d297292345302cc5bfb6b6aeccc1b
react-native-onesignal: 0829ce2a504db26dd80eaf14d4e0211ea626fe62
react-native-onesignal: 372119089f89c208e3a68586e9f3c24f16d599da
react-native-safe-area-context: c6e2edd1c1da07bdce287fa9d9e60c5f7b514616
React-NativeModulesApple: 879fbdc5dcff7136abceb7880fe8a2022a1bd7c3
React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,10 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-frameworks.sh\"\n";
Expand Down Expand Up @@ -236,14 +232,10 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNOneSignalTS/Pods-RNOneSignalTS-resources.sh\"\n";
Expand Down
4 changes: 4 additions & 0 deletions ios/RCTOneSignal/RCTOneSignalEventEmitter.m
Original file line number Diff line number Diff line change
Expand Up @@ -528,4 +528,8 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
// iOS Stub
}

RCT_EXPORT_METHOD(trackEvent:(NSString *)name withProperties:(NSDictionary * _Nullable)properties) {
[OneSignal.User trackEventWithName:name properties:properties];
}

@end
2 changes: 1 addition & 1 deletion react-native-onesignal.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ Pod::Spec.new do |s|
# pod 'React', :path => '../node_modules/react-native/'

# The Native OneSignal-iOS-SDK XCFramework from cocoapods.
s.dependency 'OneSignalXCFramework', '5.2.14'
s.dependency 'OneSignalXCFramework', '5.4.0-alpha-01'
end
Loading
Loading