iOSアプリケーションでのプッシュ通知の設定
プッシュ通知を設定するために ServiceNow インスタンスで実行する必要があるタスクに加えて、 iOS アプリケーションに特定のコードを含める必要もあります。
NowSDK NowPushService の作成
アプリケーションで最初に行う必要があることの 1 つは、 NowPushService を作成することです。NowPush SDK は、このサービスを作成するためのファクトリ関数を提供します。次のスニペットのようなコードをメインコード本文の早い段階で追加します。
func setup(with instanceURL: URL) -> AnyPublisher<NowService, ConfigurationError> {
NowPush.makePushService(instanceUrl: instanceURL)
.mapError { .sdkError($0) }
.map { $0 as NowService }
.eraseToAnyPublisher()
}
NowPush.makePushService() メソッドの詳細については、「NowPush API - iOS」を参照してください。
プッシュトークンを登録する
Apple は、プッシュ通知を受信するデバイスとアプリケーションを識別する一意のプッシュ通知トークンを提供します。アプリケーションがプッシュ通知を受信できるようにするには、 NowPushService を使用してこのトークンを登録する必要があります。iOSアプリケーションに次のような関数を追加します。このアプリケーションは、 ServiceNow インスタンスに登録する必要があります。
func registerForPushNotifications(deviceToken: Data) {
pushService.registerPushToken(deviceToken,
pushAppName: "TestPushApp", // Modify this to be your iOS application name
environment: environment) { [weak self] result in
guard let self = self else { return }
switch result {
case .success:
UserDefaults.standard.set(true, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .registrationSuccess
case .failure:
UserDefaults.standard.set(false, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .registrationFailed
}
}
}
registerPushToken() メソッドの詳細については、「NowPushService - registerPushToken(_token: Data, pushAppName: String, environment: NowPushEnvironment, completion: @escaping (Result<Data, NowPushError>) -> Void)」を参照してください。
プッシュトークンを登録解除
ユーザーがログアウトするときなど、ユーザーがアプリケーションを終了するたびに、プッシュトークンの登録を解除する必要があります。プッシュトークンを登録解除するには、次のコードスニペットのようなコードを使用します。pushAppNameをiOSアプリケーションの名前に変更してください。
func unregisterFromPushNotifications(deviceToken: Data) {
pushService.unregisterPushToken(deviceToken, pushAppName: "TestPushApp", environment: environment) { [weak self] result in
guard let self = self else { return }
switch result {
case .success:
UserDefaults.standard.set(false, forKey: "pushNotificationsRegistered")
self.pushRegistrationState = .unregisterSuccess
case .failure:
self.pushRegistrationState = .unregisterFailed
}
}
}
unregisterPushToken() メソッドの詳細については、「NowPushService - unregisterPushToken(_token: Data, pushAppName: String, environment: NowPushEnvironment, completion: @escaping (Result<Data, NowPushError>) -> Void)」を参照してください。
プッシュペイロードを解析
情報を収集し、アプリケーションの他の部分でデータを使用するには、プッシュ通知ペイロードを NowPushPayload オブジェクトに解析する必要があります。現在、これは仮想エージェントプッシュ通知でのみ使用できます。次のようなコードを使用します
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
guard let pushService = pushService else {
completionHandler()
return
}
let userInfo = response.notification.request.content.userInfo
_ = pushService.payloadFromUserInfo(userInfo)
.flatMap(handleNowPushPayload)
}
func handleNowPushPayload(_ payload: NowPushPayload) -> Result<Void, NowPushError> {
guard payload is NowPushVirtualAgent else {
return .failure(NowPushError.unsupportedData)
}
launchVirtualAgent()
return .success(())
}