---
sourceDocument: Xanadu API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ko-KR

ft:publication_title :

    - Xanadu API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# 애플리케이션에서 NowSDK 초기화

# 애플리케이션에서 NowSDK 초기화 {#ariaid-title1}

* 릴리스 버전: Xanadu
* 
* 업데이트 날짜 2024년 08월 01일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 4분

NowSDK에서 제공하는 기능에 액세스하려면 먼저 애플리케이션에서 NowSDK를 초기화해야 합니다.
초기화는 Mobile SDK 비동기식입니다. 응용 프로그램 대리자의 `application(application:didFinishLaunchingWithOptions:)` 함수에서와 같이 가능한 한 빨리 초기화 프로세스를 시작하는 것이 좋습니다. 초기화는 응용 프로그램 시작당 한 번만 수행하면 됩니다. 포그라운드 또는 새 장면이 감지될 때 다시 초기화할 필요가 없습니다.

다음 다이어그램은 NowSDK 및 기능 서비스의 초기화 순서를 보여줍니다.  

<br />

iOS 애플리케이션에서 초기화 ServiceNow Mobile SDK 하려면 JWT 공급자 정보를 사용하는 `NowSDKAuthorizationProviding`을 준수하는 권한 부여 공급자와 `DevicePermissionDelegate`를 준수하는 대리자가 필요합니다.

다음은 SDK 초기화 구조의 예입니다. 추가 코드 예제는 ServiceNow Mobile SDK 샘플 애플리케이션을 참조하십시오.

    // 

    //  JWTProvider.swift 

    import Foundation 
    import NowSDK 

    class JWTProvider: NowSDKAuthorizationProviding { 
      let token: String 

      init(token: String) { 
        self.token = token 
      } 

      func requestAuthorization(for instanceUrl: URL, completion: @escaping ([AuthorizationToken]?) -> Void) { 
        completion([AuthorizationToken(type: .jwt, token: token)]) 
      } 
    } 

    //
    //  PermissionProvider.swift 

    import Foundation
    import NowSDK 

    class PermissionProvider: DevicePermissionDelegate { 
      var isUserPermissionAllowed: Bool { Bool.random() } 

      func canRequestPermission(_ permission: DevicePermission) -> Bool { 
        guard isUserPermissionAllowed else { false } 
        return true 
      } 
    }

    //  
    //  AppDelegate.swift  

    import Foundation  
    import NowSDK  

    @main 
    class AppDelegate: UIResponder, UIApplicationDelegate { 
      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 

        let jwtProvider = JWTProvider(token: "a_valid_token") 
        let permissionDelegate = PermissionProvider()  
        let logLevel: NowLogLevel = .debug 

        let config = NowSDKConfiguration(authorizationProvider: jwtProvider, permissionDelegate: permissionProvider, logLevel: logLevel)  

        do { 
          try NowSDK.configure(with: config) 
        } catch { 
          // Handle 'error' 
        }

        return true 

    }

## 게스트 사용자 {#mobsdk-ios-init-nowsdk-in-app__section_cxw_xhx_kxb}

현재 사용자가 인증되지 않은 경우 게스트로 SDK 기능에 액세스할 수 있습니다. 현재 사용자가 게스트임을 나타내려면 아래와 같이 권한 부여 공급자의 requestAuthorization 함수가 게스트 형식의 AuthorizationToken으로 완료되어야 합니다. 이 경우 AuthorizationTokenType이 `.guest`로 설정되어 있는 한 토큰 값은 중요하지 않습니다. 게스트 사용자에 대한 자세한 내용은 다음 문서를 참조하십시오 [게스트 사용자 액세스 구성](https://servicenow-prod.fluidtopics.net/UkuMXY_9W6EsdCZA0IhEuA "인증되지 않은 사용자가 SDK 서비스에 액세스할 수 있도록 하려면 게스트 사용자 액세스를 허용하도록 인스턴스에서 ServiceNow 구성해야 Mobile SDK 합니다. 게스트 사용자는 NowWeb을 사용하여 인스턴스에서 호스팅되는 공용 웹 페이지를 보고, NowChat을 사용하여 게스트로 대화하고, NowTableService 및 NowGraphQLService를 사용하여 인스턴스의 공개 데이터에 액세스하고, NowAPIService를 사용하여 인증되지 않은 사용자를 위해 구성된 사용자 지정 API 서비스에 액세스할 수 있습니다.").

    //  GuestTokenProvider.swift 
    import Foundation 
    import NowSDK 
    class GuestTokenProvider: NowSDKAuthorizationProviding { 
        func requestAuthorization(for instanceUrl: URL,  
            completion: @escaping ([AuthorizationToken]?) -> Void) { 
            completion([AuthorizationToken(type: .guest, token: "")]) 
        } 
    } 

## SDK에서 사용자 로그아웃

사용자가 호스트 애플리케이션에서 로그아웃된 후 `NowSDK.logout()` 메서드를 호출하여 SDK에서 해당 사용자의 ServiceNow 세션과 토큰을 지워야 합니다. 예:  

    func onLogout() {
      NowSDK.logout()
    } 


