2015-11-20 16 views
5

私のアプリにApple Payを実装しようとしています。私はPKPaymentAuthorizationViewControllerをApple Pay Viewをロードしようとしています。私のウォレットにすでにカードがない場合、このビューコントローラはコンストラクタによってNilとして返されていました。だから、私は彼らがカード情報を入力するプロセスを介してユーザーを導くことに決めました。私はここでApple Pay detectウォレットにはクレジットカードがありません

PKPassLibrary* lib = [[PKPassLibrary alloc] init]; 
[lib openPaymentSetup]; 

を使用して、私はPKPaymentAuthorizationViewControllerの初期化を持っている部分であり、これを達成することができました。これにより、ビューを示すSimulator上の有効なオブジェクトが返されます。しかし、設定されたクレジットカードのない実際のデバイスでは、nilを返し、実行時例外になります。ここで

if ([PKPaymentAuthorizationViewController canMakePayments]) { 
// init arr 
[arr addObject:total]; 
request.paymentSummaryItems = arr; 
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; 
paymentPane.delegate = self; 
[self presentViewController:paymentPane animated:TRUE completion:nil]; 
} 

配列が正常にシミュレータ上で動作している理由であるPKPaymentSummaryItemの有効NSArrayのである:ここでは初期化コードです。

上記のopenPaymentSetupメソッドを呼び出す必要があります。毎回、ウォレットにクレジットカードのないユーザーが表示されます。それを検出する方法はありますか?

現在、私は

if ([PKPassLibrary isPassLibraryAvailable]) { 
    PKPassLibrary* lib = [[PKPassLibrary alloc] init]; 
    if ([lib passesOfType:PKPassTypePayment].count == 0) { 
     [lib openPaymentSetup]; 
    } 
} 

を使用しています。しかし、私は財布でパスの数で探していますので、これは動作しません。 @maddyによって提案された、とのように私はそれが実際に働いていなかった PKPaymentAuthorizationViewController present as nil view controller

Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/

+0

AppleのドキュメントからcanMakePaymentsメソッドを使用できない理由はありますか? (https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/#//apple_ref/occ/clm/PKPaymentAuthorizationViewController/canMakePayments) – bplattenburg

+1

@bplattenburg常にtrueを返します。編集を確認してください。 – Rushabh

+2

'canMakePaymentsUsingNetworks:'メソッドを使う必要があります。 'canMakePayments'メソッドではありません。 – rmaddy

答えて

5

:見航空会社搭乗券、またはたEventBriteパスなど

のようにしてもよいです。その不運なことに、リンゴにはそれに関する非常に限られたドキュメントしかありません。マディに感謝します。ここで

は私のコードは

-(BOOL) openAddCardForPaymentUIIfNeeded 
{ 
    if ([PKPassLibrary isPassLibraryAvailable]) 
    { 
     if (![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:[NSArray arrayWithObjects: PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, nil]]) 
     { 
      UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Add a Credit Card to Wallet" message:@"Would you like to add a credit card to your wallet now?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil]; 
      [alert show]; 
      return true; 

     } 
    } 
    return false; 
} 

ある今、私は財布のアプリでカードウィザードを追加するために行くようにユーザーに指示しています。ウォレットでカードを追加した後で、ユーザーをアプリに戻す方法はありますか?

ありがとうございます!

+2

ユーザーが私の知る限りあなたのアプリに戻ることなくそれらを戻す方法はありません。私は人々が自分自身のために多くのことを理解することができます願って:) – bplattenburg

関連する問題