Я добавил код для вызова функции swift из реактивной системы, и она работает нормально. Я использовал Shopify mobile-buy-sdk- ios для входа пользователя, и после входа в систему пользователь возвращает маркер доступа, эта функция входа использовала завершение .
Поэтому я хочу вернуть этот токен доступа в мой файл js. Я знаю, что могу сделать это с помощью функции обратного вызова, но вопрос в том, куда поместить эту функцию обратного вызова
Вот мой код входа в систему. js
NativeModules.Counter.getLogin(value => {
console.warn("access token " + value)
})
login.m
RCT_EXTERN_METHOD(getLogin: (RCTResponseSenderBlock)callback)
login.swift
import Foundation
import MobileBuySDK
@objc(Counter)
class Counter: NSObject {
private let client: Graph.Client = Graph.Client(
shopDomain: "mydomain",
apiKey: "12309080999"
)
private override init() {
self.client.cachePolicy = .cacheFirst(expireIn: 3600)
}
typealias completion = (_ success:String) -> Void
@objc
func getLogin(email: String, password: String, _ callback: RCTResponseSenderBlock) {
let myLogin = login(email: "john.smith@gmail.com",password: "123456", completion: { (success) -> Void in
})
//callback([count])
}
@objc
func login(email: String, password: String, completion: @escaping (String?) -> Void) {
let mutation = ClientQuery.mutationForLogin(email: "john.smith@gmail.com", password: "123456")
let task = client.mutateGraphWith(mutation) { (mutation, error) in
error.debugPrint()
if let container = mutation?.customerAccessTokenCreate?.customerAccessToken {
completion(container.accessToken)
//res = container.accessToken
} else {
let errors = mutation?.customerAccessTokenCreate?.customerUserErrors ?? []
print("Failed to login customer: \(errors)")
completion(nil)
}
}
task.resume()
}
}
extension Optional where Wrapped == Graph.QueryError {
func debugPrint() {
print("testingngngn")
switch self {
case .some(let value):
print("Graph.QueryError: \(value)")
case .none:
break
}
}
}
Заранее спасибо за помощь, я пробую ее за последние 2 дня, поэтому, пожалуйста, любой может иметь решение, пожалуйста, дайте мне.
Спасибо