当应用程序在后台打开时,我如何打开反应本机Android Deeplink



当应用在后台打开时,我想打开一个反应本机Android Deeplink。这是我处理其他类似情况的方式:

iOS应用在后台打开: Linking.addEventListener('url', this.handleOpenURL);

iOS应用程序在后台关闭 Linking.getInitialURL().then(url => this.handleOpenURL({ url }));

Android应用在后台打开:? - 处理这种情况的最佳方法是什么?

Android应用在后台关闭: Linking.getInitialURL().then(url => this.handleOpenURL({ url }));

REECT本机链接似乎与在后台运行的Android不起作用。您可以使用本机Android代码来解决此问题。在主要活动中覆盖这样的方法:

    @Override
public void onNewIntent(Intent intent) {
    if(intent.getData() != null) {
        Uri deepLinkURL = intent.getData();
        DeepLink deepLink = new DeepLink(deepLinkURL.toString());
    }
}

您需要做的就是将此Java代码与React Native JavaScript集成。这可以使用React Native -Native模块来完成。网站上有一些文档。为了使其成为一个更有效的解决方案,您可以使用http://square.github.io/otto/之类的东西来创建在该Deeplink对象上听取该的事件总线。然后,一旦发生事件,Deeplink事件将有效地开火。我希望这对人有帮助:)

将其添加到mainActivity.java

    @Override
    public void onNewIntent(Intent intent) {
        if(intent.getData() != null) {
            Uri deepLinkURL = intent.getData();
            ReactContext reactContext = getReactNativeHost().getReactInstanceManager().getCurrentReactContext();
            sendEvent(reactContext,"deepLinking", deepLinkURL.toString());
        }
    }
    private void sendEvent(ReactContext reactContext,
                           String eventName,
                           String str) {
        reactContext
                .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit(eventName, str);
    }

然后将其添加到React

componentDidMount() {
  this.subscription = DeviceEventEmitter.addListener('deepLinking', function(e: Event) {
    // handle event
  });
}
componentWillUnmount() {
  // When you want to stop listening to new events, simply call .remove() on the subscription
  this.subscription.remove();
}

相关内容

  • 没有找到相关文章

最新更新