Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.

3. Gestionar NFCPresentmentIntentAssertion

El NFCPresentmentIntentAssertion objecto se utiliza para bloquear que la aplicación de pago predeterminada reciba el evento "double-click" o "field detect". Por lo tanto, para aplicaciones de pago que no son la predeterminada, se requiere usar el NFCPresentmentIntentAssertion objeto para poder realizar el pago sin contacto.

Desde iOS 18, se requiere usar una aserción de intención de presentación para recibir el evento ContactlessPaymentSession.Event.posConnected del SDK TSH Pay, que se basa en el CardSession.Event.ReaderDetected evento. Si no utiliza la aserción de intención de presentación, el evento que su aplicación reciba será NFCWindowSceneEvent.readerDetected en SceneDelegate.

Al usar el NFCPresentmentIntentAssertion objeto, es importante gestionar correctamente su ciclo de vida.

  • La validez del NFCPresentmentIntentAssertion objeto debe mantenerse mientras se muestre contenido NFC, y confiar en una variable local que se desaloca al salir de la función puede resultar en un comportamiento inesperado.

  • La aserción de intención de presentación caduca después de 15 segundos y, tras expirar, hay un período de enfriamiento de 15 segundos antes de poder adquirir una nueva instancia. Para asegurar una integración adecuada con NFCPresentmentIntentAssertion, debe usarlo como un objeto global para mantener un isValid chequeo para reutilizar el existente.

El siguiente fragmento de código demuestra cómo usar el NFCPresentmentIntentAssertion objeto:

import CoreNFC

@available(iOS 17.4, *)
class PresentmentIntentWrapper {
    
    static var presentmentIntent: NFCPresentmentIntentAssertion?
    
    static func acquire() async throws {
        presentmentIntent = try await NFCPresentmentIntentAssertion.acquire()
    }
    
    static func isValid() -> Bool {
        guard let presentmentIntent else {
            return false
        }
        return presentmentIntent.isValid
    }
}

Para más información, consulte NFCPresentmentIntentAssertion.

Última actualización

¿Te fue útil?