2015-02-03 4 views
0

ApplePay를 사용 중이며 연락처 정보로 이메일이 필요합니다. 내가 이메일을 얻으려고 할 때, 내가 얻는 이메일 결과는 어디에서 왔는지도 모르는 "배송"입니다.ApplePay에서 이메일을받을 수 없습니다. PKPaymentAuthorizationViewController

요청에 이메일 입력란을 입력하고 이메일 정보를 입력했습니다.

func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController!, didAuthorizePayment payment: PKPayment!, completion: ((PKPaymentAuthorizationStatus) -> Void)!) { 

    let address: ABRecord! = payment.shippingAddress 

    let emails: ABMultiValueRef = ABRecordCopyValue(address, kABPersonEmailProperty).takeRetainedValue() as ABMultiValueRef 
    if ABMultiValueGetCount(emails) > 0 { 
     let email = ABMultiValueCopyLabelAtIndex(emails, 0).takeRetainedValue() 
     NSLog(email) //Here prints "Shipping" 
    } 
    ... 
} 

이 이메일을 할 수있는 권리 장소 : 여기

request.requiredShippingAddressFields = PKAddressField.PostalAddress | PKAddressField.Email 

코드인가? 그렇지 않은 경우 올바른 접근 방법은 무엇입니까?


전화 번호 (kABPersonPhoneProperty)를 얻으려고하면 결과가 "Shipping"으로 인쇄됩니다.

답변

2

코드에 미묘한 "오자"가 있습니다. :) ABMultiValueCopyLabelAtIndex은 항목의 레이블 ("Shipping")을 복사합니다. ABMultiValueCopyValueAtIndex을 사용하여 값을 원하게됩니다.

iOS9를 들어
let emails: ABMultiValueRef = ABRecordCopyValue(address, kABPersonEmailProperty).takeRetainedValue() as ABMultiValueRef 
    if ABMultiValueGetCount(emails) > 0 { 
    let email = ABMultiValueCopyValueAtIndex(emails, 0).takeRetainedValue() as String 
    NSLog(email) //Here prints your email address! 
    } 
+0

목적 C.에 위의 답을 변환하십시오 – Laxy

1

및 최신

let email = payment.shippingContact?.emailAddress