アプリケーションで NowSDK を初期化する

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • NowSDK によって提供される機能にアクセスするには、まずアプリケーションで NowSDK を初期化する必要があります。

    Mobile SDKの初期化は非同期です。初期化プロセスは、アプリケーション デリゲートの アプリケーション (application:didFinishLaunchingWithOptions:) 関数など、できるだけ早い段階で開始することをお勧めします。初期化は、アプリケーションの起動ごとに 1 回だけ行う必要があります。フォアグラウンドになったときや新しいシーンが検出されたときに再初期化する必要はありません。

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


    MobileSDK 統合フロー図

    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 
    
    }

    ゲストユーザー

    現在のユーザーが認証されていない場合は、ゲストとして SDK 機能にアクセスできます。現在のユーザーがゲストであることを示すには、次に示すように、承認プロバイダーの requestAuthorization 関数を AuthorizationToken のゲスト型で完了する必要があります。この場合のトークン値は、 AuthorizationTokenType.guest に設定されている限り重要ではありません。ゲストユーザーの詳細については、「 ゲストユーザーアクセスの設定」を参照してください。

    //  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()
    }