アプリケーションでのプッシュ通知 iOS の設定

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • プッシュ通知を設定するためにインスタンスで実行する 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&lt;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&lt;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(())
    }