iCloud使用户可以“偷”进来

在我的应用程序中,用户购买存储在Core Data中的易耗品,比如手提箱。 当用户第一次安装应用程序时,我给他们一个免费赠品开始。 没有至少一个行李箱设置,该应用程序无法运行。

但如果用户在iPhone上安装应用程序,然后在iPad上同步这两个应用程序,则他们现在有两个手提箱。 如果他们在任一设备上卸载应用程序,然后重新安装并同步它们,它们只会获得额外的一个,而且它们可以无限期地完成。

我可以看到两种解决方案,但它们都不对:

  • 当用户首次与iCloud同步时,将值添加到NSUbiquityKeyValueStore。 首次启动时检查此值。 如果它是零,则创建免费赠品,如果不是,则同步数据。 但是这造成了一个问题。 如果用户在第一次启动时禁用iCloud或没有互联网连接,该怎么办? 该应用程序将创建免费赠品,然后当iCloud可用时,同步复制品,并且他们可以根据需要多次执行此操作。

  • 以某种方式匹配每个应用程序的默认项目。 我有了匹配objectID或时间戳的想法,但这些会有所不同,我不知道如何处理它。

  • 有人知道我能做些什么吗?

    编辑:

    使用预打包数据库加migratePersistentStore:toURL:options:withType:error:似乎是要走的路。 如果它适合我​​,将会发布一个包含代码的答案。


    如果您不验证收据并跟踪用户在自己的服务器上拥有哪些耗材,那么您就错了。 你基本上相信用户体面和诚实,这通常是一个坏主意。

    当您使用应用内消耗品时,您应该在用户购买的地方保存登录信息。 这样,每次启动应用程序时,它都可以向服务器验证消耗品的预期数量。


    使用iCloud意味着网络连接。 只要设备连接到网络,您就可以验证收据,并在自己的服务器上记录耗材的消耗。


    在我看来,最好的解决方案是将UDID存储在iCloud UbiquitousKeyValueStore的数组中。

    //Store UDID in iCloud
    if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 5.0) {
        if ([[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]) {
            NSUbiquitousKeyValueStore *store = [NSUbiquitousKeyValueStore defaultStore];
    
            //Get array
            NSMutableArray *devices = [NSMutableArray arrayWithArray:[store arrayForKey:@"UDID"]];
            [devices addObject:[[UIDevice currentDevice] uniqueIdentifier]];
    
            //Create new array, set to kvstore
            NSArray *newDevices = [NSArray arrayWithArray:devices];
            [store setArray:newDevices forKey:@"UDID"];
            [store synchronize];
        }
    }
    

    ...

       //Check if app already installed on device
       NSArray *devices = [[NSUbiquitousKeyValueStore defaultStore] arrayForKey:@"UDID"];
    
        for (NSString *UDID in devices) {
            if ([UDID isEqualToString:[[UIDevice currentDevice] uniqueIdentifier]]) {
                  //stop the giveaway
            }
        }
    
    链接地址: http://www.djcxy.com/p/55619.html

    上一篇: iCloud makes it possible for users to "steal" In

    下一篇: width not giving proportional resizing