OGeek|极客世界-中国程序员成长平台

标题: ios - 为什么 Linking.getInitialURL 总是返回 null? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 16:11
标题: ios - 为什么 Linking.getInitialURL 总是返回 null?

我已成功使用深层链接从共享扩展程序打开我的应用。如果应用程序已经在运行,那么我使用 Linking.addEventListener('url', this.handleOpenURL);

获取 ComponentDidMount 中的信息

如果应用程序尚未运行,我希望能够按照文档 (https://facebook.github.io/react-native/docs/linking) 使用 Linking.getInitialURL();。除了它总是为我出现 null 。该链接是我的应用程序的打开方式,但无论如何,显示为空。我在 App.js 的 componentDidMount 中有该代码。

我正在使用 react-native 59.2。

这是我的 AppDelegate.m

#import "AppDelegate.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <React/RCTLinkingManager.h>

@implementation AppDelegate

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions
{
  NSURL *jsCodeLocation;

  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot"index" fallbackResource:nil];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName"MYMODULENAME"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  rootView.backgroundColor = [UIColor blackColor];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

- (BOOL)applicationUIApplication *)application
            openURLNSURL *)url
            optionsNSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url optionsptions];
}

- (BOOL)applicationUIApplication *)application continueUserActivityNSUserActivity *)userActivity
 restorationHandlervoid (^)(NSArray * _Nullable))restorationHandler
{
  return [RCTLinkingManager application:application
                   continueUserActivity:userActivity
                     restorationHandler:restorationHandler];
}

@end

如果应用程序已经在后台运行,getInitialURL() 返回启动它的链接,否则我得到 null。我希望获得启动应用程序的链接,即使它没有运行。



Best Answer-推荐答案


响应总是 null if 我正在远程调试。如果远程调试器关闭,那么我会得到正确的 url。由于无法 console.log,因此我使用了 Alert 进行确认。

关于ios - 为什么 Linking.getInitialURL 总是返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55482111/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4