3
我想驗證我在使用服務器端的應用程序購買。 於是我就用下面的代碼:base64EncodedStringWithOptions用於接收數據返回無
- (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;
}
};
}
最奇怪的是在一個iPad上的應用程序崩潰的iOS 8.0.2,並使用相同的IOS版本上的其他不會崩潰。
最糟糕的是我無法訪問應用程序崩潰的設備。
據我所知- base64EncodedStringWithOptions:
返回nil
但我不知道爲什麼。
任何人都可以幫助我嗎?
感謝您的回覆。但是,應用程序正在我的設備上運行,並沒有越獄。如果我不解鎖功能,那麼我的用戶只是失去了他的錢,但如果我解鎖它,那麼爲什麼我應該使用驗證? – 2014-10-21 14:05:12
一般來說,即使解碼失敗,我也會建議解鎖項目 - 不要崩潰 - 就像讓黑客/ bug獲取虛擬物品一樣。但是,如果某些內容存儲在服務器上並需要驗證 - 那麼它將在服務器上驗證失敗,或者不會將其傳遞到服務器 – abdollar 2014-10-21 18:16:10
它與服務器端功能有關,我不會將它傳遞給此服務器案件。但是空的收據是什麼原因,我怎樣才能避免它? – 2014-10-21 19:18:23