Initialize the NowSDK in your application
Summarize
Summary of Initialize the NowSDK in your application
To utilize the NowSDK in your application, it must first be initialized. This asynchronous process should ideally begin in the application delegate'sapplication(application:didFinishLaunchingWithOptions:)function. Initialization is a one-time process per application launch and does not need to be repeated when the app is foregrounded or when new scenes are detected.
Show less
Key Features
- Authorization Provider: Implement
NowSDKAuthorizationProvidingfor JWT provider information. - Permission Delegate: Implement
DevicePermissionDelegateto manage device permissions. - Guest Access: Allow unauthenticated users to access SDK functionality through a guest authorization token.
- Logout Functionality: Clear user sessions and tokens by invoking
NowSDK.logout()upon user logout.
Key Outcomes
By following the initialization process, you can ensure that your application properly integrates with the NowSDK, allowing for secure access to its features. You will also be able to control user access levels, including guest access, and manage user sessions effectively.
To access the functionality provided by the NowSDK, you must first initialize the NowSDK in your application.
The Mobile SDK initialization is asynchronous. It is a good practice to start the initialization process as early as possible, such as in the application delegate’s
application(application:didFinishLaunchingWithOptions:) function. Initialization only needs to occur once per application launch. There is no need to reinitialize when foregrounded or when a new scene is
detected.
The following diagram shows the initialization sequence for NowSDK and feature services:
To initialize the ServiceNow
Mobile SDK in your iOS application you’ll need an authorization provider conforming to NowSDKAuthorizationProviding, which uses your JWT provider information, and a delegate conforming to
DevicePermissionDelegate.
The following is an example of a structure of an SDK initialization. For additional code examples, refer to the ServiceNow Mobile SDK sample application.
//
// 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
}
Guest users
If the current user is not authenticated, it is possible to for them to access SDK functionality as a guest. To indicate that the current user is a guest, the requestAuthorization function in the authorization
provider should complete with a guest type of AuthorizationToken, as shown below. The token value in this case is not important so long as the AuthorizationTokenType is set to
.guest. For additional information on guest users, see Configure guest user access.
// GuestTokenProvider.swift
import Foundation
import NowSDK
class GuestTokenProvider: NowSDKAuthorizationProviding {
func requestAuthorization(for instanceUrl: URL,
completion: @escaping ([AuthorizationToken]?) -> Void) {
completion([AuthorizationToken(type: .guest, token: "")])
}
}
Logging users out of the SDK
After a user is logged out of a host application, you should call the NowSDK.logout() method to clear that user's ServiceNow sessions and tokens from the SDK. For example:
func onLogout() {
NowSDK.logout()
}