我正在使用图书馆RMStore - 这就是我目前所拥有的 .
1)购买自动续订订阅并验证退回的收据 .
[[RMStore defaultStore]addPayment:[Environment environment].premiumProductIAPId success:^(SKPaymentTransaction *transaction) {
[[RMStore defaultStore].receiptVerificator verifyTransaction:transaction success:^{
//enable premium service
} failure:^(NSError *error) {
}];
} failure:^(SKPaymentTransaction *transaction, NSError *error) {
}];
2)在每次应用程序启动时,检查订阅是否为该日期的活动,如果是,则启用高级服务
RMAppReceipt *appReceipt = [RMAppReceipt bundleReceipt];
if (appReceipt){
NSInteger isActive = [appReceipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:[Environment environment].premiumProductIAPId forDate:[NSDate date]];
//enable premium service if active
}
3)如果用户在另一台设备上启动应用程序,则允许他们通过刷新收据(如果已存在)来恢复购买,并检查购买中是否存在有效订阅 .
"In most cases, all your app needs to do is refresh its receipt and deliver the products in its receipt."
- 那是来自指南 . 这是代码:
[[RMStore defaultStore]refreshReceiptOnSuccess:^{
if ([receipt containsActiveAutoRenewableSubscriptionOfProductIdentifier:[Environment environment].premiumProductIAPId forDate:[NSDate date]]){
//enable
}else{
//no longer active
}
} failure:^(NSError *error) {
}];
我的问题:
-
当RMStore检查订阅是否处于活动状态时,它可以返回否,我查看收据并且它是正确的,我假设它已经订阅了't been auto renewed. When I go to purchase another subscription I get a message from itunes saying I' . 在随后的发布中,我看到了新的收据 . 这表示收据需要在启动时刷新,但我不想刷新它,因为它会弹出不必要的用户名和密码弹出 . 这里的最佳做法是什么?
-
我是否以正确的方式恢复其他设备的订阅?似乎有时需要多次尝试才能恢复订阅 .
-
除了记录保存还有什么需要在我的服务器上存储订阅吗?
1 回答
我打算尝试回答我的问题 .
可能存在更新,在发布时未检测到第一件事因此订阅显示为不活动 .
我添加了一个观察者来监听已完成的事务(RMStore扩展了这个StoreKit功能) .
每次收到此通知时,我都会检查(现在更新的)收据以查看有效订阅,并启用高级服务(如果有) .
这似乎有效 . 如果有人有任何其他建议,请告诉我 .