Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Iphone iOS应用程序购买日期_Iphone_Objective C_Ios_In App Purchase - Fatal编程技术网

Iphone iOS应用程序购买日期

Iphone iOS应用程序购买日期,iphone,objective-c,ios,in-app-purchase,Iphone,Objective C,Ios,In App Purchase,我正在尝试一种新的市场策略,所以我现在将免费推出我的0,79欧元应用程序,通过应用程序内购买解锁所有内容。我也不想背叛那些已经购买了它的用户,所以我想对那些已经购买了应用程序的用户实施一个检查,不需要购买应用程序内支付来解锁所有 我的问题是。。。我可以检查该应用程序的购买时间吗?或者有一种简单的方法?假设您当前版本的应用程序保存状态,在第一次启动下一版本的应用程序时,您可以检查任何保存状态(例如NSUserDefaults中的密钥、文档目录中的文件等) 不过,您应该只执行一次,因此您需要在其他地

我正在尝试一种新的市场策略,所以我现在将免费推出我的0,79欧元应用程序,通过应用程序内购买解锁所有内容。我也不想背叛那些已经购买了它的用户,所以我想对那些已经购买了应用程序的用户实施一个检查,不需要购买应用程序内支付来解锁所有


我的问题是。。。我可以检查该应用程序的购买时间吗?或者有一种简单的方法?

假设您当前版本的应用程序保存状态,在第一次启动下一版本的应用程序时,您可以检查任何保存状态(例如
NSUserDefaults
中的密钥、文档目录中的文件等)


不过,您应该只执行一次,因此您需要在其他地方有另一个标志来告诉您已执行检查。

您不能肯定地执行此操作,因为无法检查用户是否购买了应用程序,因为无法向操作系统询问安装/购买日期

按照建议,您可以将其保存在
NSUserDefaults
中,但如果用户删除该应用程序,则此信息将丢失


可以将其保存在钥匙链中,如果删除应用程序,钥匙链不会被清除,但问题仍然存在,因为如果iOS设备恢复,这些设置可能会丢失。

rckoenes的解释是正确的。我最近经历过这种情况,我考虑过这里的答案中提到的选项。我最终的选择是发布应用程序的另一个扩展(如“pro”或“lite”等),而不是现有应用程序的一个版本。这将省去处理应用程序购买状态的所有麻烦。然后,您将拥有一个包含所有高级内容的全付费版本,以及一个包含应用内购买的免费版本,以解锁内容。希望这会有所帮助。

这应该很简单。如果您知道新应用何时上线,只需检查安装日期/时间(首次运行时将日期/时间存储在钥匙链中)。在免费应用上线日期/时间之前安装该应用的用户可以访问内容。如果您担心新用户弄乱日期/时间,请使用在线时间服务获取实际时间

只要更新一下,这是可能的。看看这个问题的答案——收据中的一个字段是“原始购买日期”


mh但是当用户删除并重新安装应用程序时会发生什么呢?是的,很好。。。而且,他们的购买日期可能不是他们第一次打开应用程序的日期。谢谢回答,但我需要一些在用户删除应用程序后不会弄糟的东西。我需要一些东西,比如为已经拥有该应用的用户“免费”进行应用内购买,以便在删除该应用时可以恢复。应该可以(而不是侵犯隐私)访问以前购买的应用版本/购买价格,但应用商店在这方面非常缺乏(它甚至不支持付费升级,尽管最初的“你已经购买了此应用的早期版本”消息暗示了降价升级的可能性)。我得到的最好建议是。我已经尝试了2应用的方式,但该应用被拒绝,因为“你不能再这样做了,但你必须实施应用内购买”。顺便说一句,我不太喜欢两个应用程序都需要相同的更新…可能会有遗漏。名称应该有所不同。我想,两个应用程序的型号只是选择的问题。如果你浏览一下商店,你就会知道几乎所有流行的游戏/应用程序都使用相同的型号。对于更新,你可以手动操作通过将应用程序开发为单个应用程序,而不是两个应用程序,根据一些sorta define指令来规划和实现您的逻辑。无论如何,这就是我处理事情的方式,我很想知道您最终会怎么做。是的……我正在想一种更简单、更友好的方式。无论如何,感谢您的提示:-)至少在iOS 7中,这不再正确。有关正确答案,请参阅。@Frederik这是真的,但当编写此答案时,它是正确的。@rckoenes它仍然是正确的,因为正式的购买日期只存在于应用内购买,而不存在于应用本身。@Mecki不是真的。原始应用程序购买和IAP都会生成收据。@DanLoewenherz是的,我知道那个页面。这是字段的文档:正如您所见,根据此文档,应用程序没有购买日期。在“应用程序收据”字段下的何处可以看到购买日期<代码>收据创建日期不是购买日期!“采购日期”字段仅存在于应用内采购收据字段中。“原始采购日期”字段仅用于IAP条目,而不存在于应用本身。应用程序购买日期也在应用程序的收据中,但没有记录。哎哟!我想我把“原始应用程序版本”(应用程序级别)和“原始购买日期”(正如您指出的)混淆在IAP中data@Mecki“收据创建日期”如何?用户可以将其用作购买应用程序的日期