2016-12-20 5 views
2

을 사용하여 dropIn UI를 표시 할 수 없습니다. 결제 앱을 만들고 braintree를 사용하고 있습니다. 나는 braintree dropIn UI를 사용하고 싶다. 창을 통해 BraintreeDropIn을 설치했습니다. 다음 코드를 사용하여 dropIn UI를 표시합니다. braintree iOS

func showDropIn(clientTokenOrTokenizationKey: String) { 
    let request = BTDropInRequest() 
    let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request) 
    { (controller, result, error) in 
     if (error != nil) { 
      print("ERROR") 
     } else if (result?.cancelled == true) { 
      print("CANCELLED") 
     } else if result != nil { 
      // Use the BTDropInResult properties to update your UI 
      // result.paymentOptionType 
      // result.paymentMethod 
      // result.paymentIcon 
      // result.paymentDescription 
     } 
     controller.dismissViewControllerAnimated(true, completion: nil) 
    } 
    self.presentViewController(dropIn!, animated: true, completion: nil) 
} 

나는 Tokenization Keys에서 샌드 박스 제어판에서 tokenization 키가 있고 난 showDropIn 기능에 전달하고있다. 여전히이 함수 내에서 않을 아무것도 표시되지

(BTDropInController(authorization: clientTokenOrTokenizationKey, request: request) 
{ (controller, result, error)) 

답변

2

이를 사용해보십시오 :

func showDropIn(clientTokenOrTokenizationKey: String) { 

     let request = BTDropInRequest() 
     let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request) 
     { (controller, result, error) in 
      if (error != nil) { 
       print("ERROR") 
      } else if (result?.cancelled == true) { 
       print("CANCELLED") 
      } else if result != nil { 
       // Use the BTDropInResult properties to update your UI 
       // result.paymentOptionType 
       // result.paymentMethod 
       // result.paymentIcon 
       // result.paymentDescription 
      } 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      controller.dismissViewControllerAnimated(true, completion: nil) 
    }); 
     } 
      dispatch_async(dispatch_get_main_queue(), ^{ 
      self.presentViewController(dropIn!, animated: true, completion: nil) 
    }); 
    } 

희망이 작동합니다 ...! 목적에

+0

에 오신 것을 환영합니다 VJVJ .... :) 당신이 어떤 UI 업데이트를 수행하고 주 스레드가 아닌 경우 그래서 그것이 잘 작동합니다 dispatch_get_main_queue 실행하면 ... –

+0

확실히, 지금 나는 그것을 얻었다 – VJVJ

+0

나에게 많은 시간을 구했다! 아래 Objective-C로 게시하십시오! – ArielSD

0

- C :

- (void)showDropIn:(NSString *)clientTokenOrTokenizationKey { 
    BTDropInRequest *request = [[BTDropInRequest alloc] init]; 
    BTDropInController *dropIn = [[BTDropInController alloc] initWithAuthorization:clientTokenOrTokenizationKey request:request handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) { 

     if (error != nil) { 
      NSLog(@"ERROR"); 
     } else if (result.cancelled) { 
      NSLog(@"CANCELLED"); 
     } else { 
      // Use the BTDropInResult properties to update your UI 
      // result.paymentOptionType 
      // result.paymentMethod 
      // result.paymentIcon 
      // result.paymentDescription 
     } 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      [controller dismissViewControllerAnimated:YES completion:nil]; 
     }); 
    }]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self presentViewController:dropIn animated:YES completion:nil]; 
    }); 
}