kakao / kakao_flutter_sdk

Flutter SDK for Kakao Open API
Apache License 2.0
193 stars 70 forks source link

iOS에서 requestWithTalk() #79

Closed shawn-vp closed 3 years ago

shawn-vp commented 3 years ago

제목대로 iOS에서 카카오톡이 깔려있을 때 requestWithTalk()를 호출하면 카카오톡이 실행되고 다시 앱으로 돌아오는데 그 이후의 결과를 반환하지 않습니다. String값을 반환하지 않고 에러또한 발생하지 않아서 어떤게 문제인지 모르겠습니다.

flutter 1.22.6, kakao_flutter_sdk 0.5.4

mbkim95 commented 3 years ago

안녕하세요~

혹시 AppDelegate.swift 에서 application 메소드를 override 하셨나요?

shawn-vp commented 3 years ago

@mbkim95 넵 맞습니다

mbkim95 commented 3 years ago
 override func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    /*
    기타 코드들
    */
    return super.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
  }

위와 같은 형태로 application 메소드를 수정하시고 다시 실행해보시겠어요?

shawn-vp commented 3 years ago

@mbkim95 flutter: runZonedGuarded: Caught error in my root zone. flutter: error: MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core) [VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() 이런 오류가 뜨고 시작을 안하네요.. 최근에 딥링크 기능을 추가한다고 app_links란 패키지를 추가하고나서부터 생긴 문제라 app_links패키지를 제외하고 캐시 다 지우고 해보니까 정상 작동이 됐는데 혹시 집히는게 있을까요?

mbkim95 commented 3 years ago

app_links 패키지는 저희가 관리하는 패키지가 아니라서 말씀하신 부분에 대한 내용은 잘 모르겠습니다.ㅠㅠ

application 메소드 구현하신 코드 첨부 가능하실까요?

shawn-vp commented 3 years ago
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("google map api key")
    GeneratedPluginRegistrant.register(with: self)

    if #available(iOS 10.0, *) {
      UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
    }

    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

이렇게 되어있습니다!

mbkim95 commented 3 years ago

@shawn-vp 첨부해주신 코드는 정상 동작하지 않는 코드인가요?

shawn-vp commented 3 years ago

requestWithTalk()가 호출되고 카톡이 켜지고 나서 받는 url을 딥링크 라이브러리가 훔쳐가서 requestWithTalk()가 반환도 안하고 에러도 안던지는거였습니다.. 답변중에 override func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) 이 부분이 힌트가 돼서 문제 해결했습니다. 빠른 답변 감사합니다!

gentlejo commented 3 years ago

네이버 로그인과 함께 사용하는 경우 이슈 해결 참고 https://github.com/kakao/kakao_flutter_sdk/issues/25