Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

628
Views
Manejar el esquema de URL react-native y Swift

Me gustaría manejar el esquema de URL personalizado en mi aplicación nativa de reacción. Por lo tanto, primero agregué un eventListener en mi código JS dentro de mi componente raíz así:

 componentDidMount() { Linking.addEventListener('url', this.handleOpenURL); } componentWillUnmount() { Linking.removeEventListener('url', this.handleOpenURL); } handleOpenURL = event => { console.log('event', event); };

En mi aplicación Xcode, agregué un esquema de URL personalizado "com.myScheme".

Mi problema apareció cuando traté de agregar la función en mi AppDelegate.swift para manejar la vinculación profunda.

Aquí está mi función:

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

Parece que devolver verdadero no es suficiente para activar mi oyente dentro de mi aplicación...

Sé que hay un método Objective-C en la documentación nativa de reacción:

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

Pero me gustaría tratar solo con Swift para mi proyecto con el fin de mejorar mis habilidades en este idioma. El problema es que no puedo encontrar ningún ejemplo de esta función implementada usando Swift.

Es por eso que pido ayuda para implementar este método y luego activar mi evento dentro de mi aplicación RN.

Gracias por su comprensión :)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Con respecto a su método AppDelegate, la versión rápida debería ser:

 public func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return RCTLinkingManager.application(app, open: url, options: options) }
over 4 years ago · Santiago Trujillo Report

0

La respuesta de Ro22e0 funcionó muy bien para mí. Mi aplicación también admite enlaces universales, por lo que también necesitaba un equivalente rápido para la siguiente función proporcionada en los documentos de React Native :

- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity 
restorationHandler: (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler {

  // Debug log something here
  return [RCTLinkingManager application:application
                  continueUserActivity:userActivity
                    restorationHandler:restorationHandler];
}

No me siento muy cómodo con Swift, pero finalmente pude obtener una solución funcional por ensayo y error:

 func application( _ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void ) -> Bool { return RCTLinkingManager.application(application, continue: userActivity, restorationHandler: restorationHandler) }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!