1

ApplePay を使用しており、連絡先情報として電子メールが必要です。メールを受信しようとすると、メールの結果が「配送中」で、どこから来たのかさえわかりません。

リクエストに必須の電子メール フィールドがあり、電子メール情報を入力しました。

request.requiredShippingAddressFields = PKAddressField.PostalAddress | PKAddressField.Email

コードは次のとおりです。

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"
     }
    ...
 }

これは、電子メールを取得する適切な場所ですか? そうでない場合、正しいアプローチは何ですか?


電話番号 (kABPersonPhoneProperty) を取得しようとすると、結果も "Shipping" として出力されます。

4

2 に答える 2

2

コードに微妙な「タイプミス」があります:)。ABMultiValueCopyLabelAtIndexエントリのラベル (「配送」) をコピーします。を使用して値が必要になりますABMultiValueCopyValueAtIndex

  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!
  }
于 2015-02-06T23:12:48.673 に答える