即使在用户重新安装后,也可以限制iOS App

时间:2017-07-07 09:28:28

标签: ios swift in-app-purchase

我创建了一个应用程序,在第一次启动时为用户提供3个硬币。
一旦用户完成3个硬币,他应该通过应用内购买购买无限金币 问题是,如果用户不想购买无限量硬币,他可以删除应用程序,再次安装应用程序,他将再次拥有3个硬币。
他可以永远这样做而无需购买 - 购买。

有一种简单的方法可以防止这种情况吗?即使删除了用户,我怎么知道用户是否在应用程序内完成了硬币?

6 个答案:

答案 0 :(得分:2)

您可以通过两种不同的方式处理此问题。

方法1:将标识符存储在KeyChain中

  1. 如果用户已安装,请首先检查keychain的值 该设备上的应用程序与否。
  2. 如果是第一次安装,则提供免费硬币并将用户ID /标记存储在钥匙串中以识别将来的安装。
  3.   

    如果用户重置其设备,您将丢失此钥匙串数据。

    重置设备后,您将再次提供硬币,因为您的标志/标识符不会出现在钥匙串中。

    如果你想避免这种情况,那么你必须采用第二种方法。

    方法2:在服务器上存储标识符

    而不是将详细信息存储在设备钥匙串上。您必须将其保存在您的服务器上。应用程序首次启动时,您必须检查您的服务器以提供详细信息。

      

    即使用户重置设备

    ,此方法也始终有效

答案 1 :(得分:1)

您可以从设备钥匙串获取唯一的设备ID并保存到服务器,并在应用首次启动后,您必须检查您的服务器是否已经可以使用此唯一设备ID。

我正在使用Keychain library轻松访问app钥匙串。

您可以使用以下方法获取并检查唯一设备ID

// MARK: - Get UUID from keychain because delete app and reintall changes the UUID.
    class var getUniqueDeviceIdentifierAsString : String {

        let appname =  Bundle.main.infoDictionary![kCFBundleNameKey as String] as! String

        var strApplicationUUID: String? = KeychainWrapper.standard.string(forKey: appname)
        if strApplicationUUID == nil {
            strApplicationUUID = UIDevice.current.identifierForVendor?.uuidString
            _ = KeychainWrapper.standard.set(strApplicationUUID!, forKey: appname)
        }

        return strApplicationUUID!
    }

答案 2 :(得分:0)

有几种方法可以实现它:

  • 使用钥匙串存储硬币计数。任何其他本地存储都不太安全,并且不会“存活”应用程序删除。我正在使用KeychainAccess库轻松访问app keychain。

  • 在您的服务器上存储有硬币计数的用户个人资料。此外,您可以验证每个应用程序内购买并验证任何硬币消耗操作,以防止IAP黑客工具,用户配置文件同步中的主要中间攻击等。

答案 3 :(得分:0)

用户可以将值存储在设备的钥匙串中。您可以将该数据保存在手机中的直到他重置所有设置的钥匙串中。我通常使用this库来使用钥匙串存储数据。

最好使用网络服务保持服务器状态,因为即使您将数据存储在钥匙串中,用户也可以重置设备的所有设置并再次安装应用程序,这样可以再次获得3个硬币。没有后端支持,它无法为此做出完美的解决方案

答案 4 :(得分:0)

一种解决方案是使用设备的钥匙串存储。但如果用户登录其他设备,则此问题仍然存在。您可以使用iCloud钥匙串存储或在服务器上存储必要的参数。使用iCloud钥匙串非常简单可靠

答案 5 :(得分:0)

如果删除应用程序,任何本地数据库,SQLite,核心数据,文件存档,plist将无法生存。 在iOS上重新安装应用后,有三种方法可以获取持久数据:

  
      
  1. 将数据保存在服务器上。但是这种情况只有在用户始终登录帐户时才有效。
  2.   
  3. 使用钥匙串存储数据。有很好的Keychain实现,如JNKeychain
  4.   
  5. 使用iCloud。在您的应用中实施CloudKit将使您能够保存数据   对应于以后可以检索的iCloud用户   重新安装。
  6.