如何在 React Native iOS 中使用深度链接在 Facebook 应用程序中打开特定视频?

How to open a specific video in Facebook app using deep linking in React Native iOS?

提问人:Ugur 提问时间:4/6/2023 最后编辑:Ugur 更新时间:4/17/2023 访问量:180

问:

我正在尝试实现一个应用程序到应用程序的流程,用于在我的 iOS 应用程序中播放 Facebook 视频。我正在使用 URL 方案打开包含特定视频的 Facebook 应用,但该视频实际上并未播放,仅显示 Facebook 应用的视频页面。fb://video/{video_id}

我尝试使用URL方案的不同变体,包括和,但它们似乎都不起作用。fb://facewebmodal/f?href=https://www.facebook.com/{video_id}fb://watch/video?id={video_id}

我在安装了最新版 Facebook 应用的 iOS 设备上运行应用。我应该使用不同的 URL 方案吗?

我的代码是(它在android上运行良好):

const handlePlayFacebookVideo = async (sourceUrl) => {
    const videoId = getFacebookVideoId(sourceUrl)

    try {
        const scheme = Platform.select({ ios: 'fb://', android: 'fb://facewebmodal/f?href=' });
        const url = Platform.select({ ios: `${scheme}video/?id=${videoId}`, android: `${scheme}${encodeURIComponent(sourceUrl)}` });
        
        const supported = await Linking.canOpenURL(url);
        if (supported) {
            await Linking.openURL(url);
        }
        if (!supported) {
            await Linking.openURL(sourceUrl);
        }

    } catch (error) {
        console.log('Error playing Facebook video:', error);
    }
}

任何帮助或指导将不胜感激。谢谢!

Android iOS React-Native Facebook 深度链接

评论


答:

0赞 Ugur 4/17/2023 #1

一次偶然的机会,我注意到,当我发送在网络上工作的相同 URL 时,如果设备安装了 Facebook 应用程序,它会打开它。如果没有,浏览器也会显示它。

所以根据我的代码,它的工作方式是这样的

await Linking.openURL(sourceUrl);