Configuração de notificações por push em sua aplicação iOS
Além das tarefas que você deve executar em sua instância ServiceNow para configurar uma notificação por push, você também deve incluir um código específico em sua aplicação iOS.
Criar o NowSDK NowPushService
Uma das primeiras coisas que precisa ser feita em sua aplicação é criar um NowPushService. O NowPush SDK fornece uma função de fábrica para criar este serviço. Adicione um código semelhante ao snippet a seguir no início do 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 o método NowPush.makePushService(), consulte API do NowPush - iOS.
Registrar 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 o NowPushService. Adicione uma função semelhante ao snippet de código a seguir em sua aplicação iOS. Esta aplicação deve ser registrada com sua instância 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
}
}
}
Para obter informações adicionais sobre o método registerPushToken(), consulte NowPushService - registerPushToken(_token: dados, pushAppName: cadeia de caracteres, ambiente: NowPushEnvironment, conclusão: @escaping (resultado<Data, NowPushError> ) -> Vazio).
Cancelar registro do token de envio
Você precisa cancelar o registro de um token de envio 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 envio. Certifique-se de mudar pushAppName para o nome da sua aplicação 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
}
}
}
Para obter informações adicionais sobre o método unregisterPushToken(), consulte NowPushService - unregisterPushToken(_token: dados, pushAppName: cadeia de caracteres, ambiente: NowPushEnvironment, conclusão: @escaping (resultado<Data, NowPushError> ) -> Vazio).
Analisar carga de push
Você precisará analisar as cargas de notificação por push em um objeto NowPushPayload 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(())
}