2015-04-12 24 views
5

Sto testando PushNotificationIOS nativo.reagire nativo PushNotificationIOS non ascolta notifica push

http://facebook.github.io/react-native/docs/pushnotificationios.html#content

mi legano evento come di seguito nella funzione componentWillMount

PushNotificationIOS.addEventListener('notification', this._onNotification); 

e mando notifica push dal server al dispositivo. Non riceve notifiche push.

posso solo ricevuto notifica push di seguito oggetto codice c

(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
} 

PushNotificationIOS può ascoltare con RCTDeviceEventEmitter chiamata. ma la notifica dal server non può ascoltare.

Qualcuno conosce questo problema?

+0

Vede qualche errori JavaScript? Mi chiedo se questo aiuta: https://github.com/facebook/react-native/issues/565 –

+0

Non vedo alcun errore. Ho fatto come http://facebook.github.io/react-native/docs/linking-libraries.html#content –

risposta

5

push non funzionano fuori dalla scatola, e questo non è documentato sui documenti nativi reagire. Ci sono alcune cose che devi aggiungere al tuo progetto prima di fare il bonifico delle notifiche. Ho trovato queste informazioni da un problema aperto su github https://github.com/facebook/react-native/pull/1979#issue-94795697.

Fondamentalmente è necessario collegare le notifiche manualmente in AppDelegate.m e chiamare i metodi corrispondenti da RCTPushNotificationManager in modo che la classe PushNotificationsIOS possa gestirle dal codice javascript.

  1. aggiungere RCTPushNotification al progetto (e anche collegare i file binari nelle impostazioni di creazione).
  2. aggiungere questa intestazione a intestazione percorsi di ricerca: $(SRCROOT)/node_modules/react-native/Libraries/**
  3. aggiungere questo codice a AppDelegate.m:

#import "RCTPushNotificationManager.h" 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 
{ 
    [RCTPushNotificationManager application:application didFailToRegisterForRemoteNotificationsWithError:error]; 
} 

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    [RCTPushNotificationManager application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 
} 

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification 
{ 
    [RCTPushNotificationManager application:application didReceiveRemoteNotification:notification]; 
} 
+0

Sto seguendo questi passaggi ma Xcode non riesce a trovare 'RCTPushNotificationManager.h' come posso risolverlo? –

+0

@MelihMucuk Se hai aggiunto il file 'RCTPushNotification.xcoceproj' nella tua cartella Librerie e aggiunto il percorso di ricerca dell'intestazione' $ (SRCROOT)/node_modules/react-native/Libraries/** 'alla destinazione del tuo progetto in Impostazioni di compilazione> Percorsi di ricerca> Intestazione I percorsi di ricerca xcode dovrebbero essere in grado di trovare il file di intestazione. Se xcode non riesce ancora a trovarlo, potresti provare a eliminare i file derivati ​​per il tuo progetto in ~ ~/Library/Developer/Xcode/DerivedData/'e ricostruire. –

+0

non è cambiato nulla. '#import" ../../ Libraries/PushNotificationIOS/RCTPushNotificationManager.h "' Se importo in questo modo, Xcode trova lib lib. –

1

ho trovato questo troppo così ha scritto un modulo sostitutivo per gestire la ricezione di notifiche push - notifiche https://github.com/darylrowland/react-native-remote-push

+0

Dovresti includere il modulo di informazioni il link e aggiungerlo come riferimento. http://stackoverflow.com/help/how-to-answer – NatureShade

+0

Grazie per la condivisione, tuttavia il tuo plugin sembra avere errori con React Native 0.4.4 Daryl? O forse sto facendo qualcosa di sbagliato? installato via npm. –

+0

Ti preghiamo di aggiungere alcune istruzioni su come aggiungere la tua libreria al progetto nativo reattivo esistente. e anche l'installazione di npm fa confusione con il progetto, quindi devo pulire i moduli di nodo e reinstallare ogni volta che npm installo la lib –