2010-03-16 76 views
3

我们试图实现与应用程序内购买我们的应用程序订阅服务。问题是我们的服务在过去的一年中不需要用户帐户。用户只需使用此服务并显示广告。我们想给他们一个订阅,在那里他们可以买3个月的广告去除广告。是否有可能通过应用内purhcase将订阅绑定到iTunes帐户?

这怎么办?我们必须使其成为 消耗品,因为它是订阅。但我们不知道订阅什么时候结束。

  • 我们无法保存状态本地 因为用户可能重新安装应用
  • 我们不能在服务器上保存的状态,因为有时用户更改设备
  • 其绑定到他们的设备我们没有用户帐户来绑定订阅,我们不想引入破坏体验的用户帐户系统。

是否有关联与他们的iTunes帐户购买的某种方式?这样,当他们重新安装或更换设备时,它会随身携带吗?

+0

您的用户多长时间在3个月的时间内切换设备?可能不是那么经常...也许只是咬紧牙关,并通过电子邮件处理支持请求 – slf 2010-03-16 16:03:09

回答

1

怎么了链接到他们的Facebook或Twitter帐户?然后,您将“创建帐户”变成了一种社交网络功能。

编辑:

你所寻找的是最有可能保存在系统范围内的钥匙扣。不幸的是,最后一次检查时,系统级钥匙串没有开发者访问权限,但我可能是错的。这也可能是值得一提的,你可以操纵自己的访问组,看到更多的对GenericKeychain例子。

-1

你的问题很奇怪,因为购买被关联到iTunes的用户帐户。 让我们假设用户从他的手机中删除应用程序并重新安装它,他能够找回所有订阅(存储在苹果方面在他的iTunes帐户中)。

这种机制被描述为苹果在文件中“恢复交易”(这是由应用程序来支持和实现它):http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/MakingaPurchase/MakingaPurchase.html#//apple_ref/doc/uid/TP40008267-CH3-SW2

您可以查询从iTunes的帐户用户从你的应用程序,并询问“目前从这个用户购买的产品是什么?”

然后,在恢复事务时,您将返回对所有SKPaymentTransaction的引用,您可以在其中查询transactionDate(作为属性)。这会给你的信息 WHEN用户已经买了你的耗材。

从中还可以得到一个已使用aPaymentTransaction.payment.productIdentifier

如果您知道这个产品标识是3个月的订阅购买的产品,你可以比较其交易日期和当前日期和检查这是低于3个月或没有。

+0

从Apple文档 - “订购和消费品不会由Store Kit自动恢复。要恢复这些产品,您必须记录事务在您购买时在您自己的服务器上,并提供您自己的机制来将这些交易恢复到用户的设备上。“ 你的方法不能使用可消耗。如果你使它成为一种非消耗品,那么在它到期后他们将无法购买另外3种方法。 – erotsppa 2010-03-30 22:49:15

+0

:/我不知道,谢谢你突出显示。这使得易耗品情况复杂化....这意味着,当你购买与应用程序购买相同的易耗品时,你会不会从苹果方获得几个SKPaymentTransaction实例?这真的好奇:( – yonel 2010-03-31 08:12:32

0

您可以尝试使用它来访问具有appleId关键字的iTunesMetadata.plist,该关键字包含用于下载应用程序的applestore id。

[NSHomeDirectory() stringByAppendingPathComponent:@"iTunesMetadata.plist"] 

当然这可能会被认为是无证的,Apple会在未来的更新中解决这个问题,或者只是拒绝你的应用程序。

相关问题