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 的承诺。这是我处理 iOS 和 android
的方法
import { Linking } from 'react-native';
const handleOpenLink = async (url) => {
try {
await Linking.openURL(url);
} catch {
throw new Error('URI cant open:' + url);
}
};
我一直在尝试使用 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 的承诺。这是我处理 iOS 和 android
的方法import { Linking } from 'react-native';
const handleOpenLink = async (url) => {
try {
await Linking.openURL(url);
} catch {
throw new Error('URI cant open:' + url);
}
};