アプリケーションで NowSDK を初期化する
NowSDK によって提供される機能にアクセスするには、まずアプリケーションで NowSDK を初期化する必要があります。
Mobile SDKの初期化は非同期です。初期化プロセスは、アプリケーション デリゲートの アプリケーション (application:didFinishLaunchingWithOptions:) 関数など、できるだけ早い段階で開始することをお勧めします。初期化は、アプリケーションの起動ごとに 1 回だけ行う必要があります。フォアグラウンドになったときや新しいシーンが検出されたときに再初期化する必要はありません。
次の図は、NowSDK と機能サービスの初期化シーケンスを示しています。
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()
}