首页 文章

在未注册的情况下还原非续订订阅的事务

提问于
浏览
6

AppStore评论员要求我们购买 Non-renewing subscriptions 类型不会强制用户注册 . 他的意思是用户没有注册他也可以购买 Non-renewing subscriptions 类型

并且Apple Document需要 Non-renewing subscriptions 必须可以恢复 . 他说 :

Store Kit不会自动恢复非续订订阅和消耗品 . 但是,不续订订阅必须是可恢复的 . 要恢复这些产品,您必须在购买时在自己的服务器上记录事务,并提供自己的机制将这些事务还原到用户的设备 .

所以当用户注册时,我会给用户一个唯一的userId,他可以用userName和密码获取userId,这样我就可以分享不同ios设备的用户信息,我可以恢复交易,因为他们有一个唯一的userId .

但问题是:当用户没有注册时,我的服务器也会给他们一个唯一的userId,非注册用户会将userId保存到 .plist . 他们还可以恢复交易 . 但是当他删除我的应用程序,然后下载一次,userId就丢失了,所以他无法恢复交易 . 他将是一个普通的默认用户 .

appStore会拒绝我的应用程序,原因如下:

无法在未注册的情况下还原非续订订阅的事务,这会在还原之前删除应用程序

如果appStore会拒绝,如何修复它,thx all .

3 回答

  • 1
    • 对于不可更新的inapp项目,注册必须是可选的 .

    • 您可以给他们一条消息,如果您想在多个设备上使用,那么您必须注册并登录 .

    • 注册时,电子邮件和手机等个人信息不必是可选的,您必须具体说明为什么要将电子邮件保留在注册中(例如密码恢复) .

    • 就像之前的评论一样,如果不可再生商品的inapp不是那么昂贵,他们可以接受申请 . 但是,如果inapp很昂贵,他们就不会让你违反任何规则 .

    注意:您可以使用一种机制来使用UUID并将其存储在钥匙串中 . 如果您重新安装该应用程序,您可以再次从钥匙串获取它并使用相同的UUID,您可以在您的服务器上管理到期日期 .

  • 1

    我已将我的应用程序提交到appStore .

    我恢复注册或登录的非续订订阅的交易 .

    我没有为不“注册”和“删除我的应用”的非续订订阅恢复交易 .

    我的应用已获批准

  • 4

    Apple建议使用iCloud来保留购买数据:

    #if USE_ICLOUD_STORAGE
    NSUbiquitousKeyValueStore *storage = [NSUbiquitousKeyValueStore defaultStore];
    #else
    NSUserDefaults *storage = [NSUserDefaults standardUserDefaults];
    #endif
    
    NSData *newReceipt = transaction.transactionReceipt;
    NSArray *savedReceipts = [storage arrayForKey:@"receipts"];
    if (!receipts) {
        // Storing the first receipt
        [storage setObject:@[newReceipt] forKey:@"receipts"];
    } else {
        // Adding another receipt
        NSArray *updatedReceipts = [savedReceipts arrayByAddingObject:newReceipt];
        [storage setObject:updatedReceipts forKey:@"receipts"];
    }
    
    [storage synchronize];
    

    当用户删除应用程序时,至少它比丢弃购买信息更好 . 让客户为服务付费两次,并不是一个很好的用户体验 .

相关问题