Apple Pay 应用内配置的设备选择
Device selection on Apple Pay In-App provisioning
我在一家金融科技公司工作,该公司在我们的卡中为 Apple Pay 提供支持,即我们的用户可以选择使用我们的应用程序(应用程序内配置)将他们的卡添加到 Apple Pay。我们公司已经从 Apple 获得了适当的应用内配置权利,并且整个应用内配置过程正在按预期进行。
当用户在我们的应用程序中点击“添加到 Apple 钱包”按钮以配置他的卡时,我们将在下面调用以下代码:
let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa
// Present the Apple Pay ViewController
let controller = PKAddPaymentPassViewController(requestConfiguration: config, delegate: self)
UIApplication.shared.delegate?.window??.rootViewController?.present(controller!, animated: true)
如果用户有配对的 Apple Watch,他会看到一个屏幕,要求他 select 他想在哪个设备上添加卡:在他的 iPhone 上或在 Apple Watch 上(请参阅附件 screenshot)。用户 select 使用设备后,预配过程将按预期继续成功。
但是,如果用户点击“添加到 Apple 钱包”按钮并且他已经将卡添加到其中一个设备(例如 Apple Watch),则再次调用上面的代码,但是他再次看到相同的屏幕,要求他 select 在他的 iPhone 或他的 Apple Watch 上添加卡的设备,即使卡已经添加到 Apple观看。
据我了解,由于该卡已添加到 Apple Watch 上,因此只有 iPhone 应该显示为添加卡的有效选项。
在上面的代码中我还需要做些什么来确保只有可用的设备(我的意思是,只有那些还没有在 Apple Pay 上添加卡的设备)在设备中列出select离子?
我找到了这个问题的答案,所以我正在回答我自己的问题:
创建 PKAddPaymentPassRequestConfiguration
对象后,您需要使用客户银行帐户的唯一标识符设置字段 primaryAccountIdentifier
(您可能会从银行获得此信息)。
如果您查看我在问题中发布的代码,您会注意到我在 PKAddPaymentPassRequestConfiguration
对象中设置了很多字段,但没有在 primaryAccountIdentifier
中设置。这就是为什么它对我不起作用。
下面是正确的代码,在最后添加了primaryAccountIdentifier
:
let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa
config.primaryAccountIdentifier = "some unique identifier"
通过此更新,在您将设备添加到 Apple Pay 后,当您想使用同一帐户添加第二台设备时,它将不再显示为配置选项。
我在一家金融科技公司工作,该公司在我们的卡中为 Apple Pay 提供支持,即我们的用户可以选择使用我们的应用程序(应用程序内配置)将他们的卡添加到 Apple Pay。我们公司已经从 Apple 获得了适当的应用内配置权利,并且整个应用内配置过程正在按预期进行。
当用户在我们的应用程序中点击“添加到 Apple 钱包”按钮以配置他的卡时,我们将在下面调用以下代码:
let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa
// Present the Apple Pay ViewController
let controller = PKAddPaymentPassViewController(requestConfiguration: config, delegate: self)
UIApplication.shared.delegate?.window??.rootViewController?.present(controller!, animated: true)
如果用户有配对的 Apple Watch,他会看到一个屏幕,要求他 select 他想在哪个设备上添加卡:在他的 iPhone 上或在 Apple Watch 上(请参阅附件 screenshot)。用户 select 使用设备后,预配过程将按预期继续成功。
但是,如果用户点击“添加到 Apple 钱包”按钮并且他已经将卡添加到其中一个设备(例如 Apple Watch),则再次调用上面的代码,但是他再次看到相同的屏幕,要求他 select 在他的 iPhone 或他的 Apple Watch 上添加卡的设备,即使卡已经添加到 Apple观看。
据我了解,由于该卡已添加到 Apple Watch 上,因此只有 iPhone 应该显示为添加卡的有效选项。
在上面的代码中我还需要做些什么来确保只有可用的设备(我的意思是,只有那些还没有在 Apple Pay 上添加卡的设备)在设备中列出select离子?
我找到了这个问题的答案,所以我正在回答我自己的问题:
创建 PKAddPaymentPassRequestConfiguration
对象后,您需要使用客户银行帐户的唯一标识符设置字段 primaryAccountIdentifier
(您可能会从银行获得此信息)。
如果您查看我在问题中发布的代码,您会注意到我在 PKAddPaymentPassRequestConfiguration
对象中设置了很多字段,但没有在 primaryAccountIdentifier
中设置。这就是为什么它对我不起作用。
下面是正确的代码,在最后添加了primaryAccountIdentifier
:
let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa
config.primaryAccountIdentifier = "some unique identifier"
通过此更新,在您将设备添加到 Apple Pay 后,当您想使用同一帐户添加第二台设备时,它将不再显示为配置选项。