react-native-notifyvisitors 4.5.3 → 4.6.1
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/android/.classpath +1 -1
- package/android/.settings/org.eclipse.jdt.core.prefs +3 -3
- package/android/build.gradle +3 -3
- package/android/src/main/java/com/rn_notifyvisitors/RNNotifyVisitorsEmbedViewManager.java +40 -2
- package/android/src/main/java/com/rn_notifyvisitors/RNNotifyvisitorsModule.java +103 -50
- package/android/src/main/java/com/rn_notifyvisitors/RNNotifyvisitorsPackage.java +4 -5
- package/index.d.ts +15 -5
- package/index.js +47 -20
- package/ios/RNNotifyvisitors/RCTNVEventEmitter.m +17 -0
- package/ios/RNNotifyvisitors/RNNVNativeDisplayView.h +25 -0
- package/ios/RNNotifyvisitors/RNNVNativeDisplayView.m +92 -0
- package/ios/RNNotifyvisitors/RNNVNativeDisplayViewManager.h +1 -9
- package/ios/RNNotifyvisitors/RNNVNativeDisplayViewManager.m +8 -31
- package/ios/RNNotifyvisitors/RNNotifyvisitors.m +1 -1
- package/ios/RNNotifyvisitors.xcodeproj/project.pbxproj +8 -8
- package/ios/notifyvisitors.xcframework/Info.plist +9 -9
- package/ios/notifyvisitors.xcframework/ios-arm64/notifyvisitors.framework/Headers/notifyvisitors.h +3 -0
- package/ios/notifyvisitors.xcframework/ios-arm64/notifyvisitors.framework/Info.plist +0 -0
- package/ios/notifyvisitors.xcframework/ios-arm64/notifyvisitors.framework/_CodeSignature/CodeResources +3 -3
- package/ios/notifyvisitors.xcframework/ios-arm64/notifyvisitors.framework/notifyvisitors +0 -0
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitors.framework/Versions/A/Headers/notifyvisitors.h +3 -0
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitors.framework/Versions/A/Resources/Info.plist +2 -2
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitors.framework/Versions/A/_CodeSignature/CodeResources +3 -3
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitors.framework/Versions/A/notifyvisitors +0 -0
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-simulator/notifyvisitors.framework/Headers/notifyvisitors.h +3 -0
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-simulator/notifyvisitors.framework/Info.plist +0 -0
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-simulator/notifyvisitors.framework/_CodeSignature/CodeResources +3 -3
- package/ios/notifyvisitors.xcframework/ios-arm64_x86_64-simulator/notifyvisitors.framework/notifyvisitors +0 -0
- package/ios/notifyvisitorsNudges.xcframework/Info.plist +7 -7
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/Headers/notifyvisitorsNudges-Swift.h +2 -3
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/Info.plist +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios.abi.json +74 -49
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios.private.swiftinterface +3 -2
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios.swiftinterface +3 -2
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64/notifyvisitorsNudges.framework/notifyvisitorsNudges +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Headers/notifyvisitorsNudges-Swift.h +4 -6
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Resources/Info.plist +2 -2
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/notifyvisitorsNudges +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Headers/notifyvisitorsNudges-Swift.h +4 -6
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Info.plist +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-simulator.abi.json +74 -49
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-simulator.abi.json +74 -49
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/_CodeSignature/CodeResources +19 -19
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/notifyvisitorsNudges +0 -0
- package/package.json +1 -1
- package/react-native-notifyvisitors.podspec +3 -3
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-macabi.abi.json +0 -2130
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-macabi.private.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-macabi.swiftdoc +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-macabi.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-macabi.abi.json +0 -2130
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-macabi.private.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-macabi.swiftdoc +0 -0
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-maccatalyst/notifyvisitorsNudges.framework/Versions/A/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-macabi.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/arm64-apple-ios-simulator.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +0 -41
- package/ios/notifyvisitorsNudges.xcframework/ios-arm64_x86_64-simulator/notifyvisitorsNudges.framework/Modules/notifyvisitorsNudges.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +0 -41
package/android/.classpath
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<classpath>
|
|
3
|
-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-
|
|
3
|
+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-23/"/>
|
|
4
4
|
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
|
5
5
|
<classpathentry kind="output" path="bin/default"/>
|
|
6
6
|
</classpath>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
eclipse.preferences.version=1
|
|
2
|
-
org.eclipse.jdt.core.compiler.codegen.targetPlatform=
|
|
3
|
-
org.eclipse.jdt.core.compiler.compliance=
|
|
4
|
-
org.eclipse.jdt.core.compiler.source=
|
|
2
|
+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=23
|
|
3
|
+
org.eclipse.jdt.core.compiler.compliance=23
|
|
4
|
+
org.eclipse.jdt.core.compiler.source=23
|
package/android/build.gradle
CHANGED
|
@@ -35,9 +35,9 @@ android {
|
|
|
35
35
|
dependencies {
|
|
36
36
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
37
37
|
implementation 'com.facebook.react:react-native:+'
|
|
38
|
-
implementation('com.notifyvisitors.notifyvisitors:notifyvisitors:v5.
|
|
39
|
-
implementation("com.notifyvisitors.nudges:notifyvisitors-nudges:v0.0.
|
|
40
|
-
implementation platform('com.google.firebase:firebase-bom:33.16.0')
|
|
38
|
+
implementation('com.notifyvisitors.notifyvisitors:notifyvisitors:v5.6.1')
|
|
39
|
+
implementation("com.notifyvisitors.nudges:notifyvisitors-nudges:v0.0.8")
|
|
40
|
+
implementation platform('com.google.firebase:firebase-bom:33.16.0')
|
|
41
41
|
implementation ('com.google.firebase:firebase-messaging')
|
|
42
42
|
implementation ('com.google.android.gms:play-services-location')
|
|
43
43
|
}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
package com.rn_notifyvisitors;
|
|
2
2
|
|
|
3
3
|
import android.util.Log;
|
|
4
|
+
import android.view.View;
|
|
5
|
+
import android.view.ViewGroup;
|
|
4
6
|
|
|
5
7
|
import androidx.annotation.NonNull;
|
|
6
8
|
|
|
9
|
+
import com.facebook.react.bridge.Arguments;
|
|
10
|
+
import com.facebook.react.bridge.WritableMap;
|
|
11
|
+
import com.facebook.react.common.MapBuilder;
|
|
7
12
|
import com.facebook.react.uimanager.SimpleViewManager;
|
|
8
13
|
import com.facebook.react.uimanager.ThemedReactContext;
|
|
9
14
|
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
15
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
16
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
10
17
|
|
|
18
|
+
import com.notifyvisitors.notifyvisitors.NotifyVisitorsApi;
|
|
11
19
|
import com.notifyvisitors.nudges.NotifyVisitorsNativeDisplay;
|
|
12
20
|
|
|
21
|
+
import java.util.HashMap;
|
|
22
|
+
import java.util.Map;
|
|
23
|
+
|
|
24
|
+
|
|
13
25
|
public class RNNotifyVisitorsEmbedViewManager extends SimpleViewManager<NotifyVisitorsNativeDisplay> {
|
|
14
26
|
public static final String REACT_CLASS = "NotifyvisitorsNativeDisplay";
|
|
15
27
|
|
|
@@ -22,14 +34,40 @@ public class RNNotifyVisitorsEmbedViewManager extends SimpleViewManager<NotifyVi
|
|
|
22
34
|
@NonNull
|
|
23
35
|
@Override
|
|
24
36
|
protected NotifyVisitorsNativeDisplay createViewInstance(@NonNull ThemedReactContext themedReactContext) {
|
|
25
|
-
// default valueKey; will set via @ReactProp later
|
|
26
37
|
NotifyVisitorsNativeDisplay nativeDisplay = new NotifyVisitorsNativeDisplay(themedReactContext);
|
|
27
|
-
|
|
38
|
+
nativeDisplay.setVisibility(View.INVISIBLE);
|
|
39
|
+
nativeDisplay.setLayoutParams(new ViewGroup.LayoutParams(0, 0));
|
|
40
|
+
|
|
41
|
+
NotifyVisitorsApi.getInstance(themedReactContext).nudgeUiFinalized(info -> {
|
|
42
|
+
WritableMap event = Arguments.createMap();
|
|
43
|
+
event.putString("data", info.toString());
|
|
44
|
+
// Log.d("RNNotifyVisitors", "Nudge UI finalized with info: " + info.toString());
|
|
45
|
+
|
|
46
|
+
// 🔑 Ensure event fires only after view is mounted
|
|
47
|
+
nativeDisplay.post(() -> {
|
|
48
|
+
themedReactContext
|
|
49
|
+
.getJSModule(RCTEventEmitter.class)
|
|
50
|
+
.receiveEvent(nativeDisplay.getId(), "onNudgeUiFinalized", event);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
28
54
|
return nativeDisplay;
|
|
55
|
+
|
|
29
56
|
}
|
|
30
57
|
|
|
31
58
|
@ReactProp(name = "propertyName")
|
|
32
59
|
public void setPropertyName(NotifyVisitorsNativeDisplay view, String propertyName) {
|
|
33
60
|
view.loadContent(propertyName);
|
|
34
61
|
}
|
|
62
|
+
|
|
63
|
+
@Override
|
|
64
|
+
public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|
|
65
|
+
final Map<String, Object> eventMap = new HashMap<>();
|
|
66
|
+
final Map<String, String> registration = new HashMap<>();
|
|
67
|
+
registration.put("registrationName", "onNudgeUiFinalized");
|
|
68
|
+
|
|
69
|
+
eventMap.put("topNudgeUiFinalized", registration);
|
|
70
|
+
return eventMap;
|
|
71
|
+
}
|
|
72
|
+
|
|
35
73
|
}
|
|
@@ -50,7 +50,7 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
50
50
|
|
|
51
51
|
private final ReactApplicationContext reactContext;
|
|
52
52
|
private static final String TAG = "RN-NotifyVisitors";
|
|
53
|
-
private static final String PLUGIN_VERSION = "4.
|
|
53
|
+
private static final String PLUGIN_VERSION = "4.6.1";
|
|
54
54
|
|
|
55
55
|
private String PUSH_BANNER_CLICK_EVENT = "nv_push_banner_click";
|
|
56
56
|
private String CHAT_BOT_BUTTON_CLICK = "nv_chat_bot_button_click";
|
|
@@ -225,6 +225,47 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
@ReactMethod
|
|
229
|
+
public void getSessionData(final Callback callback) {
|
|
230
|
+
try {
|
|
231
|
+
Log.i(TAG, "GET SESSION DATA !!");
|
|
232
|
+
JSONObject data = NotifyVisitorsApi.getInstance(reactContext).getSessionData();
|
|
233
|
+
if (data != null) {
|
|
234
|
+
callback.invoke(data.toString());
|
|
235
|
+
} else {
|
|
236
|
+
callback.invoke("unavailable");
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
} catch (Exception e) {
|
|
240
|
+
Log.e(TAG, "GET SESSION DATA ERROR : " + e);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@ReactMethod
|
|
245
|
+
public void notificationClickCallback(final Callback callback) {
|
|
246
|
+
onNotificationClickCallback = callback;
|
|
247
|
+
|
|
248
|
+
try {
|
|
249
|
+
Log.i(TAG, "NOTIFICATION CLICK CALLBACK !!");
|
|
250
|
+
NotifyVisitorsApi.getInstance(reactContext).notificationClickCallback(new OnNotificationClicksHandler() {
|
|
251
|
+
@Override
|
|
252
|
+
public void onClick(JSONObject jsonObject) {
|
|
253
|
+
try {
|
|
254
|
+
if (jsonObject != null) {
|
|
255
|
+
sendEvent(NV_NOTIFICATION_CLICK_CALLBACK, jsonObject.toString());
|
|
256
|
+
} else {
|
|
257
|
+
sendEvent(NV_NOTIFICATION_CLICK_CALLBACK, "unavailable");
|
|
258
|
+
}
|
|
259
|
+
} catch (Exception e) {
|
|
260
|
+
Log.e(TAG, "NOTIFICATION CLICK CALLBACK ERROR 2 : " + e);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
} catch (Exception e) {
|
|
265
|
+
Log.e(TAG, "NOTIFICATION CLICK CALLBACK ERROR : " + e);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
228
269
|
@ReactMethod
|
|
229
270
|
public void showInAppMessage(ReadableMap tokens, ReadableMap customObjects, final String fragmentName, Callback callback) {
|
|
230
271
|
try {
|
|
@@ -272,7 +313,15 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
272
313
|
NotifyVisitorsApi.getInstance(mActivity).show(mTokens, mCustomObjects, fragmentName, new OnInAppTriggerListener() {
|
|
273
314
|
@Override
|
|
274
315
|
public void onDisplay(JSONObject response) {
|
|
275
|
-
|
|
316
|
+
try {
|
|
317
|
+
if (response != null) {
|
|
318
|
+
sendEvent(SHOW_CALLBACK, response.toString());
|
|
319
|
+
} else {
|
|
320
|
+
sendEvent(SHOW_CALLBACK, "{}");
|
|
321
|
+
}
|
|
322
|
+
} catch (Exception e) {
|
|
323
|
+
Log.e(TAG, "SHOW IN APP MESSAGE ERROR : " + e);
|
|
324
|
+
}
|
|
276
325
|
}
|
|
277
326
|
});
|
|
278
327
|
}
|
|
@@ -711,7 +760,11 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
711
760
|
NotifyVisitorsApi.getInstance(reactContext).userIdentifier(mAttributes, new OnUserTrackListener() {
|
|
712
761
|
@Override
|
|
713
762
|
public void onResponse(JSONObject data) {
|
|
714
|
-
|
|
763
|
+
if (data != null) {
|
|
764
|
+
callback.invoke(data.toString());
|
|
765
|
+
} else {
|
|
766
|
+
callback.invoke("{}");
|
|
767
|
+
}
|
|
715
768
|
}
|
|
716
769
|
});
|
|
717
770
|
} catch (Exception e) {
|
|
@@ -727,7 +780,7 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
727
780
|
if (screenName == null || screenName.equalsIgnoreCase("empty")) {
|
|
728
781
|
Log.i(TAG, "SCREEN NAME IS MISSING");
|
|
729
782
|
} else {
|
|
730
|
-
//
|
|
783
|
+
//mActivity = getCurrentActivity();
|
|
731
784
|
mActivity = reactContext.getCurrentActivity();
|
|
732
785
|
if (mActivity != null) {
|
|
733
786
|
mActivity.runOnUiThread(new Runnable() {
|
|
@@ -995,22 +1048,6 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
995
1048
|
}
|
|
996
1049
|
}
|
|
997
1050
|
|
|
998
|
-
@ReactMethod
|
|
999
|
-
public void getSessionData(final Callback callback) {
|
|
1000
|
-
try {
|
|
1001
|
-
Log.i(TAG, "GET SESSION DATA !!");
|
|
1002
|
-
JSONObject data = NotifyVisitorsApi.getInstance(reactContext).getSessionData();
|
|
1003
|
-
if (data != null) {
|
|
1004
|
-
callback.invoke(data.toString());
|
|
1005
|
-
} else {
|
|
1006
|
-
callback.invoke("unavailable");
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
} catch (Exception e) {
|
|
1010
|
-
Log.i(TAG, "GET SESSION DATA ERROR : " + e);
|
|
1011
|
-
}
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
1051
|
/* 12 - Play Store / App Store Rating */
|
|
1015
1052
|
@ReactMethod
|
|
1016
1053
|
public void requestInAppReview(final Callback callback) {
|
|
@@ -1087,25 +1124,6 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1087
1124
|
}
|
|
1088
1125
|
}
|
|
1089
1126
|
|
|
1090
|
-
@ReactMethod
|
|
1091
|
-
public void notificationClickCallback(final Callback callback) {
|
|
1092
|
-
onNotificationClickCallback = callback;
|
|
1093
|
-
|
|
1094
|
-
try {
|
|
1095
|
-
Log.i(TAG, "NOTIFICATION CLICK CALLBACK !!");
|
|
1096
|
-
NotifyVisitorsApi.getInstance(reactContext).notificationClickCallback(new OnNotificationClicksHandler() {
|
|
1097
|
-
@Override
|
|
1098
|
-
public void onClick(JSONObject jsonObject) {
|
|
1099
|
-
if (jsonObject != null) {
|
|
1100
|
-
sendEvent(NV_NOTIFICATION_CLICK_CALLBACK, jsonObject.toString());
|
|
1101
|
-
}
|
|
1102
|
-
}
|
|
1103
|
-
});
|
|
1104
|
-
} catch (Exception e) {
|
|
1105
|
-
Log.i(TAG, "NOTIFICATION CLICK CALLBACK ERROR : " + e);
|
|
1106
|
-
}
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
1127
|
/* 15 - Unique NotifyVisitors Identification */
|
|
1110
1128
|
@ReactMethod
|
|
1111
1129
|
public void getNvUID(final Callback callback) {
|
|
@@ -1131,8 +1149,16 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1131
1149
|
NotifyVisitorsApi.getInstance(reactContext).getNotificationDataListener(new NotificationListDetailsCallback() {
|
|
1132
1150
|
@Override
|
|
1133
1151
|
public void getNotificationData(JSONArray notificationListResponse) {
|
|
1134
|
-
|
|
1135
|
-
|
|
1152
|
+
try {
|
|
1153
|
+
//Log.i(TAG, "RESPONSE : " + notificationListResponse);
|
|
1154
|
+
if (notificationListResponse != null) {
|
|
1155
|
+
callback.invoke(notificationListResponse.toString());
|
|
1156
|
+
} else {
|
|
1157
|
+
callback.invoke("[]"); // Return empty array if null
|
|
1158
|
+
}
|
|
1159
|
+
} catch (Exception e) {
|
|
1160
|
+
Log.i(TAG, "GET NOTIFICATION DATA LISTENER ERROR 2 : " + e);
|
|
1161
|
+
}
|
|
1136
1162
|
}
|
|
1137
1163
|
}, 0);
|
|
1138
1164
|
}
|
|
@@ -1157,8 +1183,14 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1157
1183
|
NotifyVisitorsApi.getInstance(mActivity).getNotificationCenterData(new OnCenterDataListener() {
|
|
1158
1184
|
@Override
|
|
1159
1185
|
public void getData(JSONObject jsonObject) {
|
|
1160
|
-
|
|
1161
|
-
|
|
1186
|
+
try {
|
|
1187
|
+
//Log.i(TAG, "RESPONSE : " + jsonObject);
|
|
1188
|
+
if (jsonObject != null) {
|
|
1189
|
+
callback.invoke(jsonObject.toString());
|
|
1190
|
+
}
|
|
1191
|
+
} catch (Exception e) {
|
|
1192
|
+
Log.i(TAG, "GET NOTIFICATION CENTER DATA ERROR 2 : " + e);
|
|
1193
|
+
}
|
|
1162
1194
|
}
|
|
1163
1195
|
});
|
|
1164
1196
|
}
|
|
@@ -1265,9 +1297,16 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1265
1297
|
NotifyVisitorsApi.getInstance(reactContext).getNotificationCount(new NotificationCountInterface() {
|
|
1266
1298
|
@Override
|
|
1267
1299
|
public void getCount(int count) {
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1300
|
+
try {
|
|
1301
|
+
Log.i(TAG, "COUNT : " + count);
|
|
1302
|
+
String strI = String.valueOf(count);
|
|
1303
|
+
if (strI == null || strI.isEmpty()) {
|
|
1304
|
+
strI = "0";
|
|
1305
|
+
}
|
|
1306
|
+
callback.invoke(strI);
|
|
1307
|
+
} catch (Exception e) {
|
|
1308
|
+
Log.i(TAG, "GET NOTIFICATION COUNT ERROR 2 : " + e);
|
|
1309
|
+
}
|
|
1271
1310
|
}
|
|
1272
1311
|
});
|
|
1273
1312
|
} catch (Exception e) {
|
|
@@ -1325,8 +1364,16 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1325
1364
|
NotifyVisitorsApi.getInstance(mActivity).activatePushPermissionPopup(design, new OnPushRuntimePermission() {
|
|
1326
1365
|
@Override
|
|
1327
1366
|
public void getPopupInfo(JSONObject result) {
|
|
1328
|
-
|
|
1329
|
-
|
|
1367
|
+
try {
|
|
1368
|
+
Log.i(TAG, "Popup Response => " + result);
|
|
1369
|
+
if (result != null) {
|
|
1370
|
+
callback.invoke(result.toString());
|
|
1371
|
+
}
|
|
1372
|
+
} catch (Exception e) {
|
|
1373
|
+
Log.i(TAG, "PUSH PERMISSION PROMPT ERROR 2 : " + e);
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
|
|
1330
1377
|
}
|
|
1331
1378
|
});
|
|
1332
1379
|
}
|
|
@@ -1376,8 +1423,14 @@ public class RNNotifyvisitorsModule extends ReactContextBaseJavaModule implement
|
|
|
1376
1423
|
NotifyVisitorsApi.getInstance(mActivity).nativePushPermissionPrompt(new OnPushRuntimePermission() {
|
|
1377
1424
|
@Override
|
|
1378
1425
|
public void getPopupInfo(JSONObject result) {
|
|
1379
|
-
|
|
1380
|
-
|
|
1426
|
+
try {
|
|
1427
|
+
Log.i(TAG, "Popup Response => " + result);
|
|
1428
|
+
if (result != null) {
|
|
1429
|
+
callback.invoke(result.toString());
|
|
1430
|
+
}
|
|
1431
|
+
} catch (Exception e) {
|
|
1432
|
+
Log.i(TAG, "NATIVE PUSH PERMISSION PROMPT ERROR 2 : " + e);
|
|
1433
|
+
}
|
|
1381
1434
|
}
|
|
1382
1435
|
});
|
|
1383
1436
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
package com.rn_notifyvisitors;
|
|
2
2
|
|
|
3
|
-
import androidx.annotation.NonNull;
|
|
4
|
-
|
|
5
3
|
import java.util.Arrays;
|
|
6
4
|
import java.util.Collections;
|
|
7
5
|
import java.util.List;
|
|
@@ -11,6 +9,7 @@ import com.facebook.react.bridge.NativeModule;
|
|
|
11
9
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
12
10
|
import com.facebook.react.uimanager.ViewManager;
|
|
13
11
|
import com.facebook.react.bridge.JavaScriptModule;
|
|
12
|
+
import androidx.annotation.NonNull;
|
|
14
13
|
|
|
15
14
|
public class RNNotifyvisitorsPackage implements ReactPackage {
|
|
16
15
|
@Override
|
|
@@ -23,10 +22,10 @@ public class RNNotifyvisitorsPackage implements ReactPackage {
|
|
|
23
22
|
return Collections.emptyList();
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
@NonNull
|
|
27
25
|
@Override
|
|
28
26
|
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
return Arrays.asList(
|
|
28
|
+
new RNNotifyVisitorsEmbedViewManager() // This should include NotifyvisitorsNativeDisplay
|
|
29
|
+
);
|
|
31
30
|
}
|
|
32
31
|
}
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { ViewProps } from "react-native";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
|
|
4
1
|
export default class Notifyvisitors {
|
|
5
2
|
/* 1 - inApp-Banner & inApp-Surveys */
|
|
6
3
|
static show(
|
|
@@ -96,8 +93,10 @@ export default class Notifyvisitors {
|
|
|
96
93
|
static isPayloadFromNvPlatform(pushPayload: any, callback: any): void;
|
|
97
94
|
static getNV_FCMPayload(pushPayload: any): void;
|
|
98
95
|
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
/* 3 - Track Screen */
|
|
97
|
+
static trackScreen(
|
|
98
|
+
screenName: String
|
|
99
|
+
): void;
|
|
101
100
|
|
|
102
101
|
static getSessionData(nvCallback: any): void;
|
|
103
102
|
|
|
@@ -129,3 +128,14 @@ export class PushPromptInfo {
|
|
|
129
128
|
resumeInDays: String;
|
|
130
129
|
numberOfTimesPerSession: String;
|
|
131
130
|
}
|
|
131
|
+
|
|
132
|
+
export type NudgeUiFinalizedEvent = {
|
|
133
|
+
data: string; // Always present (stringified JSON from native)
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export type NotifyvisitorsNativeDisplayProps = ViewProps & {
|
|
137
|
+
propertyName: string;
|
|
138
|
+
onNudgeUiFinalized?: (event: { response: NudgeUiFinalizedEvent }) => void;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export declare const NotifyvisitorsNativeDisplay: React.FC<NotifyvisitorsNativeDisplayProps>;
|
package/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { NativeModules, NativeEventEmitter, Platform } from "react-native";
|
|
3
|
+
import { NativeModules, NativeEventEmitter, Platform, requireNativeComponent } from "react-native";
|
|
4
|
+
|
|
5
|
+
const NotifyvisitorsNativeDisplayView = requireNativeComponent('NotifyvisitorsNativeDisplay');
|
|
4
6
|
|
|
5
7
|
const { RNNotifyvisitors } = NativeModules;
|
|
6
8
|
const nvEventEmitter = new NativeEventEmitter(RNNotifyvisitors);
|
|
@@ -106,6 +108,25 @@ export default class Notifyvisitors {
|
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
|
|
111
|
+
static notificationClickCallback(nvCallback) {
|
|
112
|
+
console.log("NV- Notification Click Callback !!");
|
|
113
|
+
try {
|
|
114
|
+
CALLBACKS_STACK[NV_CALLBACKS.NV_NOTIFICATION_CLICK_CALLBACK] = nvCallback;
|
|
115
|
+
RNNotifyvisitors.notificationClickCallback(nvCallback);
|
|
116
|
+
} catch (e) {
|
|
117
|
+
console.log(e);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static getSessionData(nvCallback) {
|
|
122
|
+
console.log("NV- Get Session Data !!");
|
|
123
|
+
try {
|
|
124
|
+
RNNotifyvisitors.getSessionData(nvCallback);
|
|
125
|
+
} catch (e) {
|
|
126
|
+
console.log(e);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
109
130
|
/* 3 - Event Tracking */
|
|
110
131
|
static event(eventName, attributes, ltv, scope, nvCallback) {
|
|
111
132
|
console.log("NV- Events !!");
|
|
@@ -272,16 +293,6 @@ export default class Notifyvisitors {
|
|
|
272
293
|
}
|
|
273
294
|
}
|
|
274
295
|
|
|
275
|
-
static notificationClickCallback(nvCallback) {
|
|
276
|
-
console.log("NV- Notification Click Callback !!");
|
|
277
|
-
try {
|
|
278
|
-
CALLBACKS_STACK[NV_CALLBACKS.NV_NOTIFICATION_CLICK_CALLBACK] = nvCallback;
|
|
279
|
-
RNNotifyvisitors.notificationClickCallback(nvCallback);
|
|
280
|
-
} catch (e) {
|
|
281
|
-
console.log(e);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
296
|
/* 15 - Unique NotifyVisitors Identification */
|
|
286
297
|
static getNvUID(callback) {
|
|
287
298
|
console.log("NV- Get NV UID !!");
|
|
@@ -315,15 +326,6 @@ export default class Notifyvisitors {
|
|
|
315
326
|
}
|
|
316
327
|
}
|
|
317
328
|
|
|
318
|
-
static getSessionData(nvCallback) {
|
|
319
|
-
console.log("NV- Get Session Data !!");
|
|
320
|
-
try {
|
|
321
|
-
RNNotifyvisitors.getSessionData(nvCallback);
|
|
322
|
-
} catch (e) {
|
|
323
|
-
console.log(e);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
329
|
/* 17 - Auto Start Library Android */
|
|
328
330
|
static setAutoStartPermission_android_only() {
|
|
329
331
|
console.log("NV- Auto Start Permission Android !!");
|
|
@@ -545,3 +547,28 @@ export class PushPromptInfo {
|
|
|
545
547
|
this.numberOfTimesPerSession = "2";
|
|
546
548
|
}
|
|
547
549
|
}
|
|
550
|
+
|
|
551
|
+
const NotifyvisitorsNativeDisplay = (props) => {
|
|
552
|
+
const { onNudgeUiFinalized, ...rest } = props;
|
|
553
|
+
|
|
554
|
+
const handleEvent = (event) => {
|
|
555
|
+
let data = event.nativeEvent?.data;
|
|
556
|
+
//console.log("Nudge UI finalized with event: ", event);
|
|
557
|
+
//console.log("Nudge UI finalized with event.nativeEvent: ", event.nativeEvent);
|
|
558
|
+
console.log("Nudge UI finalized with data: ", data);
|
|
559
|
+
|
|
560
|
+
const finalEvent = {
|
|
561
|
+
data,
|
|
562
|
+
};
|
|
563
|
+
console.log("Final Event: ", finalEvent);
|
|
564
|
+
|
|
565
|
+
if (onNudgeUiFinalized) {
|
|
566
|
+
onNudgeUiFinalized({ response: finalEvent });
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
return (<NotifyvisitorsNativeDisplayView {...rest}
|
|
570
|
+
onNudgeUiFinalized={handleEvent} />);
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
// Wrapper component
|
|
574
|
+
export { NotifyvisitorsNativeDisplay };
|
|
@@ -886,6 +886,23 @@ RCT_EXPORT_METHOD(getLinkInfo) {
|
|
|
886
886
|
}
|
|
887
887
|
}
|
|
888
888
|
|
|
889
|
+
-(void)notifyvisitorsNudgeUiFinalized:(NSDictionary *)callback {
|
|
890
|
+
NSLog(@"RN-NotifyVisitors : NUDGE-UI-FINALIZED !!");
|
|
891
|
+
@try {
|
|
892
|
+
if([callback count] > 0){
|
|
893
|
+
NSError *nvError = nil;
|
|
894
|
+
NSData *nvJsonData = [NSJSONSerialization dataWithJSONObject: callback options: NSJSONWritingPrettyPrinted error: &nvError];
|
|
895
|
+
NSString *nvJsonString = [[NSString alloc] initWithData: nvJsonData encoding: NSUTF8StringEncoding];
|
|
896
|
+
if ([nvJsonString length] > 0 && ![nvJsonString isEqualToString: @""] && ![nvJsonString isEqual: [NSNull null]]) {
|
|
897
|
+
[[NSNotificationCenter defaultCenter] postNotificationName: @"nv_rn_nudges_ui_finalized" object: nil userInfo: @{@"data": nvJsonString}];
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
@catch (NSException *exception) {
|
|
902
|
+
NSLog(@"RN-NotifyVisitors ERROR : %@", exception.reason);
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
|
|
889
906
|
/* 20 - known user identified */
|
|
890
907
|
RCT_EXPORT_METHOD(notificationClickCallback:(RCTResponseSenderBlock)nvcallback) {
|
|
891
908
|
@try{
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNNVNativeDisplayView.h
|
|
3
|
+
// react-native-notifyvisitors
|
|
4
|
+
//
|
|
5
|
+
// Created by Notifyvisitors Macbook Air 4 on 30/08/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <React/RCTComponent.h>
|
|
9
|
+
#import <UIKit/UIKit.h>
|
|
10
|
+
|
|
11
|
+
#if __has_include(<notifyvisitorsNudges/notifyvisitorsNudges-Swift.h>)
|
|
12
|
+
#import <notifyvisitorsNudges/notifyvisitorsNudges-Swift.h>
|
|
13
|
+
#else
|
|
14
|
+
#import "../notifyvisitorsNudges-Swift.h"
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@interface RNNVNativeDisplayView : UIView
|
|
19
|
+
|
|
20
|
+
@property (nonatomic, copy) RCTDirectEventBlock onNudgeUiFinalized;
|
|
21
|
+
@property (strong, nonatomic) NSString * propertyName;
|
|
22
|
+
@property(nonatomic, strong) notifyvisitorsNativeDisplay *nvNudgesNativeDisplay;
|
|
23
|
+
//@property(nonatomic, strong) UIView * _Nullable nvContainerView;
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNNVNativeDisplayView.m
|
|
3
|
+
// react-native-notifyvisitors
|
|
4
|
+
//
|
|
5
|
+
// Created by Notifyvisitors Macbook Air 4 on 30/08/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "RNNVNativeDisplayView.h"
|
|
9
|
+
|
|
10
|
+
NSInteger nvIsDataReadyTimerCount = 0;
|
|
11
|
+
@implementation RNNVNativeDisplayView
|
|
12
|
+
|
|
13
|
+
- (instancetype)initWithFrame:(CGRect)frame {
|
|
14
|
+
self = [super initWithFrame:frame];
|
|
15
|
+
if (self) {
|
|
16
|
+
self.backgroundColor = [UIColor clearColor];
|
|
17
|
+
self.nvNudgesNativeDisplay = [[notifyvisitorsNativeDisplay alloc] init];
|
|
18
|
+
// Register for your custom notification
|
|
19
|
+
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNotification:) name: @"nv_rn_nudges_ui_finalized" object: nil];
|
|
20
|
+
}
|
|
21
|
+
return self;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (void)dealloc {
|
|
25
|
+
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
-(void)setPropertyName:(NSString *)propertyName {
|
|
29
|
+
_propertyName = propertyName;
|
|
30
|
+
NSString *rnNVUserDefaultSuitName = @"com.notifyvisitors.ios.sdk";
|
|
31
|
+
NSUserDefaults *rnNVUserDefaults = [[NSUserDefaults alloc] initWithSuiteName: rnNVUserDefaultSuitName];
|
|
32
|
+
if ([rnNVUserDefaults boolForKey: @"nv_BrandSettingsFileUpdated"]) {
|
|
33
|
+
NSLog(@"RN-NotifyVisitors : Native Display Data found load content now");
|
|
34
|
+
[self loadContentForNativeDisplay];
|
|
35
|
+
} else {
|
|
36
|
+
NSLog(@"RN-NotifyVisitors : Native Display Data not found, retry getting it and load content");
|
|
37
|
+
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC));
|
|
38
|
+
dispatch_after(delay, dispatch_get_main_queue(), ^{
|
|
39
|
+
[self loadContentForNativeDisplay];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)loadContentForNativeDisplay {
|
|
45
|
+
if ([self.propertyName length] > 0 && ![self.propertyName isEqualToString: @""] && ![self.propertyName isEqual: [NSNull null]]) {
|
|
46
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
47
|
+
NSLog(@"RN-NotifyVisitors : load Native Display for property name = %@", self.propertyName);
|
|
48
|
+
UIView *nvNativeDisplayCardView = [self.nvNudgesNativeDisplay loadContentForPropertyName: self.propertyName];
|
|
49
|
+
nvNativeDisplayCardView.translatesAutoresizingMaskIntoConstraints = YES; // ✅ VERY IMPORTANT
|
|
50
|
+
// Match parent bounds dynamically
|
|
51
|
+
nvNativeDisplayCardView.frame = self.bounds;
|
|
52
|
+
nvNativeDisplayCardView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
|
53
|
+
[self.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
|
|
54
|
+
[self setUserInteractionEnabled: YES];
|
|
55
|
+
[self addSubview: nvNativeDisplayCardView];
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
NSLog(@"RN-NotifyVisitors : missing parameter propertyName not found or empty");
|
|
59
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
60
|
+
UIView *nvEmptyDisplayView = [[UIView alloc] init];
|
|
61
|
+
nvEmptyDisplayView.backgroundColor = [UIColor clearColor];
|
|
62
|
+
// Match parent bounds dynamically
|
|
63
|
+
nvEmptyDisplayView.frame = self.bounds;
|
|
64
|
+
nvEmptyDisplayView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
|
65
|
+
[self.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];
|
|
66
|
+
[self setUserInteractionEnabled: YES];
|
|
67
|
+
[self addSubview: nvEmptyDisplayView];
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
// Handle the notification
|
|
74
|
+
- (void)handleNotification:(NSNotification *)notification {
|
|
75
|
+
NSLog(@"RN-NotifyVisitors : native Display UI Finalized");
|
|
76
|
+
if (self.onNudgeUiFinalized) {
|
|
77
|
+
NSDictionary *nvNativeDisplayOnUIFinished = notification.userInfo;
|
|
78
|
+
NSString *nvJsonString = @"";
|
|
79
|
+
if ([nvNativeDisplayOnUIFinished count] > 0) {
|
|
80
|
+
|
|
81
|
+
if (nvNativeDisplayOnUIFinished[@"data"]) {
|
|
82
|
+
nvJsonString = [NSString stringWithFormat: @"%@", nvNativeDisplayOnUIFinished[@"data"]];
|
|
83
|
+
}
|
|
84
|
+
if ([nvJsonString length] > 0 && ![nvJsonString isEqualToString: @""] && ![nvJsonString isEqual: [NSNull null]]) {
|
|
85
|
+
self.onNudgeUiFinalized(@{@"data": nvJsonString});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@end
|
|
@@ -7,16 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
#import "RCTViewManager.h"
|
|
9
9
|
|
|
10
|
-
#if __has_include(<notifyvisitorsNudges/notifyvisitorsNudges-Swift.h>)
|
|
11
|
-
#import <notifyvisitorsNudges/notifyvisitorsNudges-Swift.h>
|
|
12
|
-
#else
|
|
13
|
-
#import "../notifyvisitorsNudges-Swift.h"
|
|
14
|
-
#endif
|
|
15
|
-
|
|
16
|
-
|
|
17
10
|
@interface RNNVNativeDisplayViewManager : RCTViewManager
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
@property(nonatomic, strong) UIView * _Nullable nvContainerView;
|
|
12
|
+
|
|
21
13
|
|
|
22
14
|
@end
|