gpt4 book ai didi

ios - 如何使用 react native firebase 动态链接获取 iOS 的初始链接?

转载 作者:行者123 更新时间:2023-12-01 16:06:19 25 4
gpt4 key购买 nike

我正在使用 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();

In case of iOS only "onLink" function is working and I am getting url value as "undefined". getInitialLink() function will returns the URL that the app has been launched from. If the app was not launched from a URL the return value will be null, but I am getting "undefined" even when launching an app from url in case of iOS only. I am getting url inside onLink() in case of iOS when app is launched. Why this is happening??



请建议我在这里做错了什么。

最佳答案

如果 getInitialLink方法不起作用,可能是因为链接不正确或由于 Expo 运行时。或者,使用 Linking.getInitialURL方法来获取初始 URL。这也需要一点 native 代码。这是因为链接模块不知道如何解释缩短的 URL。所以,我们称resolveShortLink Firebase SDK 获取嵌入式深层链接的方法。一旦我们收到嵌入的深层链接,我们就可以在我们的应用程序中照常处理它。

native 源代码记录在此 article .但为了完整起见,我会在这里发布。

#import "FDLResolver.h"
#import <React/RCTLog.h>

@implementation FDLResolver

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(resolveShortLink:(NSString *)shortLink :(RCTPromiseResolveBlock)resolve
:(RCTPromiseRejectBlock)reject)
{
id completion = ^(NSURL *_Nullable dynamicLink, NSError *_Nullable error) {
if (!error && dynamicLink) {
resolve(dynamicLink.absoluteString);
} else {
reject(@"Error", @"Error in getting dynamic link", error);
}
};

NSURL *shortLinkURL = [NSURL URLWithString:shortLink];
[[FIRDynamicLinks dynamicLinks] resolveShortLink:shortLinkURL completion:completion];
}

@end

链接模块代码如下。
Linking.getInitialURL().then(url => {
if (url && url.includes('page.link')) {
const shortLink = url.replace('exps', 'https')
NativeModules.FDLResolver.resolveShortLink(shortLink)
.then(link => {
const linkParts = link.split('?')
const query = qs.parse(linkParts[1])
this.parseRouteUrl(query.deep_link_id)
})
}
})

关于ios - 如何使用 react native firebase 动态链接获取 iOS 的初始链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59853034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com