0

我想知道我是否可以将我的暴露func navigateToLoginWidget给 React Native。这样它就可以从RN触发。

我已经设法将 React Native 附带的 Objective-C 模板更改为 Swift,如下所示:

import Foundation
import IBMCloudAppID
import BMSCore

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  
  var window: UIWindow?
  var bridge: RCTBridge!

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    
    // initializing App ID SDK
    let region = AppID.REGION_SOMEWHERE
    let backendGUID = "MY_TENANT_ID_FROM_IBM"
    AppID.sharedInstance.initialize(tenantId: backendGUID, region: region)
    
    // Initializing React Native front-end with Swift instead of Obj-c template
    let jsCodeLocation: URL

    jsCodeLocation = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index.js", fallbackResource:nil)
    let rootView = RCTRootView(bundleURL: jsCodeLocation, moduleName: "MY_PROJECT_NAME", initialProperties: nil, launchOptions: launchOptions)
    let rootViewController = UIViewController()
    rootViewController.view = rootView

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = rootViewController
    self.window?.makeKeyAndVisible()

    return true
  }
  
  func application(_ application: UIApplication, open url: URL, options :[UIApplication.OpenURLOptionsKey : Any]) -> Bool {
      return AppID.sharedInstance.application(application, open: url, options: options)
  }
  
  func navigateToLoginWidget(_ sender : Any) {
    print("clicked")
    AppID.sharedInstance.loginWidget?.launch(delegate: SigninDelegate)
  }
  
}

我通常会在另一个名为 SigninDelegate.swift 的模块中使用此功能,但出于说明目的,我已将其包含在同一类中。

4

1 回答 1

0

根据官方文档

Swift 不支持宏,因此将其暴露给 React Native 需要更多设置,但工作方式相对相同。

所以是的,这是可能的,但需要一些设置。检查上面链接中的文档,了解设置它需要遵循的步骤。

于 2020-03-19T18:24:57.660 回答