作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用服务器端验证我的应用内购买。所以我使用以下代码:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction * transaction in transactions) {
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
{
NSData *reciptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
if(reciptData) {
NSDictionary *parameters = @{@"receipt_data" : [reciptData base64EncodedStringWithOptions:0]};//App crashes here -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
}
}
break;
default:
break;
}
};
}
最奇怪的是,应用程序在装有 iOS 8.0.2 的一台 iPad 上崩溃,而在另一台装有相同 iOS 版本的 iPad 上却没有崩溃。
最糟糕的是我无法访问导致应用程序崩溃的设备。
据我了解 - base64EncodedStringWithOptions:
返回 nil
但我不知道为什么。
谁能帮帮我?
最佳答案
我之前在设备运行某种形式的应用内购买破解程序(例如“IAP Free”或“IAP Cracker”)时看到过这个空收据问题,这意味着设备已越狱和应用内购买破解工具已安装。我会确保应用程序崩溃的设备没有运行某种形式的应用程序内购买破解工具。您可以做的另一件事是忽略空收据 - 但不要退回任何商品以避免崩溃或退回仅在本地可用的商品。这取决于您希望如何应对破解应用内购买的人 - 有时最好假装一切都在本地运行但限制您服务器的功能。
关于in-app-purchase - 接收数据的 base64EncodedStringWithOptions 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26181359/
我是一名优秀的程序员,十分优秀!