Configuração de notificações por push na 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 NowPushService do NowSDK
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 envio por 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 na 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 o registro do token de envio por push
Você precisa cancelar o registro de um token de envio por push sempre que o usuário sair da aplicação, por exemplo, 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 por push. Certifique-se de mudar pushAppName para o nome da 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(())
}