2017-10-03 1 views
0

Voici mon code, comment puis-je naviguer l'utilisateur à l'écran souhaité lorsque vous cliquez sur une notification ou un bouton dans une notification.Comment naviguer l'écran sur la notification ouverte dans React Native avec un signal?

componentWillMount() { 
    OneSignal.addEventListener('received', this.onReceived); 
    OneSignal.addEventListener('opened', this.onOpened); 
    OneSignal.addEventListener('registered', this.onRegistered); 
    OneSignal.addEventListener('ids', this.onIds); 

    OneSignal.inFocusDisplaying(2); 
    OneSignal.requestPermissions({ 
     alert: true, 
     badge: true, 
     sound: true 
    }); 
} 

componentWillUnmount() { 
    this.isUnmounted = true; 

    OneSignal.removeEventListener('received', this.onReceived); 
    OneSignal.removeEventListener('opened', this.onOpened); 
    OneSignal.removeEventListener('registered', this.onRegistered); 
    OneSignal.removeEventListener('ids', this.onIds); 
} 

onReceived(notification) { 
    console.log("Notification received: ", notification); 
} 

onOpened(openResult) { // HERE I WANT TO NAVIGATE TO ANOTHER SCREEN INSTEAD OF HOME SCREEN 
    this.isNotification = true; 

    let data = openResult.notification.payload.additionalData; 
    let inFocus = openResult.notification.isAppInFocus; 

    console.log('Message: ', openResult.notification.payload.body); 
    console.log('Data: ', openResult.notification.payload.additionalData); 
    console.log('isActive: ', openResult.notification.isAppInFocus); 
    console.log('openResult: ', openResult); 
} 

onRegistered(notifData) { 
    console.log("Device had been registered for push notifications!", notifData); 
} 

onIds(device) { 
    try { 
     AsyncStorage.setItem("@SC:deviceInfo", JSON.stringify(device)); 
    } catch (error) { 
     console.log(error); 
    } 
} 

Quelqu'un at-il des connaissances à ce sujet, Réagissez Native + OneSignal + React Navigation + Redux. S'il vous plaît aider!

Répondre

1

Pour atteindre le comportement souhaité, vous pouvez faire deux choses. Vous pouvez vérifier manuellement la notification et l'état du routeur et, si nécessaire, rediriger l'utilisateur vers l'écran ou utiliser la fonctionnalité Deep Linking.

Pour utiliser la liaison profonde, vous devez associer le paramètre url à votre notification lors de l'envoi. Pour diriger l'utilisateur vers l'écran approprié dans votre application, vous pouvez utiliser la fonctionnalité react-navigation deep linking.

D'une documentation signal

chaîne url L'URL pour ouvrir dans le navigateur lorsqu'un utilisateur clique sur la notification . Exemple: http://www.google.com

Note: a besoin iOS https ou mis à jour NSAppTransportSecurity dans plist


De React Navigation Documentation

liens profonds

Dans ce guide, nous mettra en place notre un pp pour gérer les adresses URI externes. Commençons par le SimpleApp que nous avons créé dans le getting started guide. Dans cet exemple, nous voulons un URI comme mychat://chat/Taylor pour ouvrir notre application et un lien directement dans la page de chat de Taylor.

+0

J'ai fait une demande en utilisant le réactif natif et un signal. Je peux recevoir les notifications de onesignal, mais si l'application ne fonctionne pas et que la notification push est reçue, cliquer sur la notification push ne permet pas de naviguer vers l'écran souhaité. S'il vous plaît me suggérer une solution pour ce problème. Comment cela peut-il être résolu? J'utilise le route-flux pour le routage dans mon application. Ce n'est pas un problème lorsque l'application est en cours d'exécution et qu'une notification est reçue. –

+0

@CrazyDeveloper La fonctionnalité de liaison profonde n'est pas encore implémentée dans le flux de réaction-native-routeur. Pour pouvoir utiliser la technique abow, vous devez implémenter [API de liaison reac-native] (https://facebook.github.io/react-native/docs/linking.html) – bennygenel

+0

Merci pour votre réponse. Donc, l'application ne fonctionne pas en arrière-plan et lorsque je clique sur la notification, l'application est ouverte. Comment l'application a-t-elle appris qu'elle était ouverte en cliquant sur la notification push? Merci. –