Fırat DİKMEN
Fırat DİKMEN

Reputation: 994

How to Subscribe to Platform Event Notifications with React Native

I am developing a mobile application with React Native. With this application, I connect to salesforce and make transactions.

I created Platform Events on Salesforce side and I want React Native Component to subscribe to it.

I can't use lightning/empApi or CometD because I don't code web. According to the document, my only option is Pub/Sub API.

I tried to pull it directly with FETCH but with no result.

import {View, Text} from 'react-native';
import React, { useEffect, useState } from 'react';
import { Force, oauth } from 'react-native-force';

function History() {
    const [session, setSession] = useState()
    const eventName = "Test_PE__e";
    const replayId = -1;
    const [subscription, setSubscription] = React.useState();
  
    useEffect(() => {
        oauth.getAuthCredentials(
            (data) => console.log(data), // already logged in
            () => {
                oauth.authenticate(
                    () => setSession(data),
                    (error) => console.log('Failed to authenticate:' + error)
                );
            });
    },[]);

    return (
      <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
            <Text> Subscribed to {eventName} </Text>
        </View>
    );

    async function setPEvents(session) {
        const headers = new Headers({
            'Authorization': `Bearer ${session.accessToken}`,
            'Content-Type': 'application/json'
        });
        const body = {
            "event": `/event/${eventName}`,
            "replayId": replayId
        };
        const url = `${session.instanceUrl}/services/data/v57.0/event/${eventName}/subscriptions`;
        const requestOptions = {
            method: 'POST',
            headers: headers,
            body: JSON.stringify(body)
        };
        const resp = await fetch(url, requestOptions)
            .then(async (response) => {
                console.log(response);
                return await response.json();
            })
            .catch(error => console.log('Error:', error));
        setSubscription(resp);
        console.log("FIRATTT");
        console.log("Result:",resp);
    }
}

export default History;

What can I do to subscribe? Or how can I use the SalesForce Pub/Sub API in React Native?

Upvotes: 0

Views: 241

Answers (0)

Related Questions