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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -149,3 +149,6 @@ out/
# Ignore VSCode settings
.vscode/
.vscode/settings.json

# ignore ds store
.DS_Store
27 changes: 27 additions & 0 deletions apps/AEPSampleAppNewArchEnabled/app/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Drawer } from 'expo-router/drawer';

import { useColorScheme } from '@/hooks/useColorScheme';
import { MobileCore , LogLevel} from '@adobe/react-native-aepcore';
import { Messaging } from '@adobe/react-native-aepmessaging';
import { useEffect } from 'react';

// Prevent the splash screen from auto-hiding before asset loading is complete.
Expand Down Expand Up @@ -41,6 +42,32 @@ export default function RootLayout() {
MobileCore.initializeWithAppId("YOUR-APP-ID")
.then(() => {
console.log("AEP SDK Initialized");

// // Set up messaging delegate after SDK initialization
// const unsubscribe = Messaging.setMessagingDelegate({
// onDismiss: (message) => {
// console.log('Message dismissed:', message);
// },
// onShow: (message) => {
// console.log('Message shown:', message);
// },
// shouldShowMessage: (message) => {
// console.log('Should show message:', message);
// return true; // Always show messages in sample app
// },
// shouldSaveMessage: (message) => {
// console.log('Should save message:', message);
// return true; // Always save messages in sample app
// },
// urlLoaded: (url, message) => {
// console.log('URL loaded:', url, 'for message:', message);
// },
// });

// console.log("Messaging delegate set up successfully");

// Store unsubscribe function if needed for cleanup
// You could return it from useEffect if you need to clean up on unmount
})
.catch((error) => {
console.error("AEP SDK Initialization error:", error);
Expand Down
28 changes: 20 additions & 8 deletions packages/messaging/ios/src/RCTAEPMessaging.swift
Original file line number Diff line number Diff line change
Expand Up @@ -275,25 +275,37 @@ public class RCTAEPMessaging: RCTEventEmitter, MessagingDelegate {
}

public func shouldShowMessage(message: Showable) -> Bool {
if let fullscreenMessage = message as? FullscreenMessage,
let message = fullscreenMessage.parent
{
let fullscreenMessage = message as? FullscreenMessage
let parentMessage = fullscreenMessage?.parent

// If parent message exists, emit it
if let parentMessage = parentMessage {
emitNativeEvent(
name: Constants.SHOULD_SHOW_MESSAGE_EVENT,
body: RCTAEPMessagingDataBridge.transformToMessage(message: message)
body: RCTAEPMessagingDataBridge.transformToMessage(message: parentMessage)
)
} else if let fullscreenMessage = fullscreenMessage {
// Parent is nil but fullscreen message exists - emit empty body for now
emitNativeEvent(
name: Constants.SHOULD_SHOW_MESSAGE_EVENT,
body: [:]
)
semaphore.wait()
} else {
// Both are nil, don't emit anything and return false
return false
}

semaphore.wait()
if let message = parentMessage {
if self.shouldSaveMessage {
self.messageCache[message.id] = message
}

if self.shouldShowMessage {
latestMessage = message
}

return self.shouldShowMessage
}
return false
return self.shouldShowMessage
}

public func urlLoaded(_ url: URL, byMessage message: Showable) {
Expand Down