Configuração de notificações por push no seu iOS aplicação

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 2 min. de leitura
  • Além das tarefas que você deve executar no ServiceNow instância para configurar uma notificação por push, você também deve incluir um código específico em iOS aplicação.

    Crie o NowSDK NowPushService

    Uma das primeiras coisas que precisa ser feito em sua aplicação é criar um NowPushService . . NowPush O SDK fornece uma função de fábrica para criar este serviço. Adicione um código semelhante ao snippet a seguir antecipadamente no corpo do código principal.

    func setup(with instanceURL: URL) -> AnyPublisher<NowService, ConfigurationError> {
      NowPush.makePushService(instanceUrl: instanceURL)
        .mapError { .sdkError($0) }
        .map { $0 as NowService }
        .eraseToAnyPublisher()
    }

    Para obter informações adicionais sobre NowPush.makePushService() método, consulte NowPush API - iOS.

    Registre o token de push

    Apple fornece um token de notificação por push exclusivo que identifica o dispositivo e a aplicação para receber notificações por push. Para que uma aplicação receba notificação por push, você deve registrar este token usando NowPushService . Adicione uma função semelhante ao snippet de código a seguir em seu iOS aplicação. Esta aplicação deve ser registrada com seu ServiceNow instância.

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

    Para obter informações adicionais sobre RegisterPushToken() método, consulte NowPushService - registerPushToken(_token: Dados, pushAppName: Cadeia de caracteres, ambiente: NowPushEnvironment, conclusão: Escape (<Data, NowPushError>) -> Vazio).

    Cancele o registro do token de push

    Você precisa cancelar o registro de um token de push sempre que o usuário sair da aplicação, como quando o usuário faz logout. Use um código semelhante ao snippet de código a seguir para cancelar o registro de um token de push. Certifique-se de mudar pushAppNamepara o nome do seu iOS aplicação.

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

    Para obter informações adicionais sobre UnregisterPushToken() método, consulte NowPushService - unregisterPushToken(_token: Data, pushAppName: Cadeia de caracteres, ambiente: NowPushEnvironment, conclusão: Escape (<Data, NowPushError>) -> Vazio).

    Analise a carga de envio

    Você precisará analisar as cargas úteis de notificação por push em um NowPushPayload objeto para coletar informações e usar os dados em outras partes da aplicação. Atualmente, isso só está disponível para notificações por push do Virtual Agent. Use um código semelhante ao seguinte

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