有没有什么办法知道由哪个iTunes帐户进行购买? – iOS
我的应用程序提供了一个应用程序内购买非消费types。 该应用程序已login设施。 是否有可能根据login的用户购买我的应用程序?
我知道这听起来很尴尬。 让我指定问题。
该设备已经在iTunes商店login了一个用户。 那时,当我的应用首次安装到设备上时,任何用户都可以使用凭证login到我的应用。 考虑一下,他做了一些购买并从应用程序注销。 现在,另一个用户login到应用程序,并且不能在应用程序购买之后使用之前用户可用的设施。 但是,如您所知基于iTunes商店帐户的非消费品购买(每个帐户只能购买一种非消费品)。 我尝试了以下的方式..
-
将用户ID保存到iCloud,但我不知道用哪个iTunes帐户购买了。 所以,我不能显示正确的消息“你应该login不同的iTunes帐户进行购买”。
-
在Android中,通过应用内结算v3,
developer payload
string可以与购买请求一起发送。 该string也会在为该购买进行查询时返回。 所以,这可以用来识别进行购买的用户。 有什么类似的iOS可用吗?
从iOS 7开始, SKMutablePayment
具有applicationUsername
属性,可以在付款时设置。 并且, SKPaymentQueue
具有restoreCompletedTransactionsWithApplicationUsername:
方法(链接) 。
苹果公司的指导是将您的服务器端用户ID打散,并在购买和恢复时将其传递给用户。 因此,对于您的情况,如果iTunes用户A购买了该产品,它将被绑定到该购买者的服务器端用户ID。 然后,如果iTunes用户B尝试恢复,恢复将失败,因为他们仍然会传递相同的服务器端用户ID。
您还必须跟踪(在服务器上)您的服务器端用户标识已经购买了该产品。 否则,如果iTunes用户B尝试恢复,则需要知道他们使用不同的iTunes帐户login到设备之间的区别,他们从未购买。 当然,您还需要阻止相同的服务器端用户在不同的iTunes帐户下购买产品两次。
注意事项:
- 如果您已经购买了生产产品,这很可能不会起作用。
- iOS 7+
- 上面提到的“已经购买”的情况。
如果恢复购买是成功比由此帐户购买。
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; // Then this is called - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { NSLog(@"%@",queue ); NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init]; NSLog(@"received restored transactions: %i", queue.transactions.count); for (SKPaymentTransaction *transaction in queue.transactions) { NSString *productID = transaction.payment.productIdentifier; [purchasedItemIDs addObject:productID]; NSLog (@"product id is %@" , productID); // here put an if/then statement to write files based on previously purchased items // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} } }
- 沙盒:可以模拟失败或中断的应用程序内购买?
- iOS应用内购买沙箱testing帐户不断popupvalidation
- 从应用程序的新版本(iOS)中删除应用程序购买
- SKErrorDomain代码= 0“无法连接到iTunes Store”
- 如何识别InAppPurchase警报
- paymentquue updatedTransactions:没有调用,而是paymentQueueRestoreCompletedTransactionsFinished:调用
- SKMutablePayment属性:applicationUsername
- 如何validation您的服务器上的IOS应用内购买
- 应用内购买:视图消失时崩溃