【问题标题】:How to find out WHEN a user bought the app / installed it for the first time (possible without UDID?)如何找出用户第一次购买/安装应用程序的时间(可能没有 UDID?)
【发布时间】:2013-04-27 14:52:06
【问题描述】:

我想知道用户第一次购买我的应用程序的时间......到目前为止,我还没有找到一个干净的方法,UDID 似乎是唯一的选择。

理想情况下,我可以通过 StoreKit 获得收据,但到目前为止……nada

我错过了什么吗?有人有想法吗?


情况是我有一个订阅和第一期(从你购买应用程序开始应该是免费的)。如果我稍后重新安装.. 我应该总是得到原来的问题)

示例: 我在 10.2010 购买了该应用程序 我安装并运行它并免费获得 10.2010 的订阅问题(无应用内购买) 现在我删除应用程序 我安装它 1.2013,我只从 10.2010 免费获得订阅!不是新的

【问题讨论】:

  • 在钥匙串中存储一个标志。
  • 钥匙串也很脆弱,不是吗?...它是否会在应用程序删除时保留下来?如果我只是恢复手机呢^^
  • 它是非易失的,它是备份的。
  • 酷,我不知道......这还不错。我想我仍然可以摆脱它但我不恢复备份?
  • 是的,没错。但无论如何,你不可能100%安全。如果用户越狱手机并删除所谓的永久数据怎么办?等等

标签: ios storekit subscriptions


【解决方案1】:

您可以只在钥匙串中存储一个标志。钥匙串的内容会在应用重新安装时保留。

要获取应用的首次安装时间,请检查应用二进制文件首次写入磁盘的时间:

if (flag_in_keychain_not_present()) {
    // installed for the first time
    set_flag_in_keychain();

    struct stat st;
    stat([NSBundle mainBundle].executablePath.UTF8String, &st);
    time_t installed = st.st_mtime;
}

【讨论】:

  • 您是否找到任何说明“钥匙串的内容在重新安装应用程序时保留”的文档。 ?情况似乎如此,但我找不到任何说明这是预期行为的文档。
  • @AndreasPaulsson 够了,我会搜索相关文档。老实说,我不再知道我是怎么知道的,但钥匙串持久的。
  • 小心!上面的答案是在编写二进制文件时获取的……而不是用户在设备上安装它的时间。如果您从 XCode 安装和调试应用程序,它们是一回事,但如果您通过 TestFlight 或 App Store 安装应用程序,它们就不是了!
【解决方案2】:

我还没用过Store Kit,但如果我错了,请告诉我,

1) 它需要一个服务器在某个点或另一个

2) 当我们使用它来“购买”(不是订阅或消耗品)某些东西时,我们可以使用同一个 iTunes 帐户在所有设备上检索此购买

我的意思是,创建一个应用内购买免费项目,当它第一次通过您的服务器时将其存储在数据库中,下次使用相同帐户调用它时“启用”与第一次免费购买相对应的问题

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2015-08-01
    相关资源
    最近更新 更多