>  기사  >  웹 프론트엔드  >  Node.js는 기본 인터페이스에 메시지를 보내고 함수로 점프하는 인터페이스를 구현합니다.

Node.js는 기본 인터페이스에 메시지를 보내고 함수로 점프하는 인터페이스를 구현합니다.

高洛峰
高洛峰원래의
2016-12-05 16:10:381123검색

이 글의 예시는 참고용으로 메시지를 보내고 js 인터페이스에서 네이티브 인터페이스로 점프하는 구체적인 코드를 공유합니다.

1단계
아이디어에서 엽니다. rn 프로젝트 ./Android/app에서 이 프로세스는 시간이 걸리며 Gradle 종속 항목 등을 다운로드해야 할 수도 있습니다.

2단계
기본 앱을 만드는 것과 동일합니다. 간단하게 하기 위해 다음과 같이만 구현합니다.

public class TestActivity extends AppCompatActivity {
 
  private Button mBtGoBack;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    mBtGoBack = (Button) findViewById(R.id.bt_go_back);
    mBtGoBack.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        finish();
      }
    });
 
  }
}

3단계
ExampleInterface가 ReactContextBaseJavaModule을 확장하고 이 클래스에서 메시지를 받는 클래스를 작성합니다.
특정 코드:

public class ExampleInterface extends ReactContextBaseJavaModule {
 
  private ReactApplicationContext mRApplicationContext;
 
  public ExampleInterface(ReactApplicationContext reactContext) {
    super(reactContext);
    mRApplicationContext = reactContext;
  }
 
  //RN使用这个名称来调用原生模块的其他函数
  @Override
  public String getName() {
    return "ExampleInterface";
  }
  //必须写@ReactMethod,将其注册为能够被React调用的函数
  @ReactMethod
  public void HandlerMessage(String aMessage){
    Log.d("lt","====receive message from RN==="+aMessage);
     //这部分实现简单的跳转
    Intent intent = new Intent(mRApplicationContext,TestActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mRApplicationContext.startActivity(intent);
  }
 
}

4단계

패키지 관리자를 구현하고 메시지를 수신하는 예제 인터페이스 클래스를 등록합니다. .
코드는 다음과 같습니다.

public class AnExampleReactPackage implements ReactPackage {
 
  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactApplicationContext) {
    List<NativeModule> modules = new ArrayList<>();
    modules.add(new ExampleInterface(reactApplicationContext));
    return modules;
  }
 
  @Override
  public List<Class<? extends JavaScriptModule>> createJSModules() {
    return Collections.emptyList();
  }
 
  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactApplicationContext) {
    return Collections.emptyList();
  }
}

5단계
MainApplication에 패키지 관리 클래스 AnExampleReactPackage를 추가합니다.

@Override
 protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
    new MainReactPackage(),
    new AnExampleReactPackage()
  );
 }

6단계

js 인터페이스에서


buttonPress:function(){
  NativeModules.ExampleInterface.HandlerMessage(&#39;test&#39;);
  }

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.