@attentive-mobile/attentive-react-native-sdk 2.0.0-beta.5 → 2.0.0-beta.6
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/README.md +3 -2
- package/android/build.gradle +4 -1
- package/android/src/main/kotlin/com/attentivereactnativesdk/AttentiveNotificationStore.kt +60 -0
- package/android/src/main/kotlin/com/attentivereactnativesdk/AttentivePushHelper.kt +15 -7
- package/android/src/main/kotlin/com/attentivereactnativesdk/AttentiveReactNativeSdkModule.kt +168 -136
- package/android/src/test/kotlin/com/attentivereactnativesdk/AttentiveNotificationStoreTest.kt +103 -0
- package/ios/AttentiveReactNativeSdk.mm +17 -2
- package/ios/AttentiveReactNativeSdk.xcodeproj/project.xcworkspace/xcuserdata/zheref.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Bridging/ATTNNativeSDK.swift +35 -28
- package/lib/commonjs/NativeAttentiveReactNativeSdk.js +1 -1
- package/lib/commonjs/NativeAttentiveReactNativeSdk.js.map +1 -1
- package/lib/commonjs/eventTypes.js.map +1 -1
- package/lib/commonjs/index.js +36 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeAttentiveReactNativeSdk.js +2 -2
- package/lib/module/NativeAttentiveReactNativeSdk.js.map +1 -1
- package/lib/module/eventTypes.js.map +1 -1
- package/lib/module/index.js +36 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeAttentiveReactNativeSdk.d.ts +12 -1
- package/lib/typescript/NativeAttentiveReactNativeSdk.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +32 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/NativeAttentiveReactNativeSdk.ts +69 -52
- package/src/index.tsx +36 -1
|
@@ -381,57 +381,64 @@ struct DebugEvent {
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
/**
|
|
384
|
-
*
|
|
385
|
-
* This method accepts userInfo dictionary instead of UNNotificationResponse, making it callable from React Native.
|
|
384
|
+
* React Native bridge entry point for foreground push tracking.
|
|
386
385
|
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
386
|
+
* **Important — iOS limitation**: The Attentive iOS SDK requires a `UNNotificationResponse`
|
|
387
|
+
* object for `handleForegroundPush`, which is an opaque system type that cannot be
|
|
388
|
+
* serialised across the React Native bridge. Calling this method from JS therefore
|
|
389
|
+
* **cannot invoke the native SDK** and is a no-op.
|
|
389
390
|
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
391
|
+
* The correct solution for iOS is to call
|
|
392
|
+
* `AttentiveSDKManager.shared.handleForegroundPush(response:authorizationStatus:)`
|
|
393
|
+
* directly from the host app's `UNUserNotificationCenterDelegate` implementation
|
|
394
|
+
* (i.e. `AppDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:)`).
|
|
395
|
+
* Bonni's `AppDelegate.swift` already does this, so foreground push events are tracked
|
|
396
|
+
* correctly via the native path — this RN bridge variant is intentionally unused on iOS.
|
|
397
|
+
*
|
|
398
|
+
* @param userInfo The notification payload dictionary (unused on iOS).
|
|
399
|
+
* @param authorizationStatus Current push authorization status string (unused on iOS).
|
|
392
400
|
*/
|
|
393
401
|
@objc(handleForegroundPushFromRN:authorizationStatus:)
|
|
394
402
|
public func handleForegroundPushFromRN(_ userInfo: [String: Any], authorizationStatus: String) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
// This is a workaround that logs the limitation
|
|
399
|
-
print("[AttentiveSDK] handleForegroundPush called from React Native (limited functionality)")
|
|
400
|
-
print("[AttentiveSDK] For full functionality, implement in native AppDelegate")
|
|
403
|
+
// iOS: no-op — tracking is performed natively via AttentiveSDKManager in AppDelegate.
|
|
404
|
+
// The UNNotificationResponse required by the iOS SDK cannot cross the RN bridge.
|
|
405
|
+
print("[AttentiveSDK] handleForegroundPushFromRN: iOS push tracking is handled natively via AttentiveSDKManager in AppDelegate. This RN bridge call is a no-op on iOS.")
|
|
401
406
|
|
|
402
407
|
if debuggingEnabled {
|
|
403
|
-
showDebugInfo(event: "Foreground Push (
|
|
408
|
+
showDebugInfo(event: "Foreground Push (RN bridge — iOS no-op)", data: [
|
|
404
409
|
"authorizationStatus": authorizationStatus,
|
|
405
410
|
"userInfo": userInfo,
|
|
406
|
-
"note": "
|
|
411
|
+
"note": "iOS: tracked via AppDelegate → AttentiveSDKManager. UNNotificationResponse not available from RN bridge."
|
|
407
412
|
])
|
|
408
413
|
}
|
|
409
414
|
}
|
|
410
415
|
|
|
411
416
|
/**
|
|
412
|
-
*
|
|
413
|
-
* This method accepts userInfo dictionary instead of UNNotificationResponse, making it callable from React Native.
|
|
417
|
+
* React Native bridge entry point for push-open tracking (background/inactive tap).
|
|
414
418
|
*
|
|
415
|
-
*
|
|
416
|
-
*
|
|
419
|
+
* **Important — iOS limitation**: The Attentive iOS SDK requires a `UNNotificationResponse`
|
|
420
|
+
* object for `handlePushOpen`, which cannot be serialised across the React Native bridge.
|
|
421
|
+
* Calling this method from JS is therefore a **no-op on iOS**.
|
|
417
422
|
*
|
|
418
|
-
*
|
|
419
|
-
*
|
|
423
|
+
* The correct solution is to call
|
|
424
|
+
* `AttentiveSDKManager.shared.handlePushOpen(response:authorizationStatus:)` directly
|
|
425
|
+
* from `AppDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:)`.
|
|
426
|
+
* Bonni's `AppDelegate.swift` already does this via the native path.
|
|
427
|
+
*
|
|
428
|
+
* @param userInfo The notification payload dictionary (unused on iOS).
|
|
429
|
+
* @param authorizationStatus Current push authorization status string (unused on iOS).
|
|
420
430
|
*/
|
|
421
431
|
@objc(handlePushOpenFromRN:authorizationStatus:)
|
|
422
432
|
public func handlePushOpenFromRN(_ userInfo: [String: Any], authorizationStatus: String) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
// This is a workaround that logs the limitation
|
|
427
|
-
print("[AttentiveSDK] handlePushOpen called from React Native (limited functionality)")
|
|
428
|
-
print("[AttentiveSDK] For full functionality, implement in native AppDelegate")
|
|
433
|
+
// iOS: no-op — tracking is performed natively via AttentiveSDKManager in AppDelegate.
|
|
434
|
+
// The UNNotificationResponse required by the iOS SDK cannot cross the RN bridge.
|
|
435
|
+
print("[AttentiveSDK] handlePushOpenFromRN: iOS push tracking is handled natively via AttentiveSDKManager in AppDelegate. This RN bridge call is a no-op on iOS.")
|
|
429
436
|
|
|
430
437
|
if debuggingEnabled {
|
|
431
|
-
showDebugInfo(event: "Push Open (
|
|
438
|
+
showDebugInfo(event: "Push Open (RN bridge — iOS no-op)", data: [
|
|
432
439
|
"authorizationStatus": authorizationStatus,
|
|
433
440
|
"userInfo": userInfo,
|
|
434
|
-
"note": "
|
|
441
|
+
"note": "iOS: tracked via AppDelegate → AttentiveSDKManager. UNNotificationResponse not available from RN bridge."
|
|
435
442
|
])
|
|
436
443
|
}
|
|
437
444
|
}
|
|
@@ -8,7 +8,7 @@ var _reactNative = require("react-native");
|
|
|
8
8
|
// Try to load via TurboModule first (new architecture)
|
|
9
9
|
// Fall back to NativeModules for old architecture
|
|
10
10
|
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
11
|
-
const AttentiveReactNativeSdkModule = isTurboModuleEnabled ? _reactNative.TurboModuleRegistry.get(
|
|
11
|
+
const AttentiveReactNativeSdkModule = isTurboModuleEnabled ? _reactNative.TurboModuleRegistry.get('AttentiveReactNativeSdk') : _reactNative.NativeModules.AttentiveReactNativeSdk;
|
|
12
12
|
var _default = AttentiveReactNativeSdkModule;
|
|
13
13
|
exports.default = _default;
|
|
14
14
|
//# sourceMappingURL=NativeAttentiveReactNativeSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","TurboModuleRegistry","get","NativeModules","AttentiveReactNativeSdk","_default","exports","default"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","TurboModuleRegistry","get","NativeModules","AttentiveReactNativeSdk","_default","exports","default"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAwKA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDI,gCAAmB,CAACC,GAAG,CAAO,yBAAyB,CAAC,GACxDC,0BAAa,CAACC,uBAAuB;AAAA,IAAAC,QAAA,GAE1BL,6BAA6B;AAAAM,OAAA,CAAAC,OAAA,GAAAF,QAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":"","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.clearUser = clearUser;
|
|
7
7
|
exports.destroyCreative = destroyCreative;
|
|
8
8
|
exports.exportDebugLogs = exportDebugLogs;
|
|
9
|
+
exports.getInitialPushNotification = getInitialPushNotification;
|
|
9
10
|
exports.getPushAuthorizationStatus = getPushAuthorizationStatus;
|
|
10
11
|
exports.handleForegroundNotification = handleForegroundNotification;
|
|
11
12
|
exports.handleForegroundPush = handleForegroundPush;
|
|
@@ -38,7 +39,12 @@ const AttentiveReactNativeSdk = _NativeAttentiveReactNativeSdk.default ? _Native
|
|
|
38
39
|
});
|
|
39
40
|
|
|
40
41
|
/**
|
|
41
|
-
* Initialize the Attentive SDK with the provided configuration
|
|
42
|
+
* Initialize the Attentive SDK with the provided configuration.
|
|
43
|
+
* This is the only supported entry point: the app (e.g. Bonni) must call this from TypeScript
|
|
44
|
+
* once at startup; the call is forwarded to the native module on each platform (iOS/Android),
|
|
45
|
+
* which then initializes the platform Attentive SDK. Native code must not initialize the SDK
|
|
46
|
+
* on its own (e.g. in Application onCreate or AppDelegate).
|
|
47
|
+
*
|
|
42
48
|
* @param configuration - Configuration object for the Attentive SDK
|
|
43
49
|
*/
|
|
44
50
|
function initialize(configuration) {
|
|
@@ -395,4 +401,33 @@ function handleForegroundPush(userInfo, authorizationStatus) {
|
|
|
395
401
|
function handlePushOpen(userInfo, authorizationStatus) {
|
|
396
402
|
AttentiveReactNativeSdk.handlePushOpen(userInfo, authorizationStatus);
|
|
397
403
|
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Returns the push notification payload that launched the app from a killed state
|
|
407
|
+
* (i.e. the user tapped an FCM notification while the app was not running) and clears
|
|
408
|
+
* it so it is only delivered once.
|
|
409
|
+
*
|
|
410
|
+
* **Android only.** On iOS, use `PushNotificationIOS.getInitialNotification()` to
|
|
411
|
+
* achieve the same result — the Attentive iOS SDK event is tracked natively in
|
|
412
|
+
* `AppDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:)` via
|
|
413
|
+
* `AttentiveSDKManager.shared`.
|
|
414
|
+
*
|
|
415
|
+
* Call this once at app startup (after `initialize()`) to detect and handle the
|
|
416
|
+
* killed-state push-open scenario:
|
|
417
|
+
*
|
|
418
|
+
* ```typescript
|
|
419
|
+
* const initial = await getInitialPushNotification()
|
|
420
|
+
* if (initial) {
|
|
421
|
+
* const authStatus = await getPushAuthorizationStatus()
|
|
422
|
+
* handlePushOpen(initial as PushNotificationUserInfo, authStatus)
|
|
423
|
+
* }
|
|
424
|
+
* ```
|
|
425
|
+
*
|
|
426
|
+
* @returns A promise that resolves to the notification data object, or `null` if the
|
|
427
|
+
* app was not launched via a push notification tap.
|
|
428
|
+
*/
|
|
429
|
+
async function getInitialPushNotification() {
|
|
430
|
+
const result = await AttentiveReactNativeSdk.getInitialPushNotification();
|
|
431
|
+
return result;
|
|
432
|
+
}
|
|
398
433
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_NativeAttentiveReactNativeSdk","_interopRequireDefault","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","AttentiveReactNativeSdk","NativeAttentiveReactNativeSdkModule","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","getPushAuthorizationStatus","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeAttentiveReactNativeSdk","_interopRequireDefault","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","AttentiveReactNativeSdk","NativeAttentiveReactNativeSdkModule","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","getPushAuthorizationStatus","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen","getInitialPushNotification","result"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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BAA0B,CAAC,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAC1BC,KAAa,EACbC,mBAA4C,EACtC;EACN3C,uBAAuB,CAACyC,mBAAmB,CAACC,KAAK,EAAEC,mBAAmB,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,+BAA+BA,CACtCF,KAAa,EACbC,mBAA4C,EAC5CE,QAKS,EACH;EACN7C,uBAAuB,CAAC4C,+BAA+B,CACrDF,KAAK,EACLC,mBAAmB,EACnBE,QACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACH,mBAA4C,EAAQ;EAC7EI,OAAO,CAACC,GAAG,CAAC,6DAA6D,CAAC;EAC1ED,OAAO,CAACC,GAAG,CAAC,4BAA4BL,mBAAmB,EAAE,CAAC;EAC9DI,OAAO,CAACC,GAAG,CACT,mEACF,CAAC;EAEDhD,uBAAuB,CAAC8C,iBAAiB,CAACH,mBAAmB,CAAC;EAE9DI,OAAO,CAACC,GAAG,CAAC,mDAAmD,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CACvBC,QAAkC,EAClCC,gBAAkC,EAClCR,mBAA4C,EACtC;EACN3C,uBAAuB,CAACiD,gBAAgB,CACtCC,QAAQ,EACRC,gBAAgB,EAChBR,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,4BAA4BA,CACnCF,QAAkC,EAC5B;EACNlD,uBAAuB,CAACoD,4BAA4B,CAACF,QAAkB,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,oBAAoBA,CAC3BH,QAAkC,EAClCP,mBAA4C,EACtC;EACN3C,uBAAuB,CAACqD,oBAAoB,CAC1CH,QAAQ,EACRP,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,cAAcA,CACrBJ,QAAkC,EAClCP,mBAA4C,EACtC;EACN3C,uBAAuB,CAACsD,cAAc,CACpCJ,QAAQ,EACRP,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeY,0BAA0BA,CAAA,EAA2C;EAClF,MAAMC,MAAM,GAAG,MAAMxD,uBAAuB,CAACuD,0BAA0B,CAAC,CAAC;EACzE,OAAOC,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TurboModuleRegistry, NativeModules } from
|
|
1
|
+
import { TurboModuleRegistry, NativeModules } from 'react-native';
|
|
2
2
|
// Try to load via TurboModule first (new architecture)
|
|
3
3
|
// Fall back to NativeModules for old architecture
|
|
4
4
|
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
5
|
-
const AttentiveReactNativeSdkModule = isTurboModuleEnabled ? TurboModuleRegistry.get(
|
|
5
|
+
const AttentiveReactNativeSdkModule = isTurboModuleEnabled ? TurboModuleRegistry.get('AttentiveReactNativeSdk') : NativeModules.AttentiveReactNativeSdk;
|
|
6
6
|
export default AttentiveReactNativeSdkModule;
|
|
7
7
|
//# sourceMappingURL=NativeAttentiveReactNativeSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","get","AttentiveReactNativeSdk"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":"AACA,SAASA,mBAAmB,EAAEC,aAAa,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","NativeModules","isTurboModuleEnabled","global","__turboModuleProxy","AttentiveReactNativeSdkModule","get","AttentiveReactNativeSdk"],"sourceRoot":"../../src","sources":["NativeAttentiveReactNativeSdk.ts"],"mappings":"AACA,SAASA,mBAAmB,EAAEC,aAAa,QAAQ,cAAc;AAwKjE;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAM,CAASC,kBAAkB,IAAI,IAAI;AAEvE,MAAMC,6BAA6B,GAAGH,oBAAoB,GACtDF,mBAAmB,CAACM,GAAG,CAAO,yBAAyB,CAAC,GACxDL,aAAa,CAACM,uBAAuB;AAEzC,eAAeF,6BAA6B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["eventTypes.tsx"],"mappings":"","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -11,7 +11,12 @@ const AttentiveReactNativeSdk = NativeAttentiveReactNativeSdkModule ? NativeAtte
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Initialize the Attentive SDK with the provided configuration
|
|
14
|
+
* Initialize the Attentive SDK with the provided configuration.
|
|
15
|
+
* This is the only supported entry point: the app (e.g. Bonni) must call this from TypeScript
|
|
16
|
+
* once at startup; the call is forwarded to the native module on each platform (iOS/Android),
|
|
17
|
+
* which then initializes the platform Attentive SDK. Native code must not initialize the SDK
|
|
18
|
+
* on its own (e.g. in Application onCreate or AppDelegate).
|
|
19
|
+
*
|
|
15
20
|
* @param configuration - Configuration object for the Attentive SDK
|
|
16
21
|
*/
|
|
17
22
|
function initialize(configuration) {
|
|
@@ -368,7 +373,36 @@ function handleForegroundPush(userInfo, authorizationStatus) {
|
|
|
368
373
|
function handlePushOpen(userInfo, authorizationStatus) {
|
|
369
374
|
AttentiveReactNativeSdk.handlePushOpen(userInfo, authorizationStatus);
|
|
370
375
|
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Returns the push notification payload that launched the app from a killed state
|
|
379
|
+
* (i.e. the user tapped an FCM notification while the app was not running) and clears
|
|
380
|
+
* it so it is only delivered once.
|
|
381
|
+
*
|
|
382
|
+
* **Android only.** On iOS, use `PushNotificationIOS.getInitialNotification()` to
|
|
383
|
+
* achieve the same result — the Attentive iOS SDK event is tracked natively in
|
|
384
|
+
* `AppDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:)` via
|
|
385
|
+
* `AttentiveSDKManager.shared`.
|
|
386
|
+
*
|
|
387
|
+
* Call this once at app startup (after `initialize()`) to detect and handle the
|
|
388
|
+
* killed-state push-open scenario:
|
|
389
|
+
*
|
|
390
|
+
* ```typescript
|
|
391
|
+
* const initial = await getInitialPushNotification()
|
|
392
|
+
* if (initial) {
|
|
393
|
+
* const authStatus = await getPushAuthorizationStatus()
|
|
394
|
+
* handlePushOpen(initial as PushNotificationUserInfo, authStatus)
|
|
395
|
+
* }
|
|
396
|
+
* ```
|
|
397
|
+
*
|
|
398
|
+
* @returns A promise that resolves to the notification data object, or `null` if the
|
|
399
|
+
* app was not launched via a push notification tap.
|
|
400
|
+
*/
|
|
401
|
+
async function getInitialPushNotification() {
|
|
402
|
+
const result = await AttentiveReactNativeSdk.getInitialPushNotification();
|
|
403
|
+
return result;
|
|
404
|
+
}
|
|
371
405
|
export { initialize, triggerCreative, destroyCreative, updateDomain, identify, clearUser, recordAddToCartEvent, recordProductViewEvent, recordPurchaseEvent, recordCustomEvent, invokeAttentiveDebugHelper, exportDebugLogs,
|
|
372
406
|
// Push Notification Methods
|
|
373
|
-
registerForPushNotifications, getPushAuthorizationStatus, registerDeviceToken, registerDeviceTokenWithCallback, handleRegularOpen, handlePushOpened, handleForegroundNotification, handleForegroundPush, handlePushOpen };
|
|
407
|
+
registerForPushNotifications, getPushAuthorizationStatus, registerDeviceToken, registerDeviceTokenWithCallback, handleRegularOpen, handlePushOpened, handleForegroundNotification, handleForegroundPush, handlePushOpen, getInitialPushNotification };
|
|
374
408
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeAttentiveReactNativeSdkModule","LINKING_ERROR","select","ios","default","AttentiveReactNativeSdk","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","getPushAuthorizationStatus","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAcvC,OAAOC,mCAAmC,MAEnC,iCAAiC;AAExC,MAAMC,aAAa,
|
|
1
|
+
{"version":3,"names":["Platform","NativeAttentiveReactNativeSdkModule","LINKING_ERROR","select","ios","default","AttentiveReactNativeSdk","Proxy","get","Error","initialize","configuration","attentiveDomain","mode","skipFatigueOnCreatives","enableDebugger","triggerCreative","creativeId","destroyCreative","updateDomain","domain","identify","identifiers","phone","email","klaviyoId","shopifyId","clientUserId","customIdentifiers","clearUser","recordAddToCartEvent","attrs","items","deeplink","recordProductViewEvent","recordPurchaseEvent","orderId","cartId","cartCoupon","recordCustomEvent","type","properties","invokeAttentiveDebugHelper","exportDebugLogs","registerForPushNotifications","getPushAuthorizationStatus","registerDeviceToken","token","authorizationStatus","registerDeviceTokenWithCallback","callback","handleRegularOpen","console","log","handlePushOpened","userInfo","applicationState","handleForegroundNotification","handleForegroundPush","handlePushOpen","getInitialPushNotification","result"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;AAcvC,OAAOC,mCAAmC,MAEnC,iCAAiC;AAExC,MAAMC,aAAa,GACjB,qFAAqF,GACrFF,QAAQ,CAACG,MAAM,CAAC;EACdC,GAAG,EAAE,gCAAgC;EACrCC,OAAO,EAAE;AACX,CAAC,CAAC,GACF,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,uBAAuB,GAC3BL,mCAAmC,GAC/BA,mCAAmC,GACnC,IAAIM,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CACG;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASQ,UAAUA,CAACC,aAAwC,EAAE;EAC5DL,uBAAuB,CAACI,UAAU,CAChCC,aAAa,CAACC,eAAe,EAC7BD,aAAa,CAACE,IAAI,EAClBF,aAAa,CAACG,sBAAsB,IAAI,KAAK,EAC7CH,aAAa,CAACI,cAAc,IAAI,KAClC,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,UAAmB,EAAE;EAC5CX,uBAAuB,CAACU,eAAe,CAACC,UAAU,CAAC;AACrD;;AAEA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAG;EACzBZ,uBAAuB,CAACY,eAAe,CAAC,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,MAAc,EAAE;EACpCd,uBAAuB,CAACa,YAAY,CAACC,MAAM,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAACC,WAA4B,EAAE;EAC9ChB,uBAAuB,CAACe,QAAQ,CAC9BC,WAAW,CAACC,KAAK,EACjBD,WAAW,CAACE,KAAK,EACjBF,WAAW,CAACG,SAAS,EACrBH,WAAW,CAACI,SAAS,EACrBJ,WAAW,CAACK,YAAY,EACxBL,WAAW,CAACM,iBACd,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAASC,SAASA,CAAA,EAAG;EACnBvB,uBAAuB,CAACuB,SAAS,CAAC,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAACC,KAAgB,EAAE;EAC9CzB,uBAAuB,CAACwB,oBAAoB,CAACC,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAACH,KAAkB,EAAE;EAClDzB,uBAAuB,CAAC4B,sBAAsB,CAACH,KAAK,CAACC,KAAK,EAAED,KAAK,CAACE,QAAQ,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAACJ,KAAe,EAAE;EAC5CzB,uBAAuB,CAAC6B,mBAAmB,CACzCJ,KAAK,CAACC,KAAK,EACXD,KAAK,CAACK,OAAO,EACbL,KAAK,CAACM,MAAM,EACZN,KAAK,CAACO,UACR,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACR,KAAkB,EAAE;EAC7CzB,uBAAuB,CAACiC,iBAAiB,CAACR,KAAK,CAACS,IAAI,EAAET,KAAK,CAACU,UAAU,CAAC;AACzE;;AAEA;AACA;AACA;AACA,SAASC,0BAA0BA,CAAA,EAAG;EACpCpC,uBAAuB,CAACoC,0BAA0B,CAAC,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAA,EAAoB;EAC1C,OAAOrC,uBAAuB,CAACqC,eAAe,CAAC,CAAC;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,4BAA4BA,CAAA,EAAS;EAC5CtC,uBAAuB,CAACsC,4BAA4B,CAAC,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,0BAA0BA,CAAA,EAAqC;EACtE,OAAOvC,uBAAuB,CAACuC,0BAA0B,CAAC,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAC1BC,KAAa,EACbC,mBAA4C,EACtC;EACN1C,uBAAuB,CAACwC,mBAAmB,CAACC,KAAK,EAAEC,mBAAmB,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,+BAA+BA,CACtCF,KAAa,EACbC,mBAA4C,EAC5CE,QAKS,EACH;EACN5C,uBAAuB,CAAC2C,+BAA+B,CACrDF,KAAK,EACLC,mBAAmB,EACnBE,QACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACH,mBAA4C,EAAQ;EAC7EI,OAAO,CAACC,GAAG,CAAC,6DAA6D,CAAC;EAC1ED,OAAO,CAACC,GAAG,CAAC,4BAA4BL,mBAAmB,EAAE,CAAC;EAC9DI,OAAO,CAACC,GAAG,CACT,mEACF,CAAC;EAED/C,uBAAuB,CAAC6C,iBAAiB,CAACH,mBAAmB,CAAC;EAE9DI,OAAO,CAACC,GAAG,CAAC,mDAAmD,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CACvBC,QAAkC,EAClCC,gBAAkC,EAClCR,mBAA4C,EACtC;EACN1C,uBAAuB,CAACgD,gBAAgB,CACtCC,QAAQ,EACRC,gBAAgB,EAChBR,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,4BAA4BA,CACnCF,QAAkC,EAC5B;EACNjD,uBAAuB,CAACmD,4BAA4B,CAACF,QAAkB,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,oBAAoBA,CAC3BH,QAAkC,EAClCP,mBAA4C,EACtC;EACN1C,uBAAuB,CAACoD,oBAAoB,CAC1CH,QAAQ,EACRP,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,cAAcA,CACrBJ,QAAkC,EAClCP,mBAA4C,EACtC;EACN1C,uBAAuB,CAACqD,cAAc,CACpCJ,QAAQ,EACRP,mBACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeY,0BAA0BA,CAAA,EAA2C;EAClF,MAAMC,MAAM,GAAG,MAAMvD,uBAAuB,CAACsD,0BAA0B,CAAC,CAAC;EACzE,OAAOC,MAAM;AACf;AAEA,SACEnD,UAAU,EACVM,eAAe,EACfE,eAAe,EACfC,YAAY,EACZE,QAAQ,EACRQ,SAAS,EACTC,oBAAoB,EACpBI,sBAAsB,EACtBC,mBAAmB,EACnBI,iBAAiB,EACjBG,0BAA0B,EAC1BC,eAAe;AACf;AACAC,4BAA4B,EAC5BC,0BAA0B,EAC1BC,mBAAmB,EACnBG,+BAA+B,EAC/BE,iBAAiB,EACjBG,gBAAgB,EAChBG,4BAA4B,EAC5BC,oBAAoB,EACpBC,cAAc,EACdC,0BAA0B","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TurboModule } from
|
|
1
|
+
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
|
|
2
2
|
export interface Spec extends TurboModule {
|
|
3
3
|
initialize: (attentiveDomain: string, mode: string, skipFatigueOnCreatives: boolean, enableDebugger: boolean) => void;
|
|
4
4
|
triggerCreative: (creativeId?: string) => void;
|
|
@@ -105,6 +105,17 @@ export interface Spec extends TurboModule {
|
|
|
105
105
|
* @param authorizationStatus - Current push authorization status
|
|
106
106
|
*/
|
|
107
107
|
handlePushOpen: (userInfo: Object, authorizationStatus: string) => void;
|
|
108
|
+
/**
|
|
109
|
+
* Returns the push notification payload that launched the app from a killed state
|
|
110
|
+
* (i.e. the user tapped a notification when the app was not running), then clears it
|
|
111
|
+
* so it is only delivered once.
|
|
112
|
+
*
|
|
113
|
+
* Android only — on iOS use `PushNotificationIOS.getInitialNotification()` instead.
|
|
114
|
+
*
|
|
115
|
+
* @returns Promise resolving to a notification data map, or null if the app was not
|
|
116
|
+
* launched from a push notification tap.
|
|
117
|
+
*/
|
|
118
|
+
getInitialPushNotification: () => Promise<Object | null>;
|
|
108
119
|
}
|
|
109
120
|
declare const _default: Spec | null;
|
|
110
121
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAttentiveReactNativeSdk.d.ts","sourceRoot":"","sources":["../../src/NativeAttentiveReactNativeSdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,
|
|
1
|
+
{"version":3,"file":"NativeAttentiveReactNativeSdk.d.ts","sourceRoot":"","sources":["../../src/NativeAttentiveReactNativeSdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAA;AAG/E,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,EAAE,CACV,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,sBAAsB,EAAE,OAAO,EAC/B,cAAc,EAAE,OAAO,KACpB,IAAI,CAAA;IACT,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,CACR,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,KACvB,IAAI,CAAA;IACT,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,oBAAoB,EAAE,CACpB,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC,EACF,QAAQ,CAAC,EAAE,MAAM,KACd,IAAI,CAAA;IACT,sBAAsB,EAAE,CACtB,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC,EACF,QAAQ,CAAC,EAAE,MAAM,KACd,IAAI,CAAA;IACT,mBAAmB,EAAE,CACnB,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,MAAM,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC,EACF,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,KAChB,IAAI,CAAA;IACT,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7D,0BAA0B,EAAE,MAAM,IAAI,CAAA;IACtC,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAGtC;;;;OAIG;IACH,4BAA4B,EAAE,MAAM,IAAI,CAAA;IAExC;;;;;OAKG;IACH,0BAA0B,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAEjD;;;;;OAKG;IACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAA;IAEzE;;;;;;;OAOG;IACH,+BAA+B,EAAE,CAC/B,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,CACR,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,KACN,IAAI,CAAA;IAET;;;;;OAKG;IACH,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAA;IAExD;;;;;;OAMG;IACH,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,MAAM,KACxB,IAAI,CAAA;IAET;;;;OAIG;IACH,4BAA4B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAExD;;;;;;OAMG;IACH,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAA;IAE7E;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAA;IAEvE;;;;;;;;;OASG;IACH,0BAA0B,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACzD;;AAUD,wBAA2D"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { UserIdentifiers, AttentiveSdkConfiguration, ProductView, Purchase, AddToCart, CustomEvent, Item, PushAuthorizationStatus, ApplicationState, PushNotificationUserInfo, PushRegistrationResult } from './eventTypes';
|
|
2
2
|
/**
|
|
3
|
-
* Initialize the Attentive SDK with the provided configuration
|
|
3
|
+
* Initialize the Attentive SDK with the provided configuration.
|
|
4
|
+
* This is the only supported entry point: the app (e.g. Bonni) must call this from TypeScript
|
|
5
|
+
* once at startup; the call is forwarded to the native module on each platform (iOS/Android),
|
|
6
|
+
* which then initializes the platform Attentive SDK. Native code must not initialize the SDK
|
|
7
|
+
* on its own (e.g. in Application onCreate or AppDelegate).
|
|
8
|
+
*
|
|
4
9
|
* @param configuration - Configuration object for the Attentive SDK
|
|
5
10
|
*/
|
|
6
11
|
declare function initialize(configuration: AttentiveSdkConfiguration): void;
|
|
@@ -287,6 +292,31 @@ declare function handleForegroundPush(userInfo: PushNotificationUserInfo, author
|
|
|
287
292
|
* ```
|
|
288
293
|
*/
|
|
289
294
|
declare function handlePushOpen(userInfo: PushNotificationUserInfo, authorizationStatus: PushAuthorizationStatus): void;
|
|
290
|
-
|
|
295
|
+
/**
|
|
296
|
+
* Returns the push notification payload that launched the app from a killed state
|
|
297
|
+
* (i.e. the user tapped an FCM notification while the app was not running) and clears
|
|
298
|
+
* it so it is only delivered once.
|
|
299
|
+
*
|
|
300
|
+
* **Android only.** On iOS, use `PushNotificationIOS.getInitialNotification()` to
|
|
301
|
+
* achieve the same result — the Attentive iOS SDK event is tracked natively in
|
|
302
|
+
* `AppDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:)` via
|
|
303
|
+
* `AttentiveSDKManager.shared`.
|
|
304
|
+
*
|
|
305
|
+
* Call this once at app startup (after `initialize()`) to detect and handle the
|
|
306
|
+
* killed-state push-open scenario:
|
|
307
|
+
*
|
|
308
|
+
* ```typescript
|
|
309
|
+
* const initial = await getInitialPushNotification()
|
|
310
|
+
* if (initial) {
|
|
311
|
+
* const authStatus = await getPushAuthorizationStatus()
|
|
312
|
+
* handlePushOpen(initial as PushNotificationUserInfo, authStatus)
|
|
313
|
+
* }
|
|
314
|
+
* ```
|
|
315
|
+
*
|
|
316
|
+
* @returns A promise that resolves to the notification data object, or `null` if the
|
|
317
|
+
* app was not launched via a push notification tap.
|
|
318
|
+
*/
|
|
319
|
+
declare function getInitialPushNotification(): Promise<Record<string, string> | null>;
|
|
320
|
+
export { initialize, triggerCreative, destroyCreative, updateDomain, identify, clearUser, recordAddToCartEvent, recordProductViewEvent, recordPurchaseEvent, recordCustomEvent, invokeAttentiveDebugHelper, exportDebugLogs, registerForPushNotifications, getPushAuthorizationStatus, registerDeviceToken, registerDeviceTokenWithCallback, handleRegularOpen, handlePushOpened, handleForegroundNotification, handleForegroundPush, handlePushOpen, getInitialPushNotification, };
|
|
291
321
|
export type { UserIdentifiers, AttentiveSdkConfiguration, ProductView, Purchase, AddToCart, CustomEvent, Item, PushAuthorizationStatus, ApplicationState, PushNotificationUserInfo, PushRegistrationResult, };
|
|
292
322
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,cAAc,CAAA;AA2BrB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@attentive-mobile/attentive-react-native-sdk",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.6",
|
|
4
4
|
"description": "React Native Module for the Attentive SDK",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -180,6 +180,7 @@
|
|
|
180
180
|
}
|
|
181
181
|
},
|
|
182
182
|
"dependencies": {
|
|
183
|
-
"@babel/runtime": "^7.27.0"
|
|
183
|
+
"@babel/runtime": "^7.27.0",
|
|
184
|
+
"metro-react-native-babel-preset": "^0.77.0"
|
|
184
185
|
}
|
|
185
186
|
}
|