【问题标题】:iPhone PayPal init failediPhone PayPal 初始化失败
【发布时间】:2012-02-12 07:20:33
【问题描述】:

我尝试在我的应用中启动 PayPal。有时我会收到“网络超时”错误,如果我重试初始化 PayPal,此警报会一次又一次地出现。如何避免这种情况?如何正确重新启动PayPal?我的代码是:

- (void)initializePayPal {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [PayPal initializeWithAppID:PP_APP_ID forEnvironment:ENV_SANDBOX];

    而([贝宝初始化状态] == STATUS_INPROGRESS){
        [NSThread sleepForTimeInterval:1];
    }

    开关([贝宝初始化状态]){
        情况 STATUS_COMPLETED_SUCCESS:
            NSLog(@"STATUS_COMPLETED_SUCCESS");
            休息;
        情况 STATUS_COMPLETED_ERROR:{
            NSDictionary *responseMessage = [PayPal getInstance].responseMessage;
            NSLog(@"STATUS_COMPLETED_ERROR:%@", responseMessage);

            if ([[responseMessage objectForKey:@"errorId"] integerValue] == 10818) {
                [自初始化贝宝];
            }
        }
            休息;
        默认:
            休息;
    }

    [池释放];
}

【问题讨论】:

  • 为什么要在单独的线程上完成?
  • 我的问题与线程无关。如果失败,您知道如何重新启动 PayPal 吗?

标签: iphone ios ipad paypal


【解决方案1】:

当我使用 ENV_SANDBOX 时,PayPal 初始化有时会失败当我开始使用 ENV_LIVE 而不是 ENV_SANDBOX 时问题已解决

【讨论】:

    【解决方案2】:

    事实上,你的程序永远不会运行。

    PayPal.initializePayPal
    

    是一个异步方法,它的 do-initialize 部分必须在消息循环中运行。因此,在您的代码中,您的 while 语句将主线程从返回到事件循环。您需要做的是,当您想在 UI 中使用任何 PayPal 功能时,离开此方法并尝试测试状态。给真正的初始化一个运行的机会。

    【讨论】:

    • 我使用单独的线程[NSThread detachNewThreadSelector:@selector(initializePayPal) toTarget:self withObject:nil]; 来运行初始化
    猜你喜欢
    • 2012-06-26
    • 2023-04-03
    • 1970-01-01
    • 2016-03-25
    • 2012-11-17
    • 2017-12-10
    • 2018-09-17
    • 1970-01-01
    • 2018-10-13
    相关资源
    最近更新 更多