Нашел! Это не связано с конкретными адресами!
Реализация этого метода делегата таким образом не работает
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didSelectShippingContact:(PKContact *)contact
completion:(void (^)(PKPaymentAuthorizationStatus,
NSArray<PKShippingMethod *> * _Nonnull,
NSArray<PKPaymentSummaryItem *> * _Nonnull))completion{
completion(PKPaymentAuthorizationStatusSuccess, @[], _currentRequest.paymentSummaryItems);
}
(_currentRequest
— это PKPaymentRequest
, который я использовал для всплывающего окна PKPaymentAuthorizationViewController
, которое сохраняется как атрибут экземпляра)
Я не могу это объяснить, но установка PKPaymentAuthorizationStatusInvalidShippingPostalAddress
вместо PKPaymentAuthorizationStatusSuccess
в завершении будет работать. И установка точки останова, когда мы вызываем завершение, также позволит отобразить лист Apple Pay.
Но если вы все же хотите вернуть PKPaymentAuthorizationStatusSuccess
в методе завершения, используйте его следующим образом:
completion(PKPaymentAuthorizationStatusSuccess, nil, _currentRequest.paymentSummaryItems);
Да, установка значения nil
для указанного параметра nonnull
будет работать!
person
The Windwaker
schedule
10.02.2016