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

3. NFCPresentmentIntentAssertion を管理する

この NFCPresentmentIntentAssertion オブジェクトは、既定の支払いアプリケーションが「ダブルクリック」または「フィールド検出」イベントを受信するのをブロックするために使用されます。したがって、既定でない支払いアプリケーションの場合、連携型非接触支払いを行うために次の NFCPresentmentIntentAssertion オブジェクトを使用する必要があります。

iOS 18以降、TSH Pay SDKからのイベントを受信するには、提示意図アサーション(presentment intent assertion)を使用する必要があります。 ContactlessPaymentSession.Event.posConnected これは、 CardSession.Event.ReaderDetected イベントに基づいています。提示意図アサーションを使用しない場合、アプリケーションが受信するイベントは NFCWindowSceneEvent.readerDetectedSceneDelegate.

使用する場合、 NFCPresentmentIntentAssertion オブジェクトのライフサイクルを適切に管理することが重要です。

  • の有効性は、 NFCPresentmentIntentAssertion オブジェクトはNFCコンテンツを表示している間に維持されなければならず、関数を抜けると破棄されるローカル変数に依存すると予期しない動作が発生する可能性があります。

  • 提示意図アサーションは15秒で期限切れになり、期限切れ後は新しいインスタンスを取得できるまで15秒のクールダウン期間があります。と適切に統合するために、 NFCPresentmentIntentAssertionグローバルオブジェクトとして使用して、既存の isValid チェックを行い、既存のものを再利用するべきです。

次のコードスニペットは、 NFCPresentmentIntentAssertion オブジェクトの使用方法を示しています:

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

詳細については、を参照してください NFCPresentmentIntentAssertion.

最終更新

役に立ちましたか?