アプリケーションでのプッシュ通知 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: 文字列, environment: NowPushEnvironment, completion: @escaping (Result<Data, NowPushError>) -> Void)。
プッシュトークンの登録を解除する
ユーザーがログアウトしたときなど、ユーザーがアプリケーションを終了するたびに、プッシュトークンの登録を解除する必要があります。次のコード スニペットのようなコードを使用して、プッシュ トークンの登録を解除します。必ずアプリケーションiOSの名前に変更してくださいpushAppName。
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: 文字列, 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(())
}