https://github.com/toss/toss-sdk-ios
https://github.com/toss/toss-sdk-ios
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/toss/toss-sdk-ios
- Owner: toss
- License: mit
- Created: 2023-08-31T08:03:13.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-01T08:01:44.000Z (almost 2 years ago)
- Last Synced: 2025-05-03T13:40:25.923Z (about 1 year ago)
- Language: Swift
- Size: 14.6 KB
- Stars: 8
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# 토스 iOS SDK
토스 iOS SDK를 위한 모노레포입니다.
## 설치하기
### 요구 사항
토스 iOS SDK를 설치하기 전에 최소 요구 사항을 확인하세요.
- iOS 13.0 이상
- Swift 5.7 이상
### Swift Package Manager(SPM)로 설치하기
Xcode에서 아래 토스 iOS SDK의 레포지토리(Repository) URL를 검색 후 추가하세요.
```
https://github.com/toss/toss-sdk-ios.git
```
## 사전 설정
### 앱 실행 허용 목록 설정
토스앱을 열 수 있는지 확인할 수 있게 `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를 초기화하는 과정이 필요해요.
```swift
import TossFoundation
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
TossSDK.shared.initSDK(appKey: "${APP_KEY}")
...
}
```
### 토스 로그인
토스로 로그인을 하기 위한 설정이에요.
#### 로그인 완료 처리를 위한 설정
사용자가 토스앱에서 [동의하기] 버튼 또는 [닫기] 버튼을 누르면 토스앱에서 서비스앱으로 이동해요.
서비스앱으로 돌아왔을 때 정상적으로 완료하기 위해 `AppDelegate.swift` 또는 `SceneDelegate.swift` 파일에 `handleOpenUrl(_:)`을 추가하세요.
AppDelegate.swift:
```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
}
...
}
```
SceneDelegate.swift:
```swift
import TossLogin
...
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set) {
if let url = URLContexts.first?.url, TossLoginController.shared.isCallbackURL(url) {
_ = TossLoginController.shared.handleOpenUrl(url)
}
}
...
}
```
##### 로그인 요청
토스로 로그인을 하기 위해, `login(policy:completion:)`을 호출하세요.
`isLoginAvailable` 변수로 토스앱 실행 가능 여부를 확인할 수 있어요.
> 사전 설정의 `앱 실행 허용 목록 설정`을 하지 않으면 토스앱이 설치되어 있어도, 토스앱을 실행할 수 없어요.
토스앱이 설치되어있지 않아 실행이 불가능하면, `moveToBridgePageForNoApp()`를 호출해 앱 설치를 유도하는 웹화면으로 이동할 수 있어요.
```swift
guard TossLoginController.shared.isLoginAvailable else {
TossLoginController.shared.moveToBridgePageForNoApp()
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
}
})
```