Xcode Apple Pay — проблемы с PKPaymentAuthorizationViewControllerDelegate

Я пытаюсь внедрить Apple Pay в свое приложение. У меня проблема даже с установкой PKPaymentAuthorizationViewControllerDelegate в мой файл ViewController.swift.

В большинстве примеров кода это показано как: class ViewController: UITableViewController, PKPaymentAuthorizationViewControllerDelegate

Вот мой код:

class ApplePayVC: UIViewController, PKPaymentAuthorizationViewControllerDelegate {

code


person Price Garrett    schedule 17.06.2015    source источник
comment
Это не вопрос о Xcode, поэтому рассмотрите возможность удаления этого тега и добавления тега swift.   -  person JAL    schedule 17.06.2015


Ответы (2)


Это потому, что вы должны реализовать некоторые функции делегата.

См. документацию Apple: https://developer.apple.com/library/prerelease/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewControllerDelegate_Ref/index.html

Требуются две функции:

  • paymentAuthorizationViewController(_:didAuthorizePayment:completion:)
  • paymentAuthorizationViewControllerDidFinish(_:)

Вы должны переопределить их, и тогда ошибка исчезнет из Xcode.

person Dean    schedule 17.06.2015

Просто добавьте следующие функции

    internal func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: ((PKPaymentAuthorizationStatus) -> Void)) {
        completion(PKPaymentAuthorizationStatus.Success)
    }

    internal func paymentAuthorizationViewControllerDidFinish(controller: PKPaymentAuthorizationViewController) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }

OR

Создайте новый файл .swift, подобный этому

 import Foundation

 extension UIViewController: PKPaymentAuthorizationViewControllerDelegate {
    public func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: ((PKPaymentAuthorizationStatus) -> Void)) {
        completion(PKPaymentAuthorizationStatus.Success)
    }

    public func paymentAuthorizationViewControllerDidFinish(controller: PKPaymentAuthorizationViewController) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }
  }
person YU FAN    schedule 28.06.2016