2012-01-19 34 views
1

在我处理购买时,我希望能够检测Apple的服务器是否停止运行,并弹出警报,指出Apple服务器不可用。听起来很简单,对吧?我遇到的问题是,我不确定是否有办法确定Apple的服务器是否停止运行,或者用户是否只是坐在Apple的“确认您的应用程序内购买”警报视图。这基本上发生在此委托方法:在处理购买时检测App Store何时不可用

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 

检查交易的阵列transactionState,委托被称为上SKPaymentTransactionStatePurchasing进货时开始,并SKPaymentTransactionStatePurchased购买完成后。没有指示器弹出此警报对话框并且用户确认,所以在这些情况下我无法可靠地弹出“不可用”消息。

我错过了什么,或者这是正确的吗?其他人如何处理这个问题?

回答

2

如果交易失败调用下面的方法:

- (void)failedTransaction:(SKPaymentTransaction *)transaction 
    { 
     NSLog(@"The error description is:%@",[transaction.error description]); 
     if (transaction.error.code != SKErrorUnknown) 
     { 
      // error! 
      //Your time to take over 
     } 

    } 

您应该检查http://developer.apple.com/library/mac/#documentation/StoreKit/Reference/StoreKitTypes/Reference/reference.html

+0

为什么检查SKErrorUnknown?我不想在这种情况下采取行动吗? –

+0

你有没有看到我发布的链接..有些情况下,用户将点击取消在iTunes弹出,,,如果我点击我不想购买...应该我弹出一个弹出..无法连接到iTunes的? – Shubhank

1

failedTransaction可以得到所谓的,因为不同的原因。如果你正在寻找特定的商店,那么这就是我在所有商店套件回调中所做的。

查找范围由商店套件返回的错误代码

if ([[error domain] isEqualToString:SKErrorDomain] 
{ 
    if ([[[[error userInfo] objectForKey:NSLocalizedDescriptionKey] lowercaseString] isEqualToString:@"cannot connect to itunes store"]) 
    { 
     // Show custome message to user that store is not available 
    } 
} 

还有一个条件,如果你能加入,只是为了确保--->

[error code] == 0 

很抱歉的格式我从来没有做对。 :)

相关问题