英文:
Firebase Dynamic Links is not working for iOS in react-native
问题
我已经为我的React Native应用设置了无密码身份验证,为此需要设置Firebase动态链接,我已成功完成此操作。
并且在Android和iOS两个平台上一切正常运行,但在将我的分支合并到主分支后,iOS上停止工作。
这意味着我收到了用于登录的电子邮件,但该链接无法打开iOS应用程序,但在Android上可以成功工作。
我执行了以下步骤来设置iOS的动态链接:
AppDelegate.m
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@import Firebase;
//Deep Linking RNavigation Docs
#import <React/RCTLinkingManager.h>
//Deep Linking RNavigation Docs
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"realyze"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
[FIRApp configure];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
//Deep Linking RNavigation Docs
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:app openURL:url options:options];
}
//Deep Linking RNavigation Docs
@end
-
添加了关联域名功能
在Xcode和我的Apple开发者帐户中为特定的应用程序 -
在Firebase控制台中为appID前缀添加了TeamID。
-
添加了这些Firebase授权域名:
applinks:realyze.page.link
activitycontinuation:realyze.page.link -
还将域名添加到 entitlements 文件中
-
app-site-associations-file 也已正确设置
在将我的分支合并之前,这个设置对我有用。
非常感谢您的帮助。
谢谢。
英文:
I have setup Passwordless authentication for my react-native app, for that it required to setup firebase dynamic links which I did successfully.
And everything was working fine on both Platforms Android and iOS, but after I merged my branch with the master, it stopped working on iOS.
Meaning I am receiving the email to SignIn but that link is not opening the iOS app but it is working on Android successfully.
I did the following steps to setup Dynamic Links for iOS:
AppDelegate.m
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@import Firebase;
//Deep Linking RNavigation Docs
#import <React/RCTLinkingManager.h>
//Deep Linking RNavigation Docs
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"realyze"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
[FIRApp configure];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
//Deep Linking RNavigation Docs
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:app openURL:url options:options];
}
//Deep Linking RNavigation Docs
@end
-
Added Association Domains Capability
In Xcode and in my Apple Developer Account for the particular App -
Added TeamID to Firebase Console for the appID prefix.
-
Added these Firebase Authorized Domains:
applinks:realyze.page.link
activitycontinuation:realyze.page.link -
Also added domains to an entitlements file
6.app-site-associations-file is also setup correctly
This setup worked for me before I merged my branch.
Help would be very much appreciated.
Thank you.
答案1
得分: 0
我在我的 AppDelegate.m
文件中添加了以下代码行:
//通用链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
这对我有用,现在我已经将应用程序部署为Beta版。
英文:
I added the following lines of code to my AppDelegate.m
:
//Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
This worked for me and I have now deployed the app for Beta
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论