diff --git a/.gitignore b/.gitignore index 1cc37aefa..48e6d3b41 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,6 @@ out/ # Ignore VSCode settings .vscode/ .vscode/settings.json + +# ignore ds store +.DS_Store diff --git a/apps/AEPSampleAppNewArchEnabled/app/MessagingView.tsx b/apps/AEPSampleAppNewArchEnabled/app/MessagingView.tsx index b7ff9e1e3..973fe847f 100644 --- a/apps/AEPSampleAppNewArchEnabled/app/MessagingView.tsx +++ b/apps/AEPSampleAppNewArchEnabled/app/MessagingView.tsx @@ -10,19 +10,27 @@ OF ANY KIND, either express or implied. See the License for the specific languag governing permissions and limitations under the License. */ -import React from "react"; -import { Button, Text, View, ScrollView } from "react-native"; -import { MobileCore } from "@adobe/react-native-aepcore"; +import React from 'react'; +import {Button, Text, View, ScrollView} from 'react-native'; +import {MobileCore} from '@adobe/react-native-aepcore'; import { - Messaging, - PersonalizationSchema, -} from "@adobe/react-native-aepmessaging"; -import styles from "../styles/styles"; -import { useRouter } from "expo-router"; + Messaging, + PersonalizationSchema, + MessagingEdgeEventType, + PropositionItem, + Message, + ContentCard, + HTMLProposition, + JSONPropositionItem +} from '@adobe/react-native-aepmessaging' +import { MessagingProposition } from '@adobe/react-native-aepmessaging'; +import styles from '../styles/styles'; +import { useRouter } from 'expo-router'; const SURFACES = ["android-cbe-preview", "cbe/json", "android-cc"]; const SURFACES_WITH_CONTENT_CARDS = ["android-cc"]; + const messagingExtensionVersion = async () => { const version = await Messaging.extensionVersion(); console.log(`AdobeExperienceSDK: Messaging version: ${version}`); @@ -35,16 +43,12 @@ const refreshInAppMessages = () => { const setMessagingDelegate = () => { Messaging.setMessagingDelegate({ - onDismiss: (msg) => console.log("dismissed!", msg), - onShow: (msg) => { - console.log("show", msg); - Messaging.handleJavascriptMessage( - msg.id, - "myInappCallback", - (content) => { - console.log("Received webview content:", content); - } - ); + onDismiss: msg => console.log('dismissed!', msg), + onShow: msg => { + console.log('show', msg); + msg.handleJavascriptMessage('myInappCallback', (content: string) => { + console.log('Received webview content in onShow:', content); + }); }, shouldShowMessage: () => true, shouldSaveMessage: () => true, @@ -52,14 +56,12 @@ const setMessagingDelegate = () => { }); console.log("messaging delegate set"); }; - const getPropositionsForSurfaces = async () => { const messages = await Messaging.getPropositionsForSurfaces(SURFACES); - console.log(JSON.stringify(messages)); + console.log('getPropositionsForSurfaces', JSON.stringify(messages)); }; - const trackAction = async () => { - MobileCore.trackAction("tuesday", { full: true }); + MobileCore.trackAction('iamjs', {full: true}); }; const updatePropositionsForSurfaces = async () => { @@ -89,12 +91,9 @@ const trackContentCardInteraction = async () => { for (const proposition of propositions) { for (const propositionItem of proposition.items) { if (propositionItem.schema === PersonalizationSchema.CONTENT_CARD) { - Messaging.trackContentCardInteraction(proposition, propositionItem); - console.log( - "trackContentCardInteraction", - proposition, - propositionItem - ); + // Cast to ContentCard for the legacy tracking method + Messaging.trackContentCardInteraction(proposition, propositionItem as any); + console.log('trackContentCardInteraction', proposition, propositionItem); } } } @@ -113,14 +112,35 @@ const trackContentCardDisplay = async () => { for (const proposition of propositions) { for (const propositionItem of proposition.items) { if (propositionItem.schema === PersonalizationSchema.CONTENT_CARD) { - Messaging.trackContentCardDisplay(proposition, propositionItem); - console.log("trackContentCardDisplay", proposition, propositionItem); + // Cast to ContentCard for the legacy tracking method + Messaging.trackContentCardDisplay(proposition, propositionItem as any); + console.log('trackContentCardDisplay', proposition, propositionItem); } } } } }; + +// Method demonstrating unified tracking using PropositionItem methods +const unifiedTrackingExample = async () => { + const messages = await Messaging.getPropositionsForSurfaces(SURFACES); + for (const surface of SURFACES) { + const propositions = messages[surface] || []; + + for (const proposition of propositions) { + const propositionWrapper = new MessagingProposition(proposition); + if (propositionWrapper.items.length > 0) { + const propositionItem = propositionWrapper.items[0]; + propositionItem.track(MessagingEdgeEventType.DISPLAY); + propositionItem.track('content_card_clicked', MessagingEdgeEventType.INTERACT, null); + } + } + } +} + + + function MessagingView() { const router = useRouter(); @@ -146,14 +166,9 @@ function MessagingView() {