NowPushService クラス: iOS

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:7分
  • NowPushService クラスは、プッシュ通知サービスとの対話を可能にする関数を提供します。

    表 : 1. プロパティ
    名前 Description (説明)
    構成 サービスが初期化されたときに指定された構成設定。

    データ型: NowServiceConfiguration

    NowPushService - registerPushToken(_token: Data, pushAppName: String, environment: NowPushEnvironment, completion: @escaping (Result<Data, NowPushError>) -> Void)

    現在のiOSデバイスと指定されたアプリケーションのプッシュ通知を識別するために使用されるServiceNowインスタンスに一意のトークンを登録します。

    表 : 2. パラメーター
    名前 タイプ Description (説明)
    _トークン Data (データ) 登録するプッシュトークンのデータオブジェクト。これは、 Apple 開発者サイトから取得したトークンです。詳細については、『 Mobile SDK 開発者ガイド - iOS』を参照してください。
    プッシュアプリ名 文字列 このトークンが登録されているプッシュアプリケーションの名前。
    環境 NowPushEnvironment トークンが登録されている環境。
    有効な値:
    • 本番
    • サンドボックス
    完了 @escaping (Result<Data, NowPushError>) → void トークンの登録が試行された後に実行する完了ハンドラー。
    • 成功:iOS プッシュ通知証明書。
    • エラー:NowPushError - トークンを登録しようとしたときに発生したエラーに関する情報。
      可能な値:
      • decoding: デコードエラーが発生しました。
      • httpRequestFailure:http 呼び出しが成功しなかった場合に返される汎用エラー (2xx)。
      • notAuthorized:要求者に、指定されたプッシュ通知操作を実行する権限がありません。
      • unsupportedData:プッシュペイロードが無効です。
    表 : 3. 返される内容
    タイプ 説明
    なし

    この例では、TestPushApp アプリケーションのプッシュ通知トークンを登録する方法を示します。

    func registerForPushNotifications(deviceToken: Data) {
      pushService.registerPushToken(deviceToken,
          pushAppName: "TestPushApp",
          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
        }
      }
    }

    NowPushService - unregisterPushToken(_token: Data, pushAppName: String, environment: NowPushEnvironment, completion: @escaping (Result<Data, NowPushError>) -> Void)

    以前に登録したプッシュトークンを登録解除します。

    表 : 4. パラメーター
    名前 タイプ Description (説明)
    _トークン Data (データ) 登録解除するプッシュトークンのデータオブジェクト。
    プッシュアプリ名 文字列 このトークンを登録解除するプッシュアプリケーションの名前。
    環境 NowPushEnvironment トークンが登録されている環境。
    有効な値:
    • 本番
    • サンドボックス
    完了 @escaping (Result<Data, NowPushError>) → void トークンの登録解除が試行された後に実行する完了ハンドラー。
    • 成功: API 応答データ。
    • エラー: NowPushError - トークンの登録解除を試みたときに発生したエラーに関する情報。
      可能な値:
      • decoding: デコードエラーが発生しました。
      • httpRequestFailure:http 呼び出しが成功しなかった場合に返される汎用エラー (2xx)。
      • notAuthorized:要求者に、指定されたプッシュ通知操作を実行する権限がありません。
      • unsupportedData:プッシュペイロードが無効です。
    表 : 5. 返される内容
    タイプ 説明
    なし

    この例では、TestPushApp アプリケーションに関連付けられているプッシュ通知トークンを登録解除する方法を示します。

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

    NowPushService - payloadFromUserInfo(_userInfo: [AnyHashable:任意])

    userInfo のキーと値のペアを解析して NowPushPayload オブジェクトにします。

    表 : 6. パラメーター
    名前 タイプ Description (説明)
    _userInfo [AnyHashable:任意] プッシュ通知の一部として受信したプッシュペイロードコンテンツ。
    表 : 7. 返される内容
    タイプ Description (説明)
    Result<NowPushPayload、NowPushError> ペイロード解析の結果を返します。
    • 成功: NowPushPayload オブジェクトを解析しました。
    • エラー: NowPushError - 指定されたユーザーペイロードの解析中に発生したエラーに関する情報。
      可能な値:
      • decoding: デコードエラーが発生しました。
      • httpRequestFailure:http 呼び出しが成功しなかった場合に返される汎用エラー (2xx)。
      • notAuthorized:要求者に、指定されたプッシュ通知操作を実行する権限がありません。
      • unsupportedData:プッシュペイロードが無効です。

    この例では、ユーザー ペイロードを解析する方法を示します。

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