본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] Tmap API 및 Tmap 앱 연동 (2) - iOS편

by 채연2 2022. 3. 16.

후... 반나절을 삽펐다.

 

 

tmap에서 ios sdk를 다운받고 압축 해제를 하면 아래와 같이 내용물이 들어있다.

혹시 sdk를 어떻게 다운받는지 모른다면 ☞여기😆☜를 클릭해서 보면 된다.

 

 

또, android 먼저 연동을 하고 싶다면 아래 포스팅을 참고하면 된다.

https://cording-cossk3.tistory.com/210

 

[Flutter] Tmap API 및 Tmap 앱 연동 (1) - Android편

https://openapi.sk.com/ SK open API Recopick 레코픽은 성능과 안정성이 검증된 실시간 개인화 추천엔진과 SK그룹사 데이터를 기반으로 다양한 개인화 서비스를 제공합니다. SK planet openapi.sk.com 위 사이트

cording-cossk3.tistory.com

 

 

실제 디바이스 기기에 앱을 올릴거면 배포 폴더

시뮬레이터에 앱을 올릴거면 개발 폴더를 들어가자.

※ 혹시 앱을 배포할 예정이면 배포 폴더의 sdk를 사용해야 한다.

 

 

자, 그리고 flutter 프로젝트\ios\Runner.xcworkspace를 열고, 프로젝트 > General 창을 띄우자

 

 

그리고 해당 폴더 안에 있는 SDK 폴더를

General > Frameworks, Libraries, and Embedded Content 안으로 드래그 드롭 해준다.

 

 

 

 

근데 난.. import TMapSDK 를 하려고 하면 자꾸 No such module 에러가 떴다...

그래서 해결한 방법은 다운받았던 ios SDK 폴더에 '샘플' 폴더가 있을 것이다.

샘플 폴더의 예제 프로젝트를 열어서 안에 내제되어 있는 TMap SDK를 General > Frameworks, Libraries, and Embedded Content 으로 드래그 드롭했다.

 


설정은 끝났고, 코드를 작성해보자.

 

 

AppDelegate.swift

import UIKit
import Flutter
import TMapSDK

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, TMapTapiDelegate {
    let appKey:String = "xxxxx";
    
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
      let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
      let channel = FlutterMethodChannel(name: "mobile/parameters", binaryMessenger: controller.binaryMessenger)

      channel.setMethodCallHandler({
          [weak self] (call: FlutterMethodCall, result: FlutterResult) -> Void in
          
          switch (call.method) {
          case "initTmapAPI":
              self?.initTmapAPI()
              result("initTmapAPI")
              break;
          case "isTmapApplicationInstalled":
              if (TMapApi.isTmapApplicationInstalled()) {
                  result("")
              } else {
                 let url = TMapApi.getTMapDownUrl()
                  result(url)
              }
              break;
          default:
              result(FlutterMethodNotImplemented)
              break;
          }
      })
      
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
    
    private func initTmapAPI() {
        TMapApi.setSKTMapAuthenticationWithDelegate(self, apiKey: appKey)
    }
}

 

 

 

flutter 코드는 Android편에 작성된 것 그대로 사용한다.

근데 여기서 문제가 생겼다.

 

url_launcher 라이브러리를 사용하려고 하니... ios에서는 canLauncher(url) 함수가 항상 false만 리턴한다.

pub.dev에 들어가 다시 확인해보니, 설정해야 할 것들이 있었다.

 

 

Info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>https</string>
  <string>http</string>
</array>

 

 

 

근데 설정을 해줘도 난 계속 안되길래.... 1시간 삽푸다가 결국 알아냈다.

url에 한글이 들어가서였다..............이런............................. ㅠ

 

url 한글 해결방법은 아래와 같다.

String url = "${Uri.encodeFull("https://한글.com")}";

 

 


같이 보면 좋은 글 ▼

https://cording-cossk3.tistory.com/203

 

[Flutter] 네이버 Maps API 사용하기

네이버 지도 api 사이트 바로가기 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com 위 링크를 통해 이동하면 아래와 같은 화면

cording-cossk3.tistory.com

 

 

https://cording-cossk3.tistory.com/198

 

[Flutter] Google Map API 사용하기

하나하나 자세하게 알려주는 블로그가 없어 내가 직접 포스팅한다. 우선 Google Cloud Platform으로 이동하자! Google Cloud Platform 이동 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Pla

cording-cossk3.tistory.com

 

https://cording-cossk3.tistory.com/208

 

[Flutter] Kakao Map api 사용하기

카카오 developer 사이트 바로가기 카카오계정 accounts.kakao.com [ + 애플리케이션 추가하기] 클릭 앱 이름, 사업자명 입력 후 저장 그럼 다음과 같이 리스트에 애플리케이션이 추가된 것을 확인 가능.

cording-cossk3.tistory.com

 

 

 

 

 

 

320x100

댓글