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