Tôi đã quan tâm đến đúng/tốt nhất từ ngữ để khôi phục giao dịch mua.
Tôi đã thấy đủ cảnh báo "Lỗi không xác định", chỉ cần sử dụng [error localizedDescription]
bên trong -(void)paymentQueue:restoreCompletedTransactionsFailedWithError:
. (todo: fill radar)
Vì vậy, tôi đã xem Apple hoạt động như thế nào. Ứng dụng duy nhất từ Apple với Mua hàng trong ứng dụng không tiêu thụ ngay bây giờ là GarageBand (tháng 12 năm 2014).
Thay vì "Khôi phục mua hàng", "Khôi phục mua hàng trước đó" hoặc ... chúng đi với "Already Purchased?"
.
Nhưng ở đây là màn hình Tôi quan tâm nhiều hơn trong, kết quả của cách nhấn "Already Purchased?"
khi không có gì để khôi phục lại là:
"There are no items available to restore at this time."
Không mang tính cách mạng, nhưng nhịp đập địa ngục trong "Lỗi không xác định"
Vì vậy, hãy xem -(void)paymentQueue:restoreCompletedTransactionsFailedWithError:
.
iOS:
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
if ([error.domain isEqual:SKErrorDomain] && error.code == SKErrorPaymentCancelled)
{
return;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"There are no items available to restore at this time.", @"")
message:nil
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"")
otherButtonTitles:nil];
[alert show];
}
OS X:
Tôi không hài lòng với chỉ cùng một văn bản trên OS X. Một NSAlert chỉ với messagetext và không informativeText chỉ trông trống và sai.
Một tùy chọn cho tôi là cho người dùng biết rằng anh ấy cần mua nó, với một cái gì đó như "To use it, you need to buy “%@”."
.
Một tùy chọn khác mà tôi đưa ra là cho phép trình duyệt đó ở đó Purchase History. Tôi thấy rằng bạn có thể liên kết trực tiếp với nó với itms://phobos.apple.com/purchaseHistory
. Trong tất cả sự trung thực Lịch sử mua hàng trong iTunes Store là một phần của shit, nó sẽ đưa bạn cho bao giờ tìm thấy một cái gì đó.
Nhưng có lẽ nó giúp tái bảo hiểm những người mà chúng tôi không cố gắng khiến họ mua lại thứ gì đó. Luôn luôn giả định rằng khách hàng của bạn không biết hoặc không thể nói sự khác biệt giữa Không tiêu thụ và tiêu hao. Và không biết rằng họ không thể bị tính phí hai lần cho một Không tiêu hao.
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
if ([error.domain isEqual:SKErrorDomain] && error.code == SKErrorPaymentCancelled)
{
return;
}
NSAlert *alert = nil;
alert = [NSAlert alertWithMessageText:NSLocalizedString(@"There are no items available to restore at this time.", @"")
defaultButton:NSLocalizedString(@"OK", @"")
alternateButton:NSLocalizedString(@"Purchase History", @"")
otherButton:nil
informativeTextWithFormat:@"You can see your purchase history in the iTunes Store."];
NSModalResponse returnCode = [alert runModal];
if (returnCode == NSAlertAlternateReturn)
{
NSURL *purchaseHistory = [NSURL URLWithString:@"itms://phobos.apple.com/purchaseHistory"];
[[NSWorkspace sharedWorkspace] openURL:purchaseHistory];
}
}
Ví dụ trên OS X
Testing Notes (OS X, itunesconnect dùng sandbox):
Khi người dùng nhấp hủy:
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
Error Domain=SKErrorDomain Code=2 "The payment was canceled by the user" UserInfo=0x600000470a40 {NSLocalizedDescription=The payment was canceled by the user}
Khi có không có gì để khôi phục:
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
Error Domain=SKErrorDomain Code=0 "Unknown Error." UserInfo=0x60800007fb80 {NSLocalizedDescription=Unknown Error.}
Câu trả lời của Benjamin cung cấp giải pháp thanh lịch hơn mà bạn đã yêu cầu. Bạn có thể đánh dấu câu trả lời của mình là câu trả lời được chấp nhận để mọi người tìm thấy câu trả lời hay nhất? – Timo
Xin chào @NicolasMiari, bạn đã giải quyết vấn đề của mình như thế nào – Ranjit