Classe NowPushService : iOS

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • La classe NowPushService fournit des fonctions qui activent l’interaction avec le service de notification push.

    Tableau 1. Propriétés
    Nom Description
    configuration Paramètres de configuration fournis lors de l’initialisation du service.

    Type de données : NowServiceConfiguration

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

    Enregistre un jeton unique avec l’instance ServiceNow utilisée pour identifier les notifications push pour l’appareil actuel iOS et l’application spécifiée.

    Tableau 2. Paramètres
    Nom Type Description
    _jeton Données Objet de données du jeton push à inscrire. Il s’agit du jeton obtenu sur le Apple site développeur. Pour en savoir plus, consultez le Guide du Mobile SDK développeur - iOS.
    pushAppName (en anglais seulement) Chaîne Nom de l’application push pour laquelle ce jeton est enregistré.
    environnement NowPushEnvironment (en anglais seulement) Environnement pour lequel le jeton est enregistré.
    Valeurs valides :
    • production
    • Bac à sable
    achèvement @escaping (Result<Data, NowPushError>) → Void Gestionnaire de complétion à exécuter après la tentative d’enregistrement du jeton.
    • Réussite : certificat de notification push iOS.
    • Erreur : NowPushError : informations sur l’erreur qui s’est produite lors de la tentative d’enregistrement du jeton.
      Valeurs possibles :
      • décodage : Une erreur de décodage s’est produite.
      • httpRequestFailure : erreur générique renvoyée chaque fois que l’appel http échoue (2xx).
      • notAuthorized : le demandeur n’est pas autorisé à effectuer l’opération de notification push spécifiée.
      • unsupportedData : la charge utile push n’est pas valide.
    Tableau 3. Renvoie
    Type Description
    Aucun

    Cet exemple montre comment enregistrer un jeton de notification push pour l’application 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)

    Annule l’enregistrement d’un jeton push précédemment enregistré.

    Tableau 4. Paramètres
    Nom Type Description
    _jeton Données Objet de données du jeton push à désinscrire.
    pushAppName (en anglais seulement) Chaîne Nom de l’application push pour laquelle ce jeton est désinscrit.
    environnement NowPushEnvironment (en anglais seulement) Environnement pour lequel le jeton est enregistré.
    Valeurs valides :
    • production
    • Bac à sable
    achèvement @escaping (Result<Data, NowPushError>) → Void Gestionnaire de complétion à exécuter après la tentative d’annulation de l’inscription du jeton.
    • Réussite : données de réponse de l’API.
    • Erreur : NowPushError : informations sur l’erreur qui s’est produite lors de la tentative d’annulation de l’enregistrement du jeton.
      Valeurs possibles :
      • décodage : Une erreur de décodage s’est produite.
      • httpRequestFailure : erreur générique renvoyée chaque fois que l’appel http échoue (2xx).
      • notAuthorized : le demandeur n’est pas autorisé à effectuer l’opération de notification push spécifiée.
      • unsupportedData : la charge utile push n’est pas valide.
    Tableau 5. Renvoie
    Type Description
    Aucun

    Cet exemple montre comment annuler l’inscription du jeton de notification push associé à l’application 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 : Any])

    Analyse les paires clé-valeur userInfo en un objet NowPushPayload .

    Tableau 6. Paramètres
    Nom Type Description
    _userInfo [AnyHashable : N’importe lequel] Contenu de la charge utile push reçu dans le cadre de la notification push.
    Tableau 7. Renvoie
    Type Description
    Résultat <NowPushPayload, NowPushError> Renvoie les résultats de l’analyse de la charge utile.
    • Réussite : objet NowPushPayload analysé.
    • Échec : NowPushError : informations sur l’erreur qui s’est produite lors de l’analyse de la charge utile de l’utilisateur spécifié.
      Valeurs possibles :
      • décodage : Une erreur de décodage s’est produite.
      • httpRequestFailure : erreur générique renvoyée chaque fois que l’appel http échoue (2xx).
      • notAuthorized : le demandeur n’est pas autorisé à effectuer l’opération de notification push spécifiée.
      • unsupportedData : la charge utile push n’est pas valide.

    Cet exemple montre comment analyser la charge utile d’un utilisateur.

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