我尝试在我的应用中初始化PayPal。有时我会收到“网络超时”错误,如果我重新尝试初始化PayPal,则会一次又一次显示此警报。怎么避免这个?如何正确重新启动PayPal?我的代码是:
- (void)initializePayPal {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[PayPal initializeWithAppID:PP_APP_ID forEnvironment:ENV_SANDBOX];
while ([PayPal initializationStatus] == STATUS_INPROGRESS) {
[NSThread sleepForTimeInterval:1];
}
switch ([PayPal initializationStatus] ) {
case STATUS_COMPLETED_SUCCESS:
NSLog(@"STATUS_COMPLETED_SUCCESS");
break;
case STATUS_COMPLETED_ERROR: {
NSDictionary *responseMessage = [PayPal getInstance].responseMessage;
NSLog(@"STATUS_COMPLETED_ERROR:%@", responseMessage);
if ([[responseMessage objectForKey:@"errorId"] integerValue] == 10818) {
[self initializePayPal];
}
}
break;
default:
break;
}
[pool release];
}
答案 0 :(得分:1)
当我使用ENV_SANDBOX时,PayPal初始化失败当我开始使用ENV_LIVE而不是ENV_SANDBOX时问题解决了
答案 1 :(得分:0)
事实上,你的程序将无法运作。
PayPal.initializePayPal
是一个异步方法,它的do-initialize部分必须在消息循环中运行。因此,在您的代码中,您的while语句将主线程保持从返回事件循环。你需要做的是,当你想在你的UI中使用任何PayPal功能时,离开这个方法去尝试测试状态。给真正的初始化机会。