async 가 없을 때
@objc func getReports( _ fromDate: String, toDate: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock ) -> Void{ if self.reports == nil { reject("0", "createReports 선행 필요", nil) return; } print("test") }
// objective-c의 .m 파일 RCT_EXTERN_METHOD( getReports: (NSString *)fromDate toDate: (NSString *)toDate resolve: (RCTPromiseResolveBlock)resolve reject: (RCTPromiseRejectBlock)reject )

에러 없이 잘 실행된다.
swift로 작성한 함수가 obj-c로 잘 변환되어, RN에서 호출에도 문제 없었다.
async를 붙였을 때
@objc func getReports( _ fromDate: String, toDate: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock ) async -> Void{ if self.reports == nil { reject("0", "createReports 선행 필요", nil) return; } print("test") }
// objective-c의 .m 파일 RCT_EXTERN_METHOD( getReports: (NSString *)fromDate toDate: (NSString *)toDate resolve: (RCTPromiseResolveBlock)resolve reject: (RCTPromiseRejectBlock)reject )
이건 바꾸지 않았다. 동일하게 export 한다

메소드를 찾을 수 없다고 나온다.
해결방안
클로저
var reports: Asleep.Reports? let fromDate: String = "2023-05-01" let toDate: String = "2023-05-07" // Closure reports?.reports(from: fromDate, to: toDate, completionBlock: { (reportSessions: [Asleep.Model.SleepSession]?, error: Asleep.AsleepError?) in if let error { print(error) return } if let reportSessions { } }) // Async Task { do { let reportSessions = try await reports?.report(sessionId: sessionId) } catch { print(error) } }
Asleep SDK 설명서에 나와있는 Async를 쓰고 싶었는데, 이건 활용하지 못하고
Closure를 이용하여 해결함