후... 반나절을 삽펐다.
tmap에서 ios sdk를 다운받고 압축 해제를 하면 아래와 같이 내용물이 들어있다.
혹시 sdk를 어떻게 다운받는지 모른다면 ☞여기😆☜를 클릭해서 보면 된다.
또, android 먼저 연동을 하고 싶다면 아래 포스팅을 참고하면 된다.
https://cording-cossk3.tistory.com/210
실제 디바이스 기기에 앱을 올릴거면 배포 폴더
시뮬레이터에 앱을 올릴거면 개발 폴더를 들어가자.
※ 혹시 앱을 배포할 예정이면 배포 폴더의 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
https://cording-cossk3.tistory.com/198
https://cording-cossk3.tistory.com/208
'프로그래밍 > Flutter-Dart' 카테고리의 다른 글
[Flutter] naver_map_plugin 사용하여 특정 위치로 이동하기 (0) | 2022.03.17 |
---|---|
[Flutter] Search 검색 기능 (SearchDelegate) (0) | 2022.03.17 |
[Flutter] 카카오내비 앱 연동하기 (2) - iOS (0) | 2022.03.16 |
[Flutter] Tmap API 및 Tmap 앱 연동 (1) - Android편 (0) | 2022.03.15 |
[Flutter] 카카오내비 앱 연동하기 (1) - Android (0) | 2022.03.11 |
댓글