React Navigation v5:如何与 Branch.io 一起使用

Bra*_*ski 2 react-native react-navigation react-navigation-v5

我们有一个利用 Branch.io 通用链接的应用程序。遵循以下文档: https://help.branch.io/developers-hub/docs/react-native#read-deep-link

在react-native应用程序上,您设置了一个订阅者来接收javascript运行时中的深层通用链接。

使用这里的最新版本react-navigationhttps ://reactnavigation.org/docs/deep-linking

React Navigation 希望原生处理深层链接。React Navigation 似乎没有提供手动启动链接的好方法。

我如何同时使用这两项服务?事实证明,获取深层链接并将其分解为可路由的深层链接具有挑战性。我们的应用程序具有嵌套路由器,并且重新进行从路径到屏幕和参数的转换是我不想做的事情。最近有人这样做过吗?谢谢。

sat*_*164 6

您可以使用以下选项通知 React Navigation 有关传入链接的信息subscribe

const linking = {
  // Custom susbcription to handle incoming links
  subscribe(listener) {
    branch.subscribe(({ error, params, uri }) => {
      if (error) {
        console.error('Error from Branch: ' + error);
        return;
      }

      if (params['+non_branch_link']) {
        const nonBranchUrl = params['+non_branch_link'];
        // Route non-Branch URL if appropriate.
        return;
      }

      if (!params['+clicked_branch_link']) {
        // Indicates initialization success and some other conditions.
        // No link was opened.
        return;
      }

      // A Branch link was opened
      const url = params.$canonical_url;

      listener(url);
    });

    return () => {
      // Clean up the event listeners
      branch.unsubscribe();
    };
  },
  // Options such as prefixes, screens config etc.
  // ...
};
Run Code Online (Sandbox Code Playgroud)

文档:https ://reactnavigation.org/docs/deep-linking/#third-party-integrations

  • 请注意,“branch.unsubscribe”不再有效,并且可能会破坏应用程序。新更新的取消订阅方式记录在此处 https://github.com/adriaandebolle/react-navigation.github.io/commit/ef59927601004f338463f699613adae0569ca98c#diff-1e930de1b42414222faf00adf1c17cc253af302f52bcba7a23971 2645386c8c1 (2认同)