【发布时间】:2020-01-22 05:14:37
【问题描述】:
我正在使用 react-native-firebase:: 5.6.0,在获取 iOS 设备的初始链接时遇到问题。在android上它工作正常。如果他没有在应用程序内部登录,我正在使用“Firebase 动态链接”在我的应用程序的登录屏幕内重定向用户,否则如果他已经登录,则只需打开应用程序。 它适用于 android 应用程序,但 ios 应用程序有问题。我使用了两个功能,一个是在应用关闭时获取动态链接“getInitialLink”,另一个是检查应用何时打开“onLink”。
这是我在关闭闪屏后使用的功能,仅在关闭状态打开应用时调用一次。
firebase.links().getInitialLink().then((url) => {
if (url && url === 'https://mycustomdomain.co.in') {
navigationToScreen(AUTH, INITIAL_SCREEN);
} else {
// INITIALIZE APP HERE
}
});
如果应用程序已经打开,我将在此函数中获取动态链接 url 值::
this.unsubscribeHandleOpenAppDynamicLinks = firebase.links().onLink(async (url) => {
let isLoggedIn = await AsyncStorage.getItem(LocalStorageKeys.IS_LOGGEDIN);
if (url) {
if ( isLoggedIn !== 'yes' && url === 'https://mycustomdomain.co.in') {
navigationToScreen(AUTH, INITIAL_SCREEN);
}
}
});
and clearing that listener on componentWillUnmount:: this.unsubscribeHandleOpenAppDynamicLinks();
在 iOS 的情况下,只有“onLink”功能有效,我正在 将 url 值设为“未定义”。 getInitialLink() 函数将 返回应用程序启动的 URL。如果应用程序是 不是从 URL 启动的,返回值将为空,但我是 即使在 iOS 的情况下从 url 启动应用程序时也会出现“未定义” 只要。如果是 iOS,我在 onLink() 中获取 url 推出。为什么会这样??
请提出我在这里做错了什么。
【问题讨论】:
-
我也有类似的问题。我注意到 Linking.getInitialURL 有效。过去一个小时左右一直在诅咒 react-native-firebase。
-
@vijayst 你有什么发现吗?我开始查看 getInitialURL 但它返回的 URL 不像 RNF 从 onLink 返回的那样干净
-
是的,我找到了解决方案。但是,在评论中写它太长了。我将获得的缩短链接传递给我编写的本机模块 - 该模块使用 Firebase SDK resolveShortLink 函数。这会返回您在应用中需要的深层链接。
-
@alittletf 我在本文中提供了本机代码:vijayt.com/post/…
标签: ios firebase react-native firebase-dynamic-links react-native-firebase