Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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,52 @@ 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 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: return null;
}
}

private static Object convertValue(ReadableType type, ReadableArray array, int index) {
switch (type) {
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: return null;
}
}

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