2017-03-20 6 views
0

나는 React Native와 Android Native 코드 사이에서 다리를 어떻게 벌이는 지 조사해 왔지만 아직도 이해가 가지 않는다. 나는 here 문서를 읽었지만, 나는 그것을 이해하지 못했다. 푸시 알림을 사용하는 앱을 만들고 싶습니다.하지만 중국에 메시지를 보내야하므로 위대한 방화벽 덕분에 GCM을 사용할 수 없으므로 다른 제 3 자 푸시를 사용합니다. SDKAndroid Native to React 네이티브 브릿지

는 내 애플 리케이션 (내가 뭔가를 밀어 때마다 console.log() 메시지를 결과), 다음 단계는 내가 다시 배선하는 데 어떤 도움을 이해할 수있을 것이다

특정 페이지로 원하는에 푸시를 통합 관리했습니다 :)

답변

0

참고 : 일반적인 푸시 알림 (예 : GCM 및 APNS)을 사용하는 경우 this을 대신 사용하십시오. 다른 제 3 자 푸시 서비스를 사용해야하므로 고유 한 SDK (React Native)를 브리징하는 방법을 찾아야합니다.

그래서이 문제로 수 시간 동안 고생 한 후 문제의 해결책을 발견했습니다. 이 솔루션은 두 부분으로 나누어 :

  1. emitter

    ,이 의지는 서버가 푸시를 보낼 때마다 이벤트를 방출한다.
  2. listener,이 이벤트는 이전에 내 보낸 이벤트를 수신합니다.

이 내가 this 라이브러리 GCM을 사용 않았다 방법에서 배운이 부분에 대한 기본면 (내 경우에는 안드로이드)

에서 발생

. 그리고 RN 문서에 here 자습서가 있습니다.

당신이 SomeBroadCastReceiver onReceive() 기능에 대한 귀하의 푸시를받을 기본적 후에는

청취자가 RN 측에 건설 될 예정이 기능

reactContext 
    .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 
    //this eventName is a key so you need to remember it, because you need to call it on the listener 
    .emit(eventName, params); 

리스너에 PARAMS로 번들을 전달할 수 있습니다. 이 documentation 나를 도와줍니다. RN iOS 문서에만 표시되기 때문에 이전에이 설명서가 누락되었습니다.

import { NativeEventEmitter, NativeModules } from 'react-native'; 
//import your already created package name here 
const { YourCustomPackageName} = NativeModules; 

const yourCustomPackageEmitter = new NativeEventEmitter(YourCustomPackageName); 
pushListenerEmitter.addListener(eventName, this.handlePush, this); 

ComponentWillMount()에 당신은 단지 handlePush 기능을 만들고

handlePush = (event) => { 
    console.log('event triggered..'); 
    console.log(event); 
} 
거기 PARAMS을 얻을 필요
관련 문제