Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS上检测首次应用程序下载_Ios_Swift - Fatal编程技术网

在iOS上检测首次应用程序下载

在iOS上检测首次应用程序下载,ios,swift,Ios,Swift,我已经在App Store上安装了一个应用程序,业务团队需要检测首次下载和使用该应用程序的用户 挑战在于该应用程序没有登录,客户可以购买门票。我们只需要为在未来某个特定日期后下载的客户提供促销。(例如:2018年1月1日后首次下载的客户) 即使客户删除了该应用程序,然后从苹果商店重新安装,也不应该有资格获得该服务 我们可以做一些代码修复和更新。但这些代码在更新和启动之前不会受到影响 注意:应该是第一次下载(即他们的手机上从未安装过iOS应用)使用CFUUID创建UUID,然后将其保存在钥匙链中。

我已经在App Store上安装了一个应用程序,业务团队需要检测首次下载和使用该应用程序的用户

挑战在于该应用程序没有登录,客户可以购买门票。我们只需要为在未来某个特定日期后下载的客户提供促销。(例如:2018年1月1日后首次下载的客户)

即使客户删除了该应用程序,然后从苹果商店重新安装,也不应该有资格获得该服务

我们可以做一些代码修复和更新。但这些代码在更新和启动之前不会受到影响


注意:应该是第一次下载(即他们的手机上从未安装过iOS应用)使用
CFUUID
创建
UUID
,然后将其保存在钥匙链中。因此,每当应用程序启动时,如果在keychain中没有找到
UUID
,可以说应用程序是第一次安装的。如果在keychain中找到了
UUID
,则可以说之前已经安装了应用程序。请查看以下链接:


使用
CFUUID
创建
UUID
,然后将其保存在钥匙链中。因此,每当应用程序启动时,如果在keychain中没有找到
UUID
,可以说应用程序是第一次安装的。如果在keychain中找到了
UUID
,则可以说之前已经安装了应用程序。请查看以下链接:


据我所知,除非我们有自己的自定义逻辑,如发送emailId或存储在Keychain中,否则我们无法知道用户是否已重新安装user

在您的情况下,您没有为应用商店中已经存在的应用程序执行任何这些操作。您无法跟踪重新安装的用户。请查看以下用户分类

1。重新安装的用户:现在无法跟踪这些用户

2。已安装用户(v1.0)和新用户(v1.1) 检查此解决方案以获取文档文件的时间戳

a。如果少于新的应用程序版本,则应为旧版本

b。如果它等于或大于新的应用程序发布时间戳,则为新版本


在新版本中编写keychain逻辑,以便从现在起您可以使用keychain来识别用户。

据我所知,除非我们有自己的自定义逻辑,如发送电子邮件ID或存储在keychain中,否则我们无法知道用户是否重新安装了用户

在您的情况下,您没有为应用商店中已经存在的应用程序执行任何这些操作。您无法跟踪重新安装的用户。请查找以下用户隔离

1。重新安装的用户:现在无法跟踪这些用户

2。已安装用户(v1.0)和新用户(v1.1) 检查此解决方案以获取文档文件的时间戳

a。如果少于新的应用程序版本,则应为旧版本

b。如果它等于或大于新的应用程序发布时间戳,则为新版本


在新版本中编写keychain逻辑,以便从现在起,您可以使用keychain来标识用户。

在我们的案例中,我们将一些本地sqlite数据库保存在documents文件夹中。因此,如果文件在发布时不存在,我们可以假设它是新发布的。否则这是一个更新。

在我们的例子中,我们在documents文件夹中保留了一些本地sqlite数据库。因此,如果文件在发布时不存在,我们可以假设它是新发布的。否则这是一个更新。

您是否尝试过使用钥匙链?钥匙链仅在用户重置iPhone时重置。你可以在keychain上写一个标志来检查用户是否在第一次安装你的应用,我们可以添加代码。但是现有用户呢?即使对于已更新的现有客户,该检查也将返回true。真的吗?如果flagKeychain==nil{write flagKeychain并给用户升级}否则{return}考虑现有用户。他们将随着您的逻辑更新新版本。即使对他们来说,它也将被视为新客户。这是我的问题任何人都尝试过它,但您可以尝试检索应用程序购买收据(),并对其进行解析以检索原始应用程序版本或收据创建日期。有关详细信息,请参阅。您是否尝试使用钥匙链?钥匙链仅在用户重置iPhone时重置。你可以在keychain上写一个标志来检查用户是否在第一次安装你的应用,我们可以添加代码。但是现有用户呢?即使对于已更新的现有客户,该检查也将返回true。真的吗?如果flagKeychain==nil{write flagKeychain并给用户升级}否则{return}考虑现有用户。他们将随着您的逻辑更新新版本。即使对他们来说,它也将被视为新客户。这是我的问题任何人都尝试过它,但您可以尝试检索应用程序购买收据(),并对其进行解析以检索原始应用程序版本或收据创建日期。有关详细信息,请参阅。请考虑现有用户。他们将随着您的逻辑更新新版本。即使对他们来说,它也将被视为新客户。这是我的问题。您还从用户那里收集了哪些其他数据?您是否正在监视应用程序版本?请考虑现有用户。他们将随着您的逻辑更新新版本。即使对他们来说,它也将被视为新客户。这是我的问题。您还从用户那里收集了哪些其他数据?您是否正在监视应用程序版本?