React Native 打开 Facebook 页面

React Native open Facebook page

我一直在尝试使用 React Native Linking 打开 Facebook 页面 API。它对我不起作用。我确实安装了 Facebook 应用程序。这是我尝试过的:

Linking.openURL('fb://page/<page_name>');
Linking.openURL('fb://profile/<profile_name>');
Linking.openURL('http://facebook.com/<page_name>');

我还尝试使用 Communications 库:Communications.web(url)。 None 适用于 Facebook 和 Instagram。然而,对于 Google 地图、Apple 地图、Twitter 和其他大佬来说,它就像一个魅力。

我想知道我是否做错了什么,或者我们应该向 Facebook 的那些人发送一些 Android 文章,介绍如何在他们的应用程序中正确实施深度链接?他们显然不知道自己在做什么。

好的,找到一种打开 Facebook 的方法:

Linking.openURL('fb://page/PAGE_ID');
Linking.openURL('http://instagram.com/_u/USER_NAME');
Linking.openURL('http://instagram.com/_p/PICTURE');

一般来说,您应该在 Linking.canOpenURL() 中检查 iOS,然后再尝试打开它们。

此外,请确保将协议作为数组添加到 info.plist 中:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fb</string>
</array>

您也可以在 info.plist 的 Xcode 项目中执行此操作。

我遇到了同样的问题,但无法解决。我有多个社交网络按钮,带有 onPress= {()=> Linking.openURL("https://www.SOME_SOCIAL.NETWORK")}onpress 操作 我的按钮 link 到 Twitter、Instagram 和 SnapChat 都打开应用程序(如果已安装)或 Safari 中的网页(如果应用程序)没有安装。唯一的异常值是 Facebook。给定诸如 onPress= {()=> Linking.openURL("https://www.facebook.com/")} 之类的按下操作,即使安装了该应用程序,link 也将始终在 Safari 中打开。

由于这种奇怪的行为,我正在为 Facebook link 处理我的 onpress 操作,如下所示:

```

  Linking.canOpenURL("fb://profile/XXXXXX").then(supported => {
    if (supported) {
      return Linking.openURL("fb://profile/XXXXXX");
    } else {
      return Linking.openURL("https://www.facebook.com/");
    }
  })

```

上面的代码没有按预期工作,但似乎没有其他代码。

更新 - 2019 年 5 月

// open via app

fb://facewebmodal/f?href=PAGE_NAME

这里没有任何东西对我有用,但经过一些随机尝试,我发现这个解决方案有效:

Linking.openURL('fb://page/<ID-PAGE>');

如果您正在寻找您的 pageid,这里有一个小教程: https://roadtoblogging.com/get-facebook-page-id/

根据文档 https://reactnative.dev/docs/linking#canopenurl。可以拒绝 android 的承诺。这是我处理 iOSandroid

的方法
import { Linking } from 'react-native';

const handleOpenLink = async (url) => {
  try {
    await Linking.openURL(url);
  } catch {
    throw new Error('URI cant open:' + url);
  }
};