Обрабатывать схему URL реагировать на родную и Swift - PullRequest
2 голосов
/ 07 марта 2019

Я хотел бы обработать пользовательскую схему URL в моем приложении-реактиве. Таким образом, я сначала добавил eventListener в мой JS-код внутри моего корневого компонента, например:

componentDidMount() {
    Linking.addEventListener('url', this.handleOpenURL);
}

componentWillUnmount() {
    Linking.removeEventListener('url', this.handleOpenURL);
}

handleOpenURL = event => {
    console.log('event', event);
};

В своем приложении XCode я добавил собственную схему URL "com.myScheme".

Моя проблема возникла, когда я попытался добавить функцию в свой AppDelegate.swift для обработки глубоких ссылок.

Вот моя функция:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    print(url)
    return true
}

Похоже, что true возврата недостаточно для запуска моего слушателя внутри моего приложения ...

Я знаю, что в документации по реакционной натуре есть метод Objective-C:

#import <React/RCTLinkingManager.h>

- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}

Но я бы хотел иметь дело только со Свифтом для моего проекта, чтобы улучшить свои навыки в этом языке. Проблема в том, что я не могу найти ни одного примера этой функции, реализованной с помощью Swift.

Вот почему я прошу помощи в реализации этого метода, а затем инициирую мое событие внутри моего приложения RN.

Спасибо за понимание:)

1 Ответ

1 голос
/ 07 марта 2019

Относительно вашего метода AppDelegate, swift версия должна быть:

public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return RCTLinkingManager.application(app, open: url, options: options)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...