Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

3. Gestionar NFCPresentmentIntentAssertion

El NFCPresentmentIntentAssertion El objeto se utiliza para impedir que la aplicación de pagos predeterminada reciba el evento "double-click" o "field detect". Por lo tanto, para las aplicaciones de pago que no son predeterminadas, es necesario usar el NFCPresentmentIntentAssertion objeto para realizar el pago sin contacto.

Desde iOS 18, debes usar una aserción de presentment intent para recibir el evento ContactlessPaymentSession.Event.posConnected de TSH Pay SDK, que se basa en el CardSession.Event.ReaderDetected evento. Si no usas la aserción de presentment intent, el evento que recibirá tu aplicación será NFCWindowSceneEvent.readerDetected en SceneDelegate.

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

  • La validez de NFCPresentmentIntentAssertion objeto debe mantenerse mientras se muestra contenido NFC, y depender de una variable local que se desasigna al salir de la función puede provocar un comportamiento inesperado.

  • La aserción de presentment intent expira después de 15 segundos y, una vez expirada, hay un período de enfriamiento de 15 segundos antes de que puedas obtener una nueva instancia. Para garantizar una integración correcta con NFCPresentmentIntentAssertion, deberías usarlo como un objeto global para mantener una isValid comprobación isValid para reutilizar la existente.

El siguiente fragmento de código muestra 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 obtener más información, consulta NFCPresentmentIntentAssertion.

Última actualización

¿Te fue útil?