如果钱包中没有卡,Apple Pay按钮的行为最好?

时间:2018-08-07 13:13:54

标签: ios applepay wallet design-guidelines

我已经按照苹果的指导方针进行了检查,但没有发现有关此问题的任何信息。

其他信息:

我已在应用程序中添加了Apple Pay按钮,如果没有可用的功能(例如卡),则将其隐藏。但是客户不喜欢它,并且希望使用其他方法。我认为我们可能像要求用户添加卡一样打开钱包,但是我不确定Apple指南对此有何看法。

对此有明确建议吗?

1 个答案:

答案 0 :(得分:4)

这是苹果公司的guidelines on implementing Apple Pay.

以下是相关部分: 使用PKPaymentAuthorizationViewController方法

  

如果canMakePayments返回NO,则设备不支持Apple Pay。不显示Apple Pay按钮。相反,请转而使用另一种付款方式。

     

如果canMakePayments返回YEScanMakePaymentsUsingNetworks:返回NO,则设备支持Apple Pay,但用户尚未为任何请求的网络添加卡。您可以选择显示付款设置按钮,提示用户设置他或她的卡。用户点击此按钮后,立即启动设置新卡的过程(例如,通过调用openPaymentSetup方法)。

     

要创建Apple Pay品牌的按钮以在iOS 8.3或更高版本上启动付款请求,请使用PKPaymentButton类。

从PKPaymentButton文档:

  

提供一个按钮,用于通过以下方式触发付款   Apple Pay或提示用户设置卡。

您可以使用setUp类型对其进行初始化。

用户点击此按钮时,呼叫openPaymentSetup

 override func viewDidLoad() {
    super.viewDidLoad()

    var applePayButton: PKPaymentButton?
    if !PKPaymentAuthorizationViewController.canMakePayments() {
      // Apple Pay not supported
      return
    }
    if !PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: [.masterCard]) {
      // Apple Pay supported and payment not setup
      applePayButton = PKPaymentButton.init(paymentButtonType: .setUp, paymentButtonStyle: .black)
      applePayButton?.addTarget(self, action: #selector(self.setupPressed(_:)), for: .touchUpInside)
    } else {
      // Apple Pay supported and payment setup
      applePayButton = PKPaymentButton.init(paymentButtonType: .buy, paymentButtonStyle: .black)
      applePayButton?.addTarget(self, action: #selector(self.payPressed(_:)), for: .touchUpInside)
    }

    applePayButton?.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(applePayButton!)
    applePayButton?.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    applePayButton?.widthAnchor.constraint(equalToConstant: 200).isActive = true
    applePayButton?.heightAnchor.constraint(equalToConstant: 60).isActive = true
    applePayButton?.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -20).isActive = true

  }

  @objc func payPressed(_ sender: PKPaymentButton){
    // Start payment
  }

  @objc func setupPressed(_ sender: PKPaymentButton){
    let passLibrary = PKPassLibrary()
    passLibrary.openPaymentSetup()
  }

}