설치하기
Git Repository
요구 사항
토스 iOS SDK를 설치하기 전에 최소 요구 사항을 확인하세요.
•
iOS 14.0 이상
•
Swift 5.0 이상
Swift Package Manager(SPM)로 설치하기
Xcode에서 아래 토스 iOS SDK의 레포지토리(Repository) URL를 검색 후 추가하세요.
https://github.com/toss/toss-sdk-ios.git
Plain Text
복사
사전 설정
앱 실행 허용 목록 설정
토스앱을 열 수 있는지 확인할 수 있게 Info.plist 파일에 Array 타입 키(Key)인 LSApplicationQueriesSchemes를 추가하고, 해당 키의 [Item]으로 "supertoss"를 추가하세요. 추가하지 않으면 토스앱이 열리지 않아요.
URL Scheme 설정
로그인 후 서비스 앱으로 돌아오기 위해, [Info] > [URL Types] > [URL Schemes]에 toss${APP_KEY}를 추가하세요. 예를 들어 앱 키가 "AB12CD34EF56GH78"이라면 [URL Schemes]에 "tossAB12CD34EF56GH78"를 입력하세요.
시작하기
SDK 초기화
AppDelegate.swift에 앱 키를 사용해 SDK를 초기화하는 과정이 필요해요.
import TossFoundation
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
TossSDK.shared.initSDK(appKey: "${APP_KEY}")
...
}
Plain Text
복사
토스 로그인
토스로 로그인을 하기 위한 설정이에요.
로그인 완료 처리를 위한 설정
사용자가 토스앱에서 [동의하기] 버튼 또는 [닫기] 버튼을 누르면 토스앱에서 서비스앱으로 이동해요. 서비스앱으로 돌아왔을 때 정상적으로 완료하기 위해 AppDelegate.swift 또는 SceneDelegate.swift 파일에 handleOpenUrl(_:)을 추가하세요.
AppDelegate.swift:
import TossLogin
...
class AppDelegate: UIResponder, UIApplicationDelegate {
...
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if TossLoginController.shared.isCallbackURL(url) {
return TossLoginController.shared.handleOpenUrl(url)
}
return false
}
...
}
Swift
복사
SceneDelegate.swif:
import TossLogin
...
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url, TossLoginController.shared.isCallbackURL(url) {
_ = TossLoginController.shared.handleOpenUrl(url)
}
}
...
}
Swift
복사
로그인 요청
토스로 로그인을 하기 위해, login(completion:)을 호출하세요. isLoginAvailable 변수로 토스앱 실행 가능 여부를 확인할 수 있어요.
사전 설정의 앱 실행 허용 목록 설정을 하지 않으면 토스앱이 설치되어 있어도, 토스앱을 실행할 수 없어요.
토스앱이 설치되어있지 않아 실행이 불가능하면, moveToAppstore()를 호출해 앱스토어로 이동할 수 있어요.
guard TossLoginController.shared.isLoginAvailable else {
TossLoginController.shared.moveToAppstore()
return
}
TossLoginController.shared.login(completion: { result in
switch result {
case let .success(authCode):
// authCode 를 통해 accessToken을 발급받으세요.
break
case let .error(error):
print("error code : \(error.code), error message: \(error.message)")
case .cancelled:
// 사용자가 취소했어요.
break
}
})
Swift
복사
앱 없이 로그인[iOS]
현재 토스앱은 웹 로그인을 지원하지 않습니다.
IOS에 한하여 기존(토스앱이 없으면 앱스토어로 이동)기능 업그레이드하여 토스앱이 없이 로그인 할 경우 팝업으로 사용자에게 안내하는 기능을 추가하였습니다. 기존 IOS SDK를 하기 내용 참고하시어 변경 부탁드립니다.
변경 요청
AS-IS
현재 토스 로그인이 불가능한 상태이면, moveToAppstore() 함수를 통해 앱스토어로 이동을 권장하고 있습니다.
guard TossLoginController.shared.isLoginAvailable else {
TossLoginController.shared.moveToAppstore() <- 이부분
return
}
TossLoginController.shared.login(completion: { result in
switch result {
case let .success(authCode):
// authCode 를 통해 accessToken을 발급받으세요.
break
case let .error(error):
print("error code : \(error.code), error message: \(error.message)")
case .cancelled:
// 사용자가 취소했어요.
break
}
})
Swift
복사
TO-BE
토스 로그인이 불가능한 상태이면, 앱스토어로 이동하지 않고, 이용할수 없다는 팝업을 추가해주세요.
문구와 팝업 디자인은 이용기관의 스타일에 맞게 커스텀해주세요.
guard TossLoginController.shared.isLoginAvailable else {
let alertController = UIAlertController(
title: "토스앱이 없어요",
message: "토스앱이 없어서 토스로 로그인할 수 없어요. 다른 로그인을 이용해주세요.",
preferredStyle: .alert
)
alertController.addAction(UIAlertAction(title: "확인", style: .default))
present(alertController, animated: true)
return
}
TossLoginController.shared.login(completion: { result in
switch result {
case let .success(authCode):
// authCode 를 통해 accessToken을 발급받으세요.
break
case let .error(error):
print("error code : \(error.code), error message: \(error.message)")
case .cancelled:
// 사용자가 취소했어요.
break
}
})
Swift
복사
샘플 이미지
