---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

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:didFinishLaunchingWithOptions:)` 関数など、できるだけ早い段階で開始することをお勧めします。初期化は、アプリケーションの起動ごとに 1 回だけ行う必要があります。フォアグラウンドになったときや新しいシーンが検出されたときに再初期化する必要はありません。

次の図は、NowSDK と機能サービスの初期化シーケンスを示しています。  

<br />

iOS アプリケーションで ServiceNow Mobile SDK を初期化するには、JWT プロバイダー情報を使用する `NowSDKAuthorizationProvending` に準拠する承認プロバイダーと、 `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/21CMf01Q~7t43BH5O25zDw "非認証ユーザーが SDK サービスにアクセスできるようにするには、ゲストユーザーアクセスを許可するように ServiceNow インスタンスのMobile SDKを構成する必要があります。ゲストユーザーは、 NowWeb を使用してインスタンスでホストされている公開 Web ページを表示し、 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()` メソッドを呼び出して、そのユーザーの ServiceNow セッションとトークンを SDK からクリアする必要があります。例：  

    func onLogout() {
      NowSDK.logout()
    } 


